name: Check Crossbuild on: push: branches-ignore: - coverity_scan workflow_dispatch: env: CI: 1 GH_ACTIONS: 1 DEBIAN_FRONTEND: noninteractive APT_OPTS: "-y --no-install-recommends" jobs: # # Generate matrix based on crossbuild docker directories. # gen-matrix: runs-on: ubuntu-latest outputs: matrix: ${{ steps.gen-matrix.outputs.matrix }} steps: - uses: actions/checkout@v4 with: lfs: false - id: gen-matrix name: Generate matrix based on crossbuild targets run: | cd scripts/crossbuild/docker M=$(ls | perl -n -e '{chomp; push @L,"\"$_\""} END{print "{\"env\":[{\"OS\":",join("},{\"OS\":",@L),"}]}"}') echo "Matrix: $M" echo matrix=$M >> $GITHUB_OUTPUT # # Run crossbuild target for each given OS. This will build the # Docker image and run `make test` inside. # crossbuild: needs: - gen-matrix runs-on: ubuntu-20.04 strategy: fail-fast: false matrix: ${{ fromJson(needs.gen-matrix.outputs.matrix) }} env: ${{ matrix.env }} name: "v3.2.x-${{ matrix.env.OS }}" steps: - uses: actions/checkout@v4 with: fetch-depth: 0${{ ( matrix.env.OS != 'centos7' ) && '1' }} - name: Run crossbuild tests run: | make crossbuild.$OS - name: Show build log if: ${{ success() || failure() }} run: | cat scripts/crossbuild/build/build.$OS - name: Show configure log if: ${{ success() || failure() }} run: | cat scripts/crossbuild/build/configure.$OS - name: Show test log if: ${{ success() || failure() }} run: | cat scripts/crossbuild/build/log.$OS # # If the CI has failed and the branch is ci-debug then start a tmate # session. SSH rendezvous point is emited continuously in the job output. # - name: "Debug: Start tmate" uses: mxschmitt/action-tmate@v3 with: limit-access-to-actor: true if: ${{ github.ref == 'refs/heads/ci-debug' && failure() }}