Skip to content

Fix environment variable usage #15

Fix environment variable usage

Fix environment variable usage #15

Workflow file for this run

name: Build Container Images
on:
push:
env:
GAZEBO_VERSION: "harmonic"
PX4_VERSION: "1.15.0"
ARDUPILOT_VERSION: "4.5.7"
UBUNTU_VERSION: "22.04"
MULTICOSIM_VERSION: "0.2.0"
REGISTRY: ghcr.io
NAMESPACE: ${{ github.repository }}
jobs:
build:
permissions:
packages: write
outputs:
multicosim: ${{ env.REGISTRY }}/${{ env.NAMESPACE }}@${{ steps.digests.outputs.multicosim }}
multicosim_arm: ${{ env.REGISTRY }}/${{ env.NAMESPACE }}@${{ steps.digests.outputs.multicosim-arm }}
gazebo: ${{ env.REGISTRY }}/${{ env.NAMESPACE }}/gazebo@${{ steps.digests.outputs.gazebo }}
gazebo_arm: ${{ env.REGISTRY }}/${{ env.NAMESPACE }}/gazebo@${{ steps.digests.outputs.gazebo-arm }}
px4_firmware: ${{ env.REGISTRY }}/${{ env.NAMESPACE }}/px4/firmware@${{ steps.digests.outputs.px4-firmware }}
px4_firmware_arm: ${{ env.REGISTRY }}/${{ env.NAMESPACE }}/px4/firmware@${{ steps.digests.outputs.px4-firmware-arm }}
px4_gazebo: ${{ env.REGISTRY }}/${{ env.NAMESPACE }}/px4/gazebo@${{ steps.digests.outputs.px4-gazebo }}
px4_gazebo_arm: ${{ env.REGISTRY }}/${{ env.NAMESPACE }}/px4/gazebo@${{ steps.digests.outputs.px4-gazebo-arm }}
ardupilot_firmware: ${{ env.REGISTRY }}/${{ env.NAMESPACE }}/ardupilot/firmware@${{ steps.digests.outputs.ardupilot-firmware }}
ardupilot_firmware_arm: ${{ env.REGISTRY }}/${{ env.NAMESPACE }}/ardupilot/firmware@${{ steps.digests.outputs.ardupilot-firmware-arm }}
ardupilot_gazebo: ${{ env.REGISTRY }}/${{ env.NAMESPACE }}/ardupilot/gazebo@${{ steps.digests.outputs.ardupilot-gazebo }}
ardupilot_gazebo_arm: ${{ env.REGISTRY }}/${{ env.NAMESPACE }}/ardupilot/gazebo@${{ steps.digests.outputs.ardupilot-gazebo-arm }}
env:
GAZEBO_TAG:
MULTICOSIM_TAG:
strategy:
matrix:
os: [ubuntu-24.04, ubuntu-24.04-arm]
runs-on: ${{ matrix.os }}
steps:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to GHCR
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build images
id: bake
uses: docker/bake-action@v6
with:
targets: multicosim,gazebo,px4,ardupilot
set: |
*.output=type=image,push-by-digest=true,name-canonical=true,push=true
- name: Extract digests for each image
id: digests
run: |
tag=$(echo "${{ matrix.os }}" | sed 's/ubuntu-24.04//')
echo "multicosim$tag=${{ fromJSON(steps.bake.outputs.metadata).multicosim['containerimage.digest'] }}" >> "$GITHUB_OUTPUT"
echo "gazebo$tag=${{ fromJSON(steps.bake.outputs.metadata).gazebo-ubuntu['containerimage.digest'] }}" >> "$GITHUB_OUTPUT"
echo "px4-firmware$tag=${{ fromJSON(steps.bake.outputs.metadata).px4-firmware['containerimage.digest'] }}" >> "$GITHUB_OUTPUT"
echo "px4-gazebo$tag=${{ fromJSON(steps.bake.outputs.metadata).px4-gazebo['containerimage.digest'] }}" >> "$GITHUB_OUTPUT"
echo "ardupilot-firmware$tag=${{ fromJSON(steps.bake.outputs.metadata).ardupilot-firmware['containerimage.digest'] }}" >> "$GITHUB_OUTPUT"
echo "ardupilot-gazebo$tag=${{ fromJSON(steps.bake.outputs.metadata).ardupilot-gazebo['containerimage.digest'] }}" >> "$GITHUB_OUTPUT"
echo $GITHUB_OUTPUT
merge:
runs-on: ubuntu-latest
needs:
- build
steps:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to GHCR
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Create manifests and push
env:
PREFIX: ${{ env.REGISTRY }}/${{ env.NAMESPACE }}
run: |
docker buildx imagetools create $PREFIX:$MULTICOSIM_VERSION ${{ needs.build.outputs.multicosim }} ${{ needs.build.outputs.multicosim_arm}}
docker buildx imagetools create $PREFIX/gazebo:$GAZEBO_VERSION ${{ needs.build.outputs.gazebo }} ${{ needs.build.outputs.gazebo_arm }}
docker buildx imagetools create $PREFIX/px4/firmware:$MULTICOSIM_VERSION ${{ needs.build.outputs.px4_firmware }} ${{ needs.build.outputs.px4_firmware_arm }}
docker buildx imagetools create $PREFIX/px4/gazebo:$GAZEBO_VERSION ${{ needs.build.outputs.px4_gazebo }} ${{ needs.build.outputs.px4_gazebo_arm }}
docker buildx imagetools create $PREFIX/ardupilot/firmware:$MULTICOSIM_VERSION ${{ needs.build.outputs.ardupilot_firmware }} ${{ needs.build.outputs.ardupilot_firmware_arm }}
docker buildx imagetools create $PREFIX/ardupilot/gazebo:$GAZEBO_VERSION ${{ needs.build.outputs.ardupilot_gazebo }} ${{ needs.build.outputs.ardupilot_gazebo_arm }}