Build BASE dotnet by schedule #6579
This file contains hidden or 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 * * *" | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref_name }} | |
| cancel-in-progress: false | |
| 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-noble-dotnet, ubuntu-noble, ubuntu-jammy, debian-bookworm ] | |
| include: | |
| - os: ubuntu-noble-dotnet | |
| distro: ubuntu | |
| codename: noble | |
| docker-codename: noble | |
| dockerfile: Dockerfile.base-slim | |
| - os: ubuntu-noble | |
| distro: ubuntu | |
| codename: noble | |
| docker-codename: noble | |
| has-latest: true | |
| - os: ubuntu-jammy | |
| distro: ubuntu | |
| codename: jammy | |
| docker-codename: jammy | |
| - os: debian-bookworm | |
| distro: debian | |
| codename: bookworm | |
| docker-codename: bookworm | |
| 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: '' | |
| GIT_AUTHOR: '' | |
| TIMESTAMP: '' | |
| steps: | |
| - name: Copy Repo Files | |
| uses: actions/checkout@v6 | |
| - name: Set version by default | |
| shell: pwsh | |
| run: | | |
| $gitCommit = (git rev-parse --short HEAD) | |
| $gitAuthor = (git log -1 --pretty=format:'%an %cd') | |
| $timeStamp = (git log -1 --pretty=%ct) | |
| 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=${{ env.RELEASE_IMAGE_NAME }}-base' >> $env:GITHUB_ENV | |
| Write-Output "GIT_COMMIT=$gitCommit" >> $env:GITHUB_ENV | |
| Write-Output "GIT_AUTHOR=$gitAuthor" >> $env:GITHUB_ENV | |
| Write-Output "TIMESTAMP=$timeStamp" >> $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: 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.title=${{ github.event.repository.name }} | |
| org.opencontainers.image.version=${{ env.FULL_TAG }} | |
| org.opencontainers.image.base.name=${{ matrix.distro }}:${{ matrix.codename }} | |
| org.opencontainers.image.revision=${{ env.REVISION }} | |
| org.opencontainers.image.ref.name=${{ github.ref_name }} | |
| org.opencontainers.image.authors=${{ env.GIT_AUTHOR }} | |
| org.opencontainers.image.created=${{ env.TIMESTAMP }} | |
| org.opencontainers.image.source=${{ github.server_url }}/${{ github.repository }}.git | |
| org.opencontainers.image.documentation=${{ github.server_url }}/${{ github.repository }}/wiki | |
| org.opencontainers.image.vendor=${{ github.repository_owner }} | |
| org.opencontainers.image.description=${{ github.event.repository.name }} ${{ matrix.distro }}:${{ matrix.codename }} ${{ env.GIT_AUTHOR }} | |
| 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=${{ matrix.distro }}:${{ matrix.codename }},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 }} | |
| annotations: ${{ steps.meta.outputs.annotations }} | |
| attests: type=sbom,generator=image | |
| 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 | |
| # 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@v6 | |
| # - 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 |