summaryrefslogtreecommitdiffstats
path: root/.github/workflows
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows')
-rw-r--r--.github/workflows/ci.yaml94
-rw-r--r--.github/workflows/update-docker-images.yml43
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