build #543
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
| ################################################################################## | |
| # 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 }} |