diff options
Diffstat (limited to '.github/workflows')
-rw-r--r-- | .github/workflows/ci.yaml | 94 | ||||
-rw-r--r-- | .github/workflows/update-docker-images.yml | 43 |
2 files changed, 137 insertions, 0 deletions
diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 0000000..27480fa --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,94 @@ +name: ci + +on: + pull_request: + push: + branches: + - master + +jobs: + pre-commit: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: # for gitlint + ref: ${{ github.event.pull_request.head.sha }} + fetch-depth: 0 + - uses: actions/setup-python@v5 + with: + python-version: ">=3.7" + cache: pip + cache-dependency-path: | + .github/requirements.txt + test/requirements*.txt + - uses: actions/cache@v4 + with: + path: ~/.cache/pre-commit + key: pre-commit-${{hashFiles('.pre-commit-config.yaml')}} + - name: Install dependencies + run: | + python3 -m venv venv # for venv-run + source venv/bin/activate + python3 -m pip install -Ur .github/requirements.txt + - run: venv/bin/gitlint --commits "origin/$GITHUB_BASE_REF..HEAD" + if: github.event_name == 'pull_request' + - name: Run pre-commit checks + run: | + source venv/bin/activate + pre-commit run --color=always --all-files --show-diff-on-failure + + distcheck: + runs-on: ubuntu-latest + strategy: + matrix: + include: + - dist: alpine + - dist: centos7 + - dist: debian10 + - dist: debian10 + bsd: true + network: none + - dist: fedoradev + - dist: ubuntu14 + steps: + - uses: actions/checkout@v4 + - uses: google-github-actions/release-please-action@v4 + with: + config-file: .github/release-please-config.json + manifest-file: .github/release-please-manifest.json + id: release + if: github.event_name == 'push' && matrix.dist == 'alpine' + # A "container" workflow config would be cleaner here, but comes with + # some restrictions/oddities: changes root's $HOME to /github/home + # without changing the actual home dir that can cause some problems, + # and does not provide a way to run with --network none. + # fedoradev unconfined: https://bugzilla.redhat.com/1900021 + - name: Run main build + run: >- + docker run + --rm + --tty + --env CI=true + --env DIST=${{matrix.dist}} + --env BSD=${{matrix.bsd}} + --env PYTESTFLAGS="--verbose -p no:cacheprovider" + --env NETWORK=$NETWORK + ${NETWORK:+--network $NETWORK} + $(test $DIST = fedoradev && echo --security-opt seccomp=unconfined) + --volume $PWD:/usr/src/bash-completion + --workdir /usr/src/bash-completion + ghcr.io/scop/bash-completion/test:${{matrix.dist}} + test/docker/entrypoint.sh + env: + DIST: ${{matrix.dist}} + NETWORK: ${{matrix.network}} + - name: Upload release assets + run: | + set -x + gh release upload ${{steps.release.outputs.tag_name}} \ + bash-completion-$(cat version.txt).tar.xz + if: steps.release.outputs.release_created + - uses: actions/upload-artifact@v4 + with: + path: bash-completion-*.tar.xz + if: matrix.dist == 'alpine' diff --git a/.github/workflows/update-docker-images.yml b/.github/workflows/update-docker-images.yml new file mode 100644 index 0000000..5f6e269 --- /dev/null +++ b/.github/workflows/update-docker-images.yml @@ -0,0 +1,43 @@ +name: update-docker-images + +# Update Docker images when the set of commands required present for testing +# change. This is not perfect as it would be good to have the new commands +# installed already at PR time, and at least at time the change lands in the +# default branch. That way it'd be tested immediately then with images +# containing it, instead of later along with some other, completely unrelated +# change. + +on: + push: + paths: + - test/test-cmd-list.txt + - test/docker/*/Dockerfile + - test/docker/*/install-packages.sh + workflow_dispatch: + +jobs: + update-test-image: + runs-on: ubuntu-latest + if: github.repository_owner == 'scop' && github.ref == 'refs/heads/master' + strategy: + matrix: + include: + - dist: alpine + - dist: centos7 + - dist: debian10 + - dist: fedoradev + - dist: ubuntu14 + steps: + - uses: actions/checkout@v4 + - uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{github.repository_owner}} + password: ${{secrets.GITHUB_TOKEN}} + - uses: docker/build-push-action@v5 + with: + context: test + file: test/docker/${{matrix.dist}}/Dockerfile + tags: | + ghcr.io/scop/bash-completion/test:${{matrix.dist}} + push: true |