diff options
Diffstat (limited to '.github/workflows/ci.yaml')
-rw-r--r-- | .github/workflows/ci.yaml | 94 |
1 files changed, 94 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' |