Skip to content

Improve pager support #491

Improve pager support

Improve pager support #491

Workflow file for this run

name: CI
on:
push:
branches: [master, develop]
pull_request:
branches: [master]
schedule:
- cron: '0 11 */15 * *'
workflow_dispatch:
inputs:
force_run:
description: 'Force workflow run'
required: true
type: choice
options: [yes, no]
permissions:
actions: read
contents: read
statuses: write
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
BuildCreaterepo:
name: BuildCreaterepo
runs-on: ubuntu-latest
env:
CR_REPO: rpm-software-management/createrepo_c
CR_VERSION: 1.0.0
steps:
- name: Install build dependencies
run: |
sudo apt-get update
sudo apt install -y libcurl4-openssl-dev \
libbz2-dev libxml2-dev \
libssl-dev zlib1g-dev \
pkg-config \
libglib2.0-dev \
liblzma-dev \
libsqlite0-dev \
libsqlite3-dev \
librpm-dev \
libzstd-dev \
python3-dev \
cmake
- name: Build createrepo_c binary
run: |
git clone --depth=1 --branch="${{env.CR_VERSION}}" \
"https://github.com/${{env.CR_REPO}}.git" createrepo_c
cd createrepo_c
mkdir build
cd build
cmake .. -DWITH_ZCHUNK=NO \
-DWITH_LIBMODULEMD=NO \
-DENABLE_DRPM=OFF \
-DBUILD_LIBCREATEREPO_C_SHARED=OFF
make -j 1
mkdir -p "${{github.workspace}}/.local/bin/"
cp src/createrepo_c "${{github.workspace}}/.local/bin/"
- name: Update PATH
run: echo "${{github.workspace}}/.local/bin" >> $GITHUB_PATH
- name: Print createrepo_c version info
run: createrepo_c --version
- name: Upload built artifacts
uses: actions/upload-artifact@v3
with:
name: createrepo_c
path: ${{github.workspace}}/.local/bin/createrepo_c
if-no-files-found: error
retention-days: 1
Go:
name: Go
runs-on: ubuntu-latest
needs: BuildCreaterepo
env:
SRC_DIR: src/github.com/${{ github.repository }}
strategy:
matrix:
go: [ '1.20.x', '1.21.x' ]
steps:
- name: Download pre-built artifacts
uses: actions/download-artifact@v3
with:
name: createrepo_c
path: ${{github.workspace}}/.local/bin
- name: Configure environment
run: |
echo "${{github.workspace}}/.local/bin" >> $GITHUB_PATH
chmod +x "${{github.workspace}}/.local/bin/createrepo_c"
if ! getent group | grep -q nobody ; then
sudo groupadd nobody
fi
if ! getent passwd | grep -q nobody ; then
sudo useradd -g nobody -s /sbin/nologin nobody
fi
- name: Print createrepo_c version info
run: createrepo_c --version
- name: Checkout
uses: actions/checkout@v4
with:
path: ${{env.SRC_DIR}}
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: ${{ matrix.go }}
- uses: actions/cache@v3
id: cache-deps
with:
path: |
~/.cache/go-build
~/go/pkg/mod
key: ${{ runner.os }}-essentialkaos-rep-${{ matrix.go }}-${{ hashFiles('**/go.sum') }}
- name: Download dependencies
working-directory: ${{env.SRC_DIR}}
if: steps.cache-deps.outputs.cache-hit != 'true'
run: make deps
- name: Build binary
working-directory: ${{env.SRC_DIR}}
run: make all
- name: Run tests
working-directory: ${{env.SRC_DIR}}
run: make test COVERAGE_FILE=cover.out
- name: Send coverage data
uses: essentialkaos/goveralls-action@v2
env:
COVERALLS_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
path: ${{env.SRC_DIR}}
profile: cover.out
parallel: true
flag-name: linux-${{ matrix.go }}
- name: Generate HTML coverage report
uses: essentialkaos/htmlcov-action@v1
if: ${{ github.event_name == 'pull_request' }}
with:
path: ${{env.SRC_DIR}}
profile: cover.out
output: coverage-report-${{runner.os}}-${{matrix.go}}
SendCoverage:
name: Send Coverage
runs-on: ubuntu-latest
needs: Go
steps:
- name: Finish parallel tests
uses: essentialkaos/goveralls-action@v2
env:
COVERALLS_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
parallel-finished: true
Perfecto:
name: Perfecto
runs-on: ubuntu-latest
needs: Go
steps:
- name: Code checkout
uses: actions/checkout@v4
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Check specs with Perfecto
uses: essentialkaos/perfecto-action@v2
with:
files: common/rep.spec
Shellcheck:
name: Shellcheck
runs-on: ubuntu-latest
needs: Go
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Check scripts with Shellcheck
uses: essentialkaos/shellcheck-action@v1
with:
files: rep-container
Hadolint:
name: Hadolint
runs-on: ubuntu-latest
needs: Go
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Check dockerfiles with Hadolint
uses: essentialkaos/hadolint-action@v1
with:
files: .docker/*.docker
Typos:
name: Typos
runs-on: ubuntu-latest
needs: Go
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Check spelling
continue-on-error: true
uses: crate-ci/typos@master
DockerBuild:
name: Docker Build Check
runs-on: ubuntu-latest
needs: [Hadolint, Shellcheck, Perfecto]
env:
REGISTRY: ghcr.io
strategy:
matrix:
image: [ 'alpine' ]
steps:
- name: Check event type
run: |
if [[ "${{github.event_name}}" != "pull_request" ]] ; then
echo "::notice::Event type is not 'pull_request', all job actions will be skipped"
fi
# This step is a hack for needs+if issue with actions
# More info about issue: https://github.com/actions/runner/issues/491
- name: Checkout
uses: actions/checkout@v4
if: ${{ github.event_name == 'pull_request' }}
- name: Login to DockerHub
uses: docker/login-action@v3
env:
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
if: ${{ github.event_name == 'pull_request' && env.DOCKERHUB_USERNAME != '' }}
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
if: ${{ github.event_name == 'pull_request' }}
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build Docker image
if: ${{ github.event_name == 'pull_request' }}
run: |
docker build --build-arg REGISTRY=${REGISTRY} -f .docker/${{matrix.image}}.docker -t ${{matrix.image}} .
- name: Show info about built Docker image
uses: essentialkaos/docker-info-action@v1
if: ${{ github.event_name == 'pull_request' }}
with:
image: ${{matrix.image}}
show-labels: true