Skip to content

Build Images

Build Images #762

Workflow file for this run

name: Build Images
on:
push:
branches:
- main
pull_request:
workflow_dispatch:
schedule:
- cron: "0 4 * * *"
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build-publish-image:
runs-on: ubuntu-latest
name: "Build Images (${{ matrix.context}})"
strategy:
fail-fast: false
matrix:
include:
# region node-rbenv
# +===================+
# | Image: node-rbenv |
# +===================+
# region Node.JS 16
# +------------+
# | Node.JS 16 |
# +------------+
- image: node-rbenv
context: node-rbenv/node-16
tags: |
kula/node-rbenv:16
kula/node-rbenv:16.20
kula/node-rbenv:16.20.2
# -- Ruby 3 --
- image: node-rbenv
context: node-rbenv/node-16/ruby-3
tags: |
kula/node-rbenv:16-ruby3
kula/node-rbenv:16-ruby3.3
kula/node-rbenv:16-ruby3.3.4
kula/node-rbenv:16.20-ruby3
kula/node-rbenv:16.20-ruby3.3
kula/node-rbenv:16.20-ruby3.3.4
kula/node-rbenv:16.20.2-ruby3
kula/node-rbenv:16.20.2-ruby3.3
kula/node-rbenv:16.20.2-ruby3.3.4
#endregion
# region Node.JS 16-slim
# +-----------------+
# | Node.JS 16-slim |
# +-----------------+
- image: node-rbenv
context: node-rbenv/node-16-slim
tags: |
kula/node-rbenv:16-slim
kula/node-rbenv:16.20-slim
kula/node-rbenv:16.20.2-slim
# -- Ruby 3 --
- image: node-rbenv
context: node-rbenv/node-16-slim/ruby-3
tags: |
kula/node-rbenv:16-slim-ruby3
kula/node-rbenv:16-slim-ruby3.3
kula/node-rbenv:16-slim-ruby3.3.4
kula/node-rbenv:16.20-slim-ruby3
kula/node-rbenv:16.20-slim-ruby3.3
kula/node-rbenv:16.20-slim-ruby3.3.4
kula/node-rbenv:16.20.2-slim-ruby3
kula/node-rbenv:16.20.2-slim-ruby3.3
kula/node-rbenv:16.20.2-slim-ruby3.3.4
# endregion
# region Node.JS 18
# +------------+
# | Node.JS 18 |
# +------------+
- image: node-rbenv
context: node-rbenv/node-18
tags: |
kula/node-rbenv:18
kula/node-rbenv:18.19
kula/node-rbenv:18.19.1
# -- Ruby 3 --
- image: node-rbenv
context: node-rbenv/node-18/ruby-3
tags: |
kula/node-rbenv:18-ruby3
kula/node-rbenv:18.19-ruby3
kula/node-rbenv:18.19.1-ruby3
kula/node-rbenv:18-ruby3.3
kula/node-rbenv:18.19-ruby3.3
kula/node-rbenv:18.19.1-ruby3.3
kula/node-rbenv:18-ruby3.3.4
kula/node-rbenv:18.19-ruby3.3.4
kula/node-rbenv:18.19.1-ruby3.3.4
# endregion
# region Node.JS 18-slim
# +-----------------+
# | Node.JS 18-slim |
# +-----------------+
- image: node-rbenv
context: node-rbenv/node-18-slim
tags: |
kula/node-rbenv:18-slim
kula/node-rbenv:18.19-slim
kula/node-rbenv:18.19.1-slim
# -- Ruby 3 --
- image: node-rbenv
context: node-rbenv/node-18-slim/ruby-3
tags: |
kula/node-rbenv:18-slim-ruby3
kula/node-rbenv:18.19-slim-ruby3
kula/node-rbenv:18.19.1-slim-ruby3
kula/node-rbenv:18-slim-ruby3.3
kula/node-rbenv:18.19-slim-ruby3.3
kula/node-rbenv:18.19.1-slim-ruby3.3
kula/node-rbenv:18-slim-ruby3.3.4
kula/node-rbenv:18.19-slim-ruby3.3.4
kula/node-rbenv:18.19.1-slim-ruby3.3.4
# endregion
# region Node.JS 20
# +------------+
# | Node.JS 20 |
# +------------+
- image: node-rbenv
context: node-rbenv/node-20
tags: |
kula/node-rbenv:20
kula/node-rbenv:20.11
kula/node-rbenv:20.11.1
# -- Ruby 3 --
- image: node-rbenv
context: node-rbenv/node-20/ruby-3
tags: |
kula/node-rbenv:20-ruby3
kula/node-rbenv:20.11-ruby3
kula/node-rbenv:20.11.1-ruby3
kula/node-rbenv:20-ruby3.3
kula/node-rbenv:20.11-ruby3.3
kula/node-rbenv:20.11.1-ruby3.3
kula/node-rbenv:20-ruby3.3.4
kula/node-rbenv:20.11-ruby3.3.4
kula/node-rbenv:20.11.1-ruby3.3.4
# endregion
# region Node.JS 20-slim
# +-----------------+
# | Node.JS 20-slim |
# +-----------------+
- image: node-rbenv
context: node-rbenv/node-20-slim
tags: |
kula/node-rbenv:20-slim
kula/node-rbenv:20.11-slim
kula/node-rbenv:20.11.1-slim
# -- Ruby 3 --
- image: node-rbenv
context: node-rbenv/node-20-slim/ruby-3
tags: |
kula/node-rbenv:20-slim-ruby3
kula/node-rbenv:20.11-slim-ruby3
kula/node-rbenv:20.11.1-slim-ruby3
kula/node-rbenv:20-slim-ruby3.3
kula/node-rbenv:20.11-slim-ruby3.3
kula/node-rbenv:20.11.1-slim-ruby3.3
kula/node-rbenv:20-slim-ruby3.3.4
kula/node-rbenv:20.11-slim-ruby3.3.4
kula/node-rbenv:20.11.1-slim-ruby3.3.4
# endregion
# region Node.JS Latest
# +------------------+
# | Node.JS - Latest |
# +------------------+
- image: node-rbenv
context: node-rbenv/node-latest
tags: |
kula/node-rbenv:latest
# endregion
# endregion
# region node-ruby
# +==================+
# | Image: node-ruby |
# +==================+
# +------------+
# | Node.JS 18 |
# +------------+
# -- Ruby 3 --
- image: node-ruby
context: node-ruby/node-18/ruby-3/alpine
tags: |
kula/node-ruby:18-ruby3-alpine
kula/node-ruby:18.19-ruby3-alpine
kula/node-ruby:18.19.1-ruby3-alpine
kula/node-ruby:18-ruby3.3-alpine
kula/node-ruby:18.19-ruby3.3-alpine
kula/node-ruby:18.19.1-ruby3.3-alpine
kula/node-ruby:18-ruby3.3.4-alpine
kula/node-ruby:18.19-ruby3.3.4-alpine
kula/node-ruby:18.19.1-ruby3.3.4-alpine
- image: node-ruby
context: node-ruby/node-18/ruby-3/bullseye
tags: |
kula/node-ruby:18-ruby3-bullseye
kula/node-ruby:18.19-ruby3-bullseye
kula/node-ruby:18.19.1-ruby3-bullseye
kula/node-ruby:18-ruby3.3-bullseye
kula/node-ruby:18.19-ruby3.3-bullseye
kula/node-ruby:18.19.1-ruby3.3-bullseye
kula/node-ruby:18-ruby3.3.4-bullseye
kula/node-ruby:18.19-ruby3.3.4-bullseye
kula/node-ruby:18.19.1-ruby3.3.4-bullseye
# endregion
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: kula
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build Image
uses: docker/build-push-action@v5
if: always()
with:
cache-from: type=registry,ref=ghcr.io/kula-app/containers/${{ matrix.image }}:buildcache
cache-to: type=registry,ref=ghcr.io/kula-app/containers/${{ matrix.image }}:buildcache,mode=max
context: images/${{ matrix.context }}
platforms: linux/amd64,linux/arm64
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ matrix.tags }}