Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
152 changes: 152 additions & 0 deletions .github/workflows/docker_images_common.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,152 @@
name: Build and publish docker images

on:
workflow_call:
inputs:
version:
required: true
type: string
alias_tag:
required: true
type: string

Comment thread
yuvrajjsingh0 marked this conversation as resolved.
jobs:
docker-build:
permissions:
contents: read
packages: write
strategy:
max-parallel: 5
matrix:
include:
- platform: linux/amd64
tag: linux-amd64
os: ubuntu-latest
- platform: linux/arm64
tag: linux-arm64
os: ubuntu-24.04-arm
runs-on: ${{ matrix.os }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.SUPERPOSITION_TOKEN }}

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Log in to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build and push production image
uses: docker/build-push-action@v6
with:
push: true
context: .
tags: ghcr.io/${{ github.repository }}:${{ inputs.version }}-${{ matrix.tag }}

create-manifest:
needs: docker-build
permissions:
contents: read
packages: write
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.SUPERPOSITION_TOKEN }}

- name: Log in to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Create manifest for multi-arch image
run: |
docker buildx imagetools create --tag ghcr.io/${{ github.repository }}:${{ inputs.version }} \
ghcr.io/${{ github.repository }}:${{ inputs.version }}-linux-amd64 \
ghcr.io/${{ github.repository }}:${{ inputs.version }}-linux-arm64

docker buildx imagetools create --tag ghcr.io/${{ github.repository }}:${{ inputs.alias_tag }} \
ghcr.io/${{ github.repository }}:${{ inputs.version }}-linux-amd64 \
ghcr.io/${{ github.repository }}:${{ inputs.version }}-linux-arm64

docker-demo-build:
needs: create-manifest
Comment thread
yuvrajjsingh0 marked this conversation as resolved.
permissions:
contents: read
packages: write
strategy:
max-parallel: 5
matrix:
include:
- platform: linux/amd64
tag: linux-amd64
os: ubuntu-latest
- platform: linux/arm64
tag: linux-arm64
os: ubuntu-24.04-arm
runs-on: ${{ matrix.os }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.SUPERPOSITION_TOKEN }}

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Log in to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build and push demo image
uses: docker/build-push-action@v6
with:
push: true
context: .
file: example.Dockerfile
tags: ghcr.io/${{ github.repository }}-demo:${{ inputs.version }}-${{ matrix.tag }}

create-demo-manifest:
needs: docker-demo-build
permissions:
contents: read
packages: write
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.SUPERPOSITION_TOKEN }}

- name: Log in to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Create manifest for multi-arch demo image
run: |
docker buildx imagetools create --tag ghcr.io/${{ github.repository }}-demo:${{ inputs.version }} \
ghcr.io/${{ github.repository }}-demo:${{ inputs.version }}-linux-amd64 \
ghcr.io/${{ github.repository }}-demo:${{ inputs.version }}-linux-arm64

docker buildx imagetools create --tag ghcr.io/${{ github.repository }}-demo:${{ inputs.alias_tag }} \
ghcr.io/${{ github.repository }}-demo:${{ inputs.version }}-linux-amd64 \
ghcr.io/${{ github.repository }}-demo:${{ inputs.version }}-linux-arm64
Loading
Loading