Skip to content

Image Creator

Image Creator #51

Workflow file for this run

name: 'Image Creator'
on:
workflow_dispatch:
inputs:
minimal_version:
description: 'Build Minimal Image'
required: true
type: boolean
full_version:
description: 'Build Full Image'
required: true
type: boolean
doc_version:
description: 'Build Doc Image'
required: true
type: boolean
env:
REGISTRY: 'ghcr.io'
USER_NAME: 'arcaneframework'
IMAGE_OS_NAME: 'ubuntu-2404'
IMAGE_OS_TAG: 'gcc-14_clang-18'
DOCKERFILE_PATH: './dockerfiles'
jobs:
# Quand on demande minimal et full, le minimal doit être fait avant le full.
build-and-push-minimal:
name: U24_G14_C18 Minimal Image
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- name: Delete huge unnecessary tools folder
run: rm -rf /opt/hostedtoolcache
- name: Checkout repository
if: ${{ inputs.minimal_version }}
uses: actions/checkout@v4
- name: Set up QEMU
if: ${{ inputs.minimal_version }}
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
if: ${{ inputs.minimal_version }}
uses: docker/setup-buildx-action@v3
- name: Log in to the Container registry
if: ${{ inputs.minimal_version }}
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract metadata (tags, labels) for Docker
if: ${{ inputs.minimal_version }}
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.USER_NAME }}/${{ env.IMAGE_OS_NAME }}
labels: |
org.opencontainers.image.title=ArcaneFramework
org.opencontainers.image.description=Minimal image to Build/Install/Run Arcane Framework
org.opencontainers.image.vendor=CEA
org.opencontainers.image.licenses=Apache2
tags: |
type=raw, gcc_minimal_latest
type=raw, clang_minimal_latest
type=raw, gcc-14_minimal_latest
type=raw, clang-18_minimal_latest
type=raw, ${{ env.IMAGE_OS_TAG }}_minimal_latest
type=raw, ${{ env.IMAGE_OS_TAG }}_minimal_{{date 'YYYYMMDD'}}
- name: Build and push Docker image
if: ${{ inputs.minimal_version }}
uses: docker/build-push-action@v5
with:
platforms: linux/amd64,linux/arm64
provenance: false
context: ${{ env.DOCKERFILE_PATH }}/minimal
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
outputs: |
type=image,name=target,annotation-index.org.opencontainers.image.description=Minimal image to Build/Install/Run Arcane Framework. Available on AMD64 and ARM64.
build-and-push-full:
name: U24_G14_C18 Full Image
if: ${{ inputs.full_version }}
needs:
- build-and-push-minimal
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- name: Delete huge unnecessary tools folder
run: rm -rf /opt/hostedtoolcache
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Log in to the Container registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.USER_NAME }}/${{ env.IMAGE_OS_NAME }}
labels: |
org.opencontainers.image.title=ArcaneFramework
org.opencontainers.image.description=Full image to Build/Install/Run Arcane Framework
org.opencontainers.image.vendor=CEA
org.opencontainers.image.licenses=Apache2
tags: |
type=raw, gcc_full_latest
type=raw, clang_full_latest
type=raw, gcc-14_full_latest
type=raw, clang-18_full_latest
type=raw, ${{ env.IMAGE_OS_TAG }}_full_latest
type=raw, ${{ env.IMAGE_OS_TAG }}_full_{{date 'YYYYMMDD'}}
- name: Build and push Docker image
uses: docker/build-push-action@v5
with:
platforms: linux/amd64,linux/arm64
provenance: false
context: ${{ env.DOCKERFILE_PATH }}/full
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
outputs: |
type=image,name=target,annotation-index.org.opencontainers.image.description=Full image to Build/Install/Run Arcane Framework. Available on AMD64 and ARM64.
build-and-push-doc:
name: U24_G14_C18 Doc Image
if: ${{ inputs.doc_version }}
needs:
- build-and-push-minimal
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- name: Delete huge unnecessary tools folder
run: rm -rf /opt/hostedtoolcache
- name: Checkout repository
uses: actions/checkout@v4
- name: Log in to the Container registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.USER_NAME }}/${{ env.IMAGE_OS_NAME }}
labels: |
org.opencontainers.image.title=ArcaneFramework
org.opencontainers.image.description=Doc image to Build/Install/Run Arcane Framework
org.opencontainers.image.vendor=CEA
org.opencontainers.image.licenses=Apache2
tags: |
type=raw, gcc_doc_latest
type=raw, ${{ env.IMAGE_OS_TAG }}_doc_latest
type=raw, ${{ env.IMAGE_OS_TAG }}_doc_{{date 'YYYYMMDD'}}
- name: Build and push Docker image
uses: docker/build-push-action@v5
with:
context: ${{ env.DOCKERFILE_PATH }}/doc
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}