name: (sub) Bats / Hub on: workflow_call: secrets: GIST_BADGES_SECRET: required: true GIST_BADGES_ID: required: true jobs: build: strategy: matrix: test-file: ["hub-1.bats", "hub-2.bats", "hub-3.bats"] name: "Functional tests" runs-on: ubuntu-latest timeout-minutes: 30 steps: - name: "Force machineid" run: | sudo chmod +w /etc/machine-id echo githubciXXXXXXXXXXXXXXXXXXXXXXXX | sudo tee /etc/machine-id - name: "Check out CrowdSec repository" uses: actions/checkout@v4 with: fetch-depth: 0 submodules: true - name: "Set up Go" uses: actions/setup-go@v5 with: go-version: "1.22.2" - name: "Install bats dependencies" env: GOBIN: /usr/local/bin run: | sudo apt -qq -y -o=Dpkg::Use-Pty=0 install build-essential daemonize jq libre2-dev - name: "Build crowdsec and fixture" run: make bats-clean bats-build bats-fixture BUILD_STATIC=1 - name: "Run hub tests" run: | ./test/bin/generate-hub-tests ./test/run-tests ./test/dyn-bats/${{ matrix.test-file }} --formatter $(pwd)/test/lib/color-formatter - name: "Collect hub coverage" run: ./test/bin/collect-hub-coverage >> $GITHUB_ENV - name: "Create Parsers badge" uses: schneegans/dynamic-badges-action@v1.7.0 if: ${{ github.ref == 'refs/heads/master' && github.repository_owner == 'crowdsecurity' }} with: auth: ${{ secrets.GIST_BADGES_SECRET }} gistID: ${{ secrets.GIST_BADGES_ID }} filename: crowdsec_parsers_badge.json label: Hub Parsers message: ${{ env.PARSERS_COV }} color: ${{ env.SCENARIO_BADGE_COLOR }} - name: "Create Scenarios badge" uses: schneegans/dynamic-badges-action@v1.7.0 if: ${{ github.ref == 'refs/heads/master' && github.repository_owner == 'crowdsecurity' }} with: auth: ${{ secrets.GIST_BADGES_SECRET }} gistID: ${{ secrets.GIST_BADGES_ID }} filename: crowdsec_scenarios_badge.json label: Hub Scenarios message: ${{ env.SCENARIOS_COV }} color: ${{ env.SCENARIO_BADGE_COLOR }}