| name: ci |
| |
| concurrency: |
| group: ${{ github.workflow }}-${{ github.ref }} |
| cancel-in-progress: true |
| |
| on: |
| workflow_dispatch: |
| push: |
| branches: |
| - 'master' |
| - '[0-9]+.[0-9]+' |
| tags: |
| - 'v*' |
| pull_request: |
| |
| env: |
| DESTDIR: ./build |
| |
| jobs: |
| validate-dco: |
| uses: ./.github/workflows/.dco.yml |
| |
| build: |
| runs-on: ubuntu-20.04 |
| needs: |
| - validate-dco |
| strategy: |
| fail-fast: false |
| matrix: |
| target: |
| - binary |
| - dynbinary |
| steps: |
| - |
| name: Checkout |
| uses: actions/checkout@v3 |
| with: |
| fetch-depth: 0 |
| - |
| name: Set up Docker Buildx |
| uses: docker/setup-buildx-action@v2 |
| - |
| name: Build |
| uses: docker/bake-action@v2 |
| with: |
| targets: ${{ matrix.target }} |
| - |
| name: List artifacts |
| run: | |
| tree -nh ${{ env.DESTDIR }} |
| - |
| name: Check artifacts |
| run: | |
| find ${{ env.DESTDIR }} -type f -exec file -e ascii -- {} + |
| - |
| name: Upload artifacts |
| uses: actions/upload-artifact@v3 |
| with: |
| name: ${{ matrix.target }} |
| path: ${{ env.DESTDIR }} |
| if-no-files-found: error |
| retention-days: 7 |
| |
| prepare-cross: |
| runs-on: ubuntu-latest |
| needs: |
| - validate-dco |
| outputs: |
| matrix: ${{ steps.platforms.outputs.matrix }} |
| steps: |
| - |
| name: Checkout |
| uses: actions/checkout@v3 |
| - |
| name: Create matrix |
| id: platforms |
| run: | |
| matrix="$(docker buildx bake binary-cross --print | jq -cr '.target."binary-cross".platforms')" |
| echo "matrix=$matrix" >> $GITHUB_OUTPUT |
| - |
| name: Show matrix |
| run: | |
| echo ${{ steps.platforms.outputs.matrix }} |
| |
| cross: |
| runs-on: ubuntu-20.04 |
| needs: |
| - validate-dco |
| - prepare-cross |
| strategy: |
| fail-fast: false |
| matrix: |
| platform: ${{ fromJson(needs.prepare-cross.outputs.matrix) }} |
| steps: |
| - |
| name: Checkout |
| uses: actions/checkout@v3 |
| with: |
| fetch-depth: 0 |
| - |
| name: Prepare |
| run: | |
| platform=${{ matrix.platform }} |
| echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV |
| - |
| name: Set up Docker Buildx |
| uses: docker/setup-buildx-action@v2 |
| - |
| name: Build |
| uses: docker/bake-action@v2 |
| with: |
| targets: all |
| set: | |
| *.platform=${{ matrix.platform }} |
| - |
| name: List artifacts |
| run: | |
| tree -nh ${{ env.DESTDIR }} |
| - |
| name: Check artifacts |
| run: | |
| find ${{ env.DESTDIR }} -type f -exec file -e ascii -- {} + |
| - |
| name: Upload artifacts |
| uses: actions/upload-artifact@v3 |
| with: |
| name: cross-${{ env.PLATFORM_PAIR }} |
| path: ${{ env.DESTDIR }} |
| if-no-files-found: error |
| retention-days: 7 |