Skip to content

build

build #543

Workflow file for this run

##################################################################################
# References:
# Built-in arguments:
# - https://docs.github.com/en/actions/learn-github-actions/contexts
# Built-in environment variables:
# - https://docs.github.com/en/enterprise-cloud@latest/actions/learn-github-actions/variables#default-environment-variables
#
# Develop this workflow locally with the following command:
# ~$ gh act --env-file .env -s GITHUB_TOKEN=$GITHUB_TOKEN
name: build
on:
workflow_dispatch:
push:
branches:
- main
paths-ignore:
- ".devcontainer/**"
- ".vscode/**"
- "**.md"
pull_request:
branches:
- main
paths-ignore:
- ".devcontainer/**"
- ".vscode/**"
- "**.md"
schedule:
- cron: "0 2 * * *" # Daily at 2am UTC
jobs:
build-and-push:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
actions: write
steps:
- name: Git Checkout
id: dep-git-checkout
uses: actions/checkout@v4
- name: Set up QEMU
id: qemu-install
uses: docker/setup-qemu-action@v3
- name: Install Docker Buildx
id: docker-buildx-install
uses: docker/setup-buildx-action@v3
with:
version: latest
driver-opts: |
image=moby/buildkit:latest
- name: Generate date for cache key
id: date
run: echo "date=$(date -u "+%Y%m%d")" >> $GITHUB_OUTPUT
- name: Login to GitHub Container Registry
id: docker-login-ghcr
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to Docker Hub Container Registry
id: docker-login-dockerhub
uses: docker/login-action@v3
with:
registry: docker.io
username: ${{ secrets.DOCKERHUB_USER }}
password: ${{ secrets.DOCKERHUB_PASSWD }}
- name: repository_owner to lower case
id: string-owner-to-lower
uses: Entepotenz/change-string-case-action-min-dependencies@v1
with:
string: ${{ github.repository_owner }}
- name: Transform repository name to lower case
id: string-repository-to-lower
uses: Entepotenz/change-string-case-action-min-dependencies@v1
with:
string: ${{ github.repository }}
- name: Docker meta
id: meta
uses: docker/metadata-action@v5
with:
images: |
docker.io/containercraft/konductor
ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}
- name: Build and Push Image devcontainer:slim
id: slim
uses: docker/build-push-action@v5
if: github.ref == 'refs/heads/main' || github.event_name == 'pull_request'
with:
push: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }}
#cache-from: |
# type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:cache-slim-${{ steps.date.outputs.date }}
# type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:cache-slim-latest
#cache-to: |
# type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:cache-slim-${{ steps.date.outputs.date }},mode=max
# type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:cache-slim-latest,mode=max
context: docker
file: docker/slim/Dockerfile
platforms: linux/amd64,linux/arm64
tags: |
docker.io/containercraft/konductor:slim
ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:slim
ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:${{ github.sha }}
# Repeat similar pattern for other image types with specialized caches
- name: Build and Push Image devcontainer:slim-node
id: slim-node
uses: docker/build-push-action@v5
if: github.ref == 'refs/heads/main' || github.event_name == 'pull_request'
with:
push: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }}
#cache-from: |
# type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:cache-node-${{ steps.date.outputs.date }}
# type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:cache-node-latest
#cache-to: |
# type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:cache-node-${{ steps.date.outputs.date }},mode=max
# type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:cache-node-latest,mode=max
context: docker/slim-node
file: docker/slim-node/Dockerfile
platforms: linux/amd64,linux/arm64
tags: |
docker.io/containercraft/konductor:slim-node
ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:slim-node
ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:${{ github.sha }}
- name: Build and Push Image devcontainer:slim-python
id: slim-python
uses: docker/build-push-action@v5
if: github.ref == 'refs/heads/main' || github.event_name == 'pull_request'
with:
push: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }}
#cache-from: |
# type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:cache-python-${{ steps.date.outputs.date }}
# type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:cache-python-latest
#cache-to: |
# type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:cache-python-${{ steps.date.outputs.date }},mode=max
# type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:cache-python-latest,mode=max
context: docker/slim-python
file: docker/slim-python/Dockerfile
platforms: linux/amd64,linux/arm64
tags: |
docker.io/containercraft/konductor:slim-python
ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:slim-python
ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:${{ github.sha }}
- name: Build and Push Image devcontainer:slim-golang
id: slim-golang
uses: docker/build-push-action@v5
if: github.ref == 'refs/heads/main' || github.event_name == 'pull_request'
with:
push: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }}
#cache-from: |
# type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:cache-golang-${{ steps.date.outputs.date }}
# type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:cache-golang-latest
#cache-to: |
# type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:cache-golang-${{ steps.date.outputs.date }},mode=max
# type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:cache-golang-latest,mode=max
context: docker/slim-golang
file: docker/slim-golang/Dockerfile
platforms: linux/amd64,linux/arm64
tags: |
docker.io/containercraft/konductor:slim-go
ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:slim-go
ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:${{ github.sha }}
- name: Build and Push Image devcontainer:slim-dotnet
id: slim-dotnet
uses: docker/build-push-action@v5
if: github.ref == 'refs/heads/main' || github.event_name == 'pull_request'
with:
push: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }}
#cache-from: |
# type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:cache-dotnet-${{ steps.date.outputs.date }}
# type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:cache-dotnet-latest
#cache-to: |
# type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:cache-dotnet-${{ steps.date.outputs.date }},mode=max
# type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:cache-dotnet-latest,mode=max
context: docker/slim-dotnet
file: docker/slim-dotnet/Dockerfile
platforms: linux/amd64,linux/arm64
tags: |
docker.io/containercraft/konductor:slim-dotnet
ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:slim-dotnet
ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:${{ github.sha }}
- name: Build and Push Image devcontainer:slim-all
id: slim-all
uses: docker/build-push-action@v5
if: github.ref == 'refs/heads/main' || github.event_name == 'pull_request'
with:
push: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }}
#cache-from: |
# type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:cache-all-${{ steps.date.outputs.date }}
# type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:cache-all-latest
#cache-to: |
# type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:cache-all-${{ steps.date.outputs.date }},mode=max
# type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:cache-all-latest,mode=max
context: docker/slim-all
file: docker/slim-all/Dockerfile
platforms: linux/amd64,linux/arm64
tags: |
docker.io/containercraft/konductor:slim-all
ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:slim-all
ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:${{ github.sha }}
- name: Build and Push Image devcontainer:hugo
id: hugo
uses: docker/build-push-action@v5
if: github.ref == 'refs/heads/main' || github.event_name == 'pull_request'
with:
push: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }}
#cache-from: |
# type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:cache-hugo-${{ steps.date.outputs.date }}
# type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:cache-hugo-latest
#cache-to: |
# type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:cache-hugo-${{ steps.date.outputs.date }},mode=max
# type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:cache-hugo-latest,mode=max
context: docker/hugo
file: docker/hugo/Dockerfile
platforms: linux/amd64,linux/arm64
tags: |
docker.io/containercraft/konductor:hugo
ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:hugo
ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:${{ github.sha }}
- name: Build and Push Image devcontainer:base
id: base
uses: docker/build-push-action@v5
if: github.ref == 'refs/heads/main' || github.event_name == 'pull_request'
with:
push: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }}
#cache-from: |
# type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:cache-base-${{ steps.date.outputs.date }}
# type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:cache-base-latest
#cache-to: |
# type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:cache-base-${{ steps.date.outputs.date }},mode=max
# type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:cache-base-latest,mode=max
context: docker/base
file: docker/base/Dockerfile
platforms: linux/amd64,linux/arm64
tags: |
docker.io/containercraft/konductor:base
ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:base
ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:${{ github.sha }}
- name: Build and Push Image devcontainer:dind
id: docker-in-docker
uses: docker/build-push-action@v5
if: github.ref == 'refs/heads/main' || github.event_name == 'pull_request'
with:
push: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }}
#cache-from: |
# type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:cache-dind-${{ steps.date.outputs.date }}
# type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:cache-dind-latest
#cache-to: |
# type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:cache-dind-${{ steps.date.outputs.date }},mode=max
# type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:cache-dind-latest,mode=max
context: docker/docker-in-docker
file: docker/docker-in-docker/Dockerfile
platforms: linux/amd64,linux/arm64
tags: |
docker.io/containercraft/konductor:dind
ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:dind
ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:${{ github.sha }}
# Extra image with latest tags
- name: Build and Push Image devcontainer:extra
id: extra
uses: docker/build-push-action@v5
if: github.ref == 'refs/heads/main' || github.event_name == 'pull_request'
with:
push: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }}
#cache-from: |
# type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:cache-extra-${{ steps.date.outputs.date }}
# type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:cache-extra-latest
#cache-to: |
# type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:cache-extra-${{ steps.date.outputs.date }},mode=max
# type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:cache-extra-latest,mode=max
context: docker/extra
file: docker/extra/Dockerfile
platforms: linux/amd64,linux/arm64
tags: |
docker.io/containercraft/konductor:extra
docker.io/containercraft/konductor:${{ github.sha }}
docker.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:extra
docker.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:${{ github.sha }}
ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:extra
ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:${{ github.sha }}
# Neovim image with latest tags
- name: Build and Push Image devcontainer:nvim
id: neovim
uses: docker/build-push-action@v5
if: github.ref == 'refs/heads/main' || github.event_name == 'pull_request'
with:
push: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }}
#cache-from: |
# type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:cache-nvim-${{ steps.date.outputs.date }}
# type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:cache-nvim-latest
#cache-to: |
# type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:cache-nvim-${{ steps.date.outputs.date }},mode=max
# type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:cache-nvim-latest,mode=max
context: docker/neovim
file: docker/neovim/Dockerfile
platforms: linux/amd64,linux/arm64
tags: |
docker.io/containercraft/konductor:nvim
docker.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:nvim
ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:nvim
ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:${{ github.sha }}
- name: Build and Push Image devcontainer:code-server
id: code-server
uses: docker/build-push-action@v5
if: github.ref == 'refs/heads/main' || github.event_name == 'pull_request'
with:
push: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }}
#cache-from: |
# type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:cache-server-${{ steps.date.outputs.date }}
# type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:cache-server-latest
#cache-to: |
# type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:cache-server-${{ steps.date.outputs.date }},mode=max
# type=registry,ref=ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:cache-server-latest,mode=max
context: docker/code-server
file: docker/code-server/Dockerfile
platforms: linux/amd64,linux/arm64
tags: |
docker.io/containercraft/konductor:latest
docker.io/containercraft/konductor:code-server
docker.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:latest
docker.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:code-server
docker.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:${{ github.sha }}
ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:latest
ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:code-server
ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:${{ github.sha }}