Skip to content

Merge branch 'badges' into dev #23

Merge branch 'badges' into dev

Merge branch 'badges' into dev #23

name: Build and Push Container Images
on:
push:
branches:
- main
- dev
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
IMAGE_GHCR: ghcr.io/${{ github.repository_owner }}/astroneer-server
IMAGE_DOCKERIO: docker.io/${{ vars.DOCKERHUB_USERNAME }}/astroneer-server
IMAGE_TAG: |-
${{
github.ref_name == 'main' && 'latest'
|| github.ref_name == 'dev' && 'experimental'
|| 'unknown'
}}
jobs:
build-and-push:
runs-on: ${{ matrix.runner }}
permissions:
contents: read
packages: write
strategy:
matrix:
arch: [amd64, arm64]
include:
- arch: amd64
runner: ubuntu-24.04
platform: linux/amd64
- arch: arm64
runner: ubuntu-24.04-arm
platform: linux/arm64
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Log in to GHCR
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Log in to docker.io
uses: docker/login-action@v3
with:
registry: docker.io
username: ${{ vars.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push image
uses: docker/build-push-action@v5
with:
platforms: ${{ matrix.platform }}
push: true
provenance: false
tags: |
${{ env.IMAGE_GHCR }}:${{ matrix.arch }}-${{ env.IMAGE_TAG }}
${{ env.IMAGE_DOCKERIO }}:${{ matrix.arch }}-${{ env.IMAGE_TAG }}
manifest:
needs: build-and-push
runs-on: ubuntu-latest
permissions:
packages: write
steps:
- name: Log in to GHCR
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Log in to docker.io
uses: docker/login-action@v3
with:
registry: docker.io
username: ${{ vars.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Create and push manifest
run: |
docker manifest create $IMAGE_GHCR:$IMAGE_TAG \
--amend $IMAGE_GHCR:amd64-$IMAGE_TAG \
--amend $IMAGE_GHCR:arm64-$IMAGE_TAG
docker manifest push $IMAGE_GHCR:$IMAGE_TAG
docker manifest create $IMAGE_DOCKERIO:$IMAGE_TAG \
--amend $IMAGE_DOCKERIO:amd64-$IMAGE_TAG \
--amend $IMAGE_DOCKERIO:arm64-$IMAGE_TAG
docker manifest push $IMAGE_DOCKERIO:$IMAGE_TAG