Skip to content

Build BASE dotnet by schedule #4181

Build BASE dotnet by schedule

Build BASE dotnet by schedule #4181

Workflow file for this run

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