migrated to bash-tools-framework 2.0.1 #169
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
# Lint the code base and launch unit test at each push or pull request | |
name: Lint and test | |
on: # yamllint disable-line rule:truthy | |
push: | |
# execute when pushing only branches, not tags | |
branches: | |
- '**' | |
workflow_dispatch: | |
jobs: | |
build: | |
runs-on: ubuntu-22.04 | |
strategy: | |
fail-fast: true | |
matrix: | |
vendor: | |
- ubuntu | |
- alpine | |
bashTarVersion: | |
- '4.4' | |
- '5.0' | |
- '5.1' | |
include: | |
- vendor: ubuntu | |
bashImage: ubuntu:20.04 | |
batsOptions: -j 1 | |
bashTarVersion: 4.4 | |
runPrecommitTests: false | |
- vendor: ubuntu | |
bashImage: ubuntu:20.04 | |
bashTarVersion: 5.0 | |
batsOptions: -j 1 | |
runPrecommitTests: false | |
- vendor: ubuntu | |
bashImage: ubuntu:20.04 | |
bashTarVersion: 5.1 | |
batsOptions: -j 1 | |
runPrecommitTests: true | |
- vendor: alpine | |
bashTarVersion: 4.4 | |
bashImage: amd64/bash:4.4-alpine3.18 | |
batsOptions: -j 1 | |
runPrecommitTests: false | |
- vendor: alpine | |
bashTarVersion: 5.0 | |
bashImage: amd64/bash:5.0-alpine3.18 | |
batsOptions: -j 1 | |
runPrecommitTests: false | |
- vendor: alpine | |
bashTarVersion: 5.1 | |
bashImage: amd64/bash:5.1-alpine3.18 | |
batsOptions: -j 1 | |
runPrecommitTests: false | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Login to DockerHub | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.DOCKERHUB_USERNAME }} | |
password: ${{ secrets.DOCKERHUB_TOKEN }} | |
- uses: ouzi-dev/commit-status-updater@v2 | |
with: | |
name: build bash-tools-${{matrix.vendor}}-${{matrix.bashTarVersion}} | |
status: pending | |
# only if pre-commit | |
- name: Set up Python | |
if: matrix.runPrecommitTests | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.9 | |
- name: Install pre-commit | |
if: matrix.runPrecommitTests | |
run: pip install pre-commit | |
- uses: ouzi-dev/commit-status-updater@v2 | |
if: matrix.runPrecommitTests | |
with: | |
name: lint | |
status: pending | |
- name: Run pre-commit | |
if: matrix.runPrecommitTests | |
run: pre-commit run -a --hook-stage manual | |
- name: Archive results | |
if: matrix.runPrecommitTests && always() | |
continue-on-error: true | |
uses: actions/upload-artifact@v3 | |
with: | |
name: linter-reports | |
path: | | |
megalinter-reports/** | |
- name: Create Pull Request | |
if: matrix.runPrecommitTests && failure() | |
uses: peter-evans/create-pull-request@v5 | |
with: | |
branch: update/pre-commit-fixes | |
title: lint fixes | |
commit-message: Auto-update lint fixes | |
body: | | |
some auto fixes have been generated during pre-commit run | |
labels: updates | |
- uses: ouzi-dev/commit-status-updater@v2 | |
if: matrix.runPrecommitTests && always() | |
with: | |
name: lint | |
status: ${{ job.status }} | |
# Run unit tests | |
- name: run unit tests | |
run: | | |
set -exo pipefail | |
bin/installRequirements | |
chmod -R 777 logs | |
# shellcheck disable=SC2266 | |
USER_ID=1000 \ | |
GROUP_ID=1000 \ | |
./bin/test \ | |
-vvv \ | |
--vendor "${{matrix.vendor}}" \ | |
--bash-version "${{matrix.bashTarVersion}}" \ | |
--bash-base-image "${{matrix.bashImage}}" \ | |
--branch-name "${GITHUB_REF##*/}" \ | |
${{matrix.batsOptions}} --report-formatter junit -o logs -r src --ci | |
- name: Upload Test Results | |
if: always() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: Test Results ${{matrix.vendor}} ${{matrix.bashTarVersion}} | |
path: logs/report.xml | |
- uses: ouzi-dev/commit-status-updater@v2 | |
if: always() | |
with: | |
name: build bash-tools-${{matrix.vendor}}-${{matrix.bashTarVersion}} | |
status: ${{ job.status }} | |
publishTestResults: | |
name: 'Publish Tests Results' | |
if: ${{ always() }} | |
needs: [build] | |
runs-on: ubuntu-latest | |
permissions: | |
checks: write | |
# needed by ouzi-dev/commit-status-updater@v2 | |
statuses: write | |
# only needed unless run with comment_mode: off | |
pull-requests: write | |
steps: | |
- name: Download Artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
path: artifacts | |
- name: Checkstyle aggregation | |
uses: lcollins/[email protected] | |
with: | |
path: 'artifacts/**/*.xml' | |
# run this action to get the workflow conclusion | |
# You can get the conclusion via env (env.WORKFLOW_CONCLUSION) | |
- uses: technote-space/workflow-conclusion-action@v3 | |
- uses: ouzi-dev/commit-status-updater@v2 | |
with: | |
name: build | |
# neutral, success, skipped, cancelled, timed_out, action_required, failure | |
status: ${{ env.WORKFLOW_CONCLUSION }} |