2024-03-20 09:05:38 +01:00
name : Create and publish Docker images with specific build args
2023-11-06 22:00:11 +01:00
# Configures this workflow to run every time a change is pushed to the branch called `release`.
on :
push :
2023-12-27 16:38:32 +01:00
branches :
- main
- dev
2023-11-06 22:00:11 +01:00
tags :
- v*
# Defines two custom environment variables for the workflow. These are used for the Container registry domain, and a name for the Docker image that this workflow builds.
env :
REGISTRY : ghcr.io
IMAGE_NAME : ${{ github.repository }}
# There is a single job in this workflow. It's configured to run on the latest available version of Ubuntu.
jobs :
build-and-push-image :
runs-on : ubuntu-latest
# Sets the permissions granted to the `GITHUB_TOKEN` for the actions in this job.
permissions :
contents : read
packages : write
2024-03-20 09:05:38 +01:00
2023-11-06 22:00:11 +01:00
steps :
- name : Checkout repository
uses : actions/checkout@v4
2023-12-08 11:50:58 +01:00
# Required for multi architecture build
- name : Set up QEMU
uses : docker/setup-qemu-action@v3
# Required for multi architecture build
- name : Set up Docker Buildx
uses : docker/setup-buildx-action@v3
2023-11-06 22:00:11 +01:00
# Uses the `docker/login-action` action to log in to the Container registry registry using the account and password that will publish the packages. Once published, the packages are scoped to the account defined here.
- name : Log in to the Container registry
2023-12-27 16:39:18 +01:00
uses : docker/login-action@v3
2023-11-06 22:00:11 +01:00
with :
registry : ${{ env.REGISTRY }}
username : ${{ github.actor }}
password : ${{ secrets.GITHUB_TOKEN }}
2024-02-15 06:55:33 +01:00
2024-03-20 09:05:38 +01:00
- name : Extract metadata for Docker images (default latest tag)
id : meta-latest
2023-12-27 16:39:18 +01:00
uses : docker/metadata-action@v5
2023-11-06 22:00:11 +01:00
with :
images : ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
2024-02-15 06:55:33 +01:00
# This configuration dynamically generates tags based on the branch, tag, commit, and custom suffix for lite version.
tags : |
type=ref,event=branch
type=ref,event=tag
type=sha,prefix=git-
type=semver,pattern={{version}}
2024-02-25 22:57:33 +01:00
type=semver,pattern={{major}}.{{minor}}
2024-03-20 09:05:38 +01:00
latest=true
- name : Build and push Docker image (latest)
uses : docker/build-push-action@v5
with :
context : .
push : true
platforms : linux/amd64,linux/arm64
tags : ${{ steps.meta-latest.outputs.tags }}
labels : ${{ steps.meta-latest.outputs.labels }}
- name : Build and push Docker image with CUDA
uses : docker/build-push-action@v5
with :
context : .
push : true
platforms : linux/amd64,linux/arm64
tags : ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:cuda
build-args : USE_CUDA=true
2024-02-15 06:55:33 +01:00
2024-03-20 09:05:38 +01:00
- name : Build and push Docker image with MPS
2023-12-08 11:50:58 +01:00
uses : docker/build-push-action@v5
2023-11-06 22:00:11 +01:00
with :
context : .
push : true
2023-12-09 05:39:22 +01:00
platforms : linux/amd64,linux/arm64
2024-03-20 09:05:38 +01:00
tags : ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:mps
build-args : USE_MPS=true
2024-03-22 10:05:20 +01:00
- name : Build and push Docker image with Ollama
uses : docker/build-push-action@v5
with :
context : .
push : true
platforms : linux/amd64,linux/arm64
tags : ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:with-ollama
build-args : INCLUDE_OLLAMA=true