Build BASE dotnet by schedule #4181
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: "BASE build" | |
run-name: "Build BASE ${{ github.ref_name }} by ${{ github.event_name }}" | |
on: | |
workflow_dispatch: | |
push: | |
branches: dotnet | |
paths: | |
- Dockerfile.base | |
- Dockerfile.base-slim | |
- .github/workflows/build-base.yml | |
schedule: | |
- cron: "0 0 * * *" | |
# branches: | |
# - master | |
# - develop | |
# concurrency: | |
# group: base-image-make-${{ github.ref_name }} | |
# cancel-in-progress: true | |
permissions: | |
contents: write | |
packages: write | |
jobs: | |
base-image-make: | |
runs-on: ubuntu-latest | |
if: ${{ github.ref == format('refs/heads/{0}', github.event.repository.default_branch) || github.event_name == 'workflow_dispatch' }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
[ ubuntu-jammy, ubuntu-focal, debian-bullseye, debian-sid ] | |
include: | |
- os: ubuntu-jammy | |
distro: ubuntu | |
codename: jammy | |
docker-codename: jammy | |
has-latest: true | |
- os: ubuntu-jammy-dotnet | |
distro: ubuntu | |
codename: jammy | |
docker-codename: jammy | |
dockerfile: Dockerfile.base-slim | |
- os: ubuntu-focal | |
distro: ubuntu | |
codename: focal | |
docker-codename: focal | |
#- os: ubuntu-bionic | |
# distro: ubuntu | |
# codename: bionic | |
# docker-codename: bionic | |
- os: debian-bullseye | |
distro: debian | |
codename: bullseye | |
docker-codename: bullseye | |
- os: debian-sid | |
distro: debian | |
codename: sid | |
docker-codename: bullseye | |
# - os: debian-bullseye-dotnet | |
# distro: debian | |
# codename: bullseye | |
# docker-codename: bullseye | |
# dockerfile: Dockerfile.base-slim | |
env: | |
RELEASE_IMAGE_NAME: ${{ vars.RELEASE_IMAGE_NAME }} | |
FULL_TAG: '' | |
BASE_BUILD_IMAGE: '' | |
LATEST_FLAG: '' | |
RELEASE_VERSION: ${{ vars.GH_RUNNER_VERSION }} | |
REVISION: '${{ github.RUN_NUMBER }}.${{ github.RUN_ATTEMPT }}' | |
DOCKERFILE: '' | |
PREFIX: '' | |
steps: | |
- name: Set version by default | |
shell: pwsh | |
run: | | |
Write-Output 'PREFIX=${{ matrix.os }}' >> $env:GITHUB_ENV | |
Write-Output 'REVISION=${{ github.RUN_NUMBER }}.${{ github.RUN_ATTEMPT }}' >> $env:GITHUB_ENV | |
Write-Output 'FULL_TAG=${{ matrix.os }}-${{ github.RUN_NUMBER }}.${{ github.RUN_ATTEMPT }}' >> $env:GITHUB_ENV | |
Write-Output 'BASE_BUILD_IMAGE=${{ matrix.distro }}:${{ matrix.codename }}' >> $env:GITHUB_ENV | |
Write-Output 'RELEASE_IMAGE_NAME=${{ vars.RELEASE_IMAGE_NAME }}-base' >> $env:GITHUB_ENV | |
if( [string]::IsNullOrWhitespace('${{ matrix.dockerfile }}') ) | |
{ | |
Write-Output 'DOCKERFILE=Dockerfile.base' >> $env:GITHUB_ENV | |
} | |
else | |
{ | |
Write-Output 'DOCKERFILE=${{ matrix.dockerfile }}' >> $env:GITHUB_ENV | |
} | |
- name: Copy Repo Files | |
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: Login to DockerHub | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.DOCKER_USER }} | |
password: ${{ secrets.DOCKER_TOKEN }} | |
- name: Login to GitHub Container Registry | |
uses: docker/login-action@v3 | |
with: | |
registry: ghcr.io | |
username: ${{ github.ACTOR }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Docker meta | |
id: meta | |
uses: docker/metadata-action@v5 | |
with: | |
labels: | | |
org.opencontainers.image.name=${{ github.ACTOR }}/${{ env.RELEASE_IMAGE_NAME }} | |
org.opencontainers.image.version=${{ env.FULL_TAG }} | |
org.opencontainers.image.base.name=${{ env.BASE_BUILD_IMAGE }} | |
org.opencontainers.image.revision=${{ env.REVISION }} | |
org.opencontainers.image.licenses=MIT | |
images: | | |
${{ github.ACTOR }}/${{ env.RELEASE_IMAGE_NAME }} | |
ghcr.io/${{ github.ACTOR }}/${{ env.RELEASE_IMAGE_NAME }} | |
flavor: | | |
latest=false | |
prefix= | |
suffix= | |
tags: | | |
type=raw,value=${{ env.FULL_TAG }},enable=true | |
type=raw,value=${{ env.PREFIX }},enable=true | |
- name: Build and push | |
uses: docker/build-push-action@v6 | |
with: | |
context: . | |
file: ${{ env.DOCKERFILE }} | |
provenance: true | |
sbom: true | |
pull: true | |
push: ${{ github.event_name != 'pull_request' }} | |
tags: ${{ steps.meta.outputs.tags }} | |
labels: ${{ steps.meta.outputs.labels }} | |
build-args: | | |
BUILD_IMAGE=${{ env.BASE_BUILD_IMAGE }} | |
CHOWN_USER=${{ vars.CHOWN_USER }} | |
LSB_RELEASE_CODENAME=${{ matrix.codename }} | |
DOCKER_CODENAME=${{ matrix.docker-codename }} | |
DISTRO=${{ matrix.distro }} | |
BUILDTIME=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.created'] }} | |
VERSION=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.version'] }} | |
REVISION=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.revision'] }} | |
platforms: linux/amd64,linux/arm64 | |
#cache-from: type=gha | |
#cache-to: type=gha,mode=max | |
# build_base_slim: | |
# runs-on: ubuntu-latest | |
# #if: ${{ 1 == 2 }} | |
# #if: ${{ github.ref == format('refs/heads/{0}', github.event.repository.default_branch) || github.event_name == 'workflow_dispatch' }} | |
# strategy: | |
# fail-fast: false | |
# matrix: | |
# os: [debian-bullseye, ubuntu-jammy] | |
# include: | |
# - os: debian-bullseye | |
# os-tag: debian:bullseye-slim | |
# distro: debian | |
# codename: bullseye | |
# docker-codename: bullseye | |
# - os: ubuntu-jammy | |
# os-tag: ubuntu:jammy | |
# distro: ubuntu | |
# codename: jammy | |
# docker-codename: jammy | |
# steps: | |
# - name: Set version prefix | |
# run: | | |
# echo "PREFIX_VERSION=${{ matrix.os }}-slim" >> $GITHUB_ENV | |
# echo "VERSION_NUMBER=${{ github.RUN_NUMBER }}.${{ github.RUN_ATTEMPT }}" >> $GITHUB_ENV | |
# echo 'FULL_TAG=${{ matrix.os }}-slim-${{ github.RUN_NUMBER }}.${{ github.RUN_ATTEMPT }}' >> $GITHUB_ENV | |
# - name: Copy Repo Files | |
# 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: Login to DockerHub | |
# uses: docker/login-action@v3 | |
# with: | |
# username: ${{ secrets.DOCKER_USER }} | |
# password: ${{ secrets.DOCKER_TOKEN }} | |
# - name: Login to GitHub Container Registry | |
# uses: docker/login-action@v3 | |
# with: | |
# registry: ghcr.io | |
# username: ${{ github.ACTOR }} | |
# password: ${{ secrets.GITHUB_TOKEN }} | |
# - name: Docker meta | |
# id: meta | |
# uses: docker/metadata-action@v5 | |
# with: | |
# labels: | | |
# org.opencontainers.image.name=${{ vars.BASE_IMAGE }} | |
# org.opencontainers.image.version=${{ env.FULL_TAG }} | |
# org.opencontainers.image.base.name=${{ matrix.os-tag }} | |
# org.opencontainers.image.revision=${{ env.VERSION_NUMBER }} | |
# org.opencontainers.image.licenses=MIT | |
# images: | | |
# ${{ vars.BASE_IMAGE }} | |
# ghcr.io/${{ vars.BASE_IMAGE }} | |
# flavor: | | |
# latest=false | |
# prefix= | |
# suffix= | |
# tags: | | |
# type=raw,value=${{ env.FULL_TAG }},enable=true | |
# - name: Build and push | |
# uses: docker/build-push-action@v6 | |
# with: | |
# context: . | |
# file: Dockerfile.base-slim | |
# provenance: true | |
# sbom: true | |
# pull: true | |
# push: true | |
# #push: ${{ github.event_name != 'pull_request' }} | |
# tags: ${{ steps.meta.outputs.tags }} | |
# labels: ${{ steps.meta.outputs.labels }} | |
# build-args: | | |
# BUILD_IMAGE=${{ matrix.os-tag }} | |
# LSB_RELEASE_CODENAME=${{ matrix.codename }} | |
# DOCKER_CODENAME=${{ matrix.docker-codename }} | |
# DISTRO=${{ matrix.distro }} | |
# BUILDTIME=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.created'] }} | |
# VERSION=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.version'] }} | |
# REVISION=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.revision'] }} | |
# platforms: linux/amd64 | |
# cache-from: type=gha | |
# cache-to: type=gha,mode=max | |
#EOF |