name: Container build on: push: branches: - 'main' - 'stable' - 'beta' - 'release/**' tags: - 'v*' pull_request: branches: - '*' jobs: build: name: Build and Push Container (${{ matrix.arch }}) strategy: matrix: arch: [x64, arm64] runs-on: [runs-on,"runner=8cpu-linux-${{ matrix.arch }}","image=ubuntu24-full-${{ matrix.arch }}","run-id=${{ github.run_id }}",spot=false,extras=s3-cache] steps: - uses: runs-on/action@v1 - uses: actions/checkout@v4 with: fetch-tags: true submodules: false fetch-depth: 0 - name: Set PX4 Tag id: px4-tag run: | echo "tag=$(git describe --tags --match 'v[0-9]*')" >> $GITHUB_OUTPUT - name: Login to Docker Hub uses: docker/login-action@v3 # if: ${{ startsWith(github.ref, 'refs/tags/') }} with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Login to GitHub Container Registry uses: docker/login-action@v3 # if: ${{ startsWith(github.ref, 'refs/tags/') }} with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Extract metadata (tags, labels) for Docker id: meta uses: docker/metadata-action@v5 with: images: | ghcr.io/PX4/px4-dev ${{ (github.event_name != 'pull_request') && 'px4io/px4-dev' || '' }} tags: | type=raw,enable=true,value=${{ steps.px4-tag.outputs.tag }},priority=1000 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Build and load container image uses: docker/build-push-action@v6 id: docker with: context: Tools/setup tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} platforms: linux/${{ matrix.arch == 'x64' && 'amd64' || 'arm64' }} load: true push: false cache-from: type=gha cache-to: type=gha,mode=max - name: Get Tag Name id: tag_name run: | echo "::set-output name=tag_name::$(echo '${{ fromJSON(steps.docker.outputs.metadata)['image.name'] }}' | sed 's/,.*$//')" - name: make quick_check uses: addnab/docker-run-action@v3 with: image: ${{ steps.tag_name.outputs.tag_name }} options: -v ${{ github.workspace }}:/workspace run: | cd /workspace git config --global --add safe.directory /workspace make px4_sitl_default make px4_fmu-v6x_default - name: Push container image uses: docker/build-push-action@v6 # if: ${{ startsWith(github.ref, 'refs/tags/') }} with: context: Tools/setup tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} platforms: linux/${{ matrix.arch == 'x64' && 'amd64' || 'arm64' }} provenance: mode=max push: true cache-from: type=gha cache-to: type=gha,mode=max