Skip to content

Release

Release #607

Workflow file for this run

name: Release
on:
push:
tags:
- "*-?v[0-9]+*"
env:
GHCR_REGISTRY: ghcr.io
permissions:
contents: write
packages: write
jobs:
docker-release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Log in to the ghcr container registry
uses: docker/login-action@v3
with:
registry: ${{ env.GHCR_REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Log in to the docker hub container registry
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_TOKEN }}
- name: Get docker image names
id: required_args
uses: actions/github-script@v7
env:
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
with:
script: |
const repoName = context.payload.repository.name;
const refName = context.ref.replace('refs/tags/', '');
core.setOutput('APP_VERSION', refName);
const dockerHubActor = process.env.DOCKER_USERNAME;
const ghcrRegistry = process.env.GHCR_REGISTRY;
const ghcrActor = context.actor;
function generateVersionArray(version) {
const parts = version.split(".");
const versionArray = [];
for (let i = 0; i < parts.length; i++)
versionArray.push(parts.slice(0, i + 1).join("."));
versionArray.push("latest");
return versionArray;
}
const versionTags = generateVersionArray(refName);
const ghcrImageName = `${ghcrRegistry}/${ghcrActor}/${repoName}`;
const ghcrTags = versionTags.map((tag) => `${ghcrImageName}:${tag}`);
const dockerHubImageName = `${dockerHubActor}/${repoName}`;
const dockerHubTags = versionTags.map((tag) => `${dockerHubImageName}:${tag}`);
const imageNames = [...ghcrTags, dockerHubTags].join(",").toLowerCase();
core.setOutput('image_names', imageNames);
- name: Free disk space
uses: jlumbroso/free-disk-space@main
with:
tool-cache: true
android: true
dotnet: true
haskell: true
large-packages: true
docker-images: true
swap-storage: true
- name: Build and push to ghcr
uses: docker/build-push-action@v5
with:
context: .
platforms: linux/amd64,linux/arm64
push: true
tags: ${{ steps.required_args.outputs.image_names }}
build-args: |
APP_VERSION=${{ steps.required_args.outputs.APP_VERSION }}
DEFAULT_TMDB_ACCESS_TOKEN=${{ secrets.DEFAULT_TMDB_ACCESS_TOKEN }}
DEFAULT_MAL_CLIENT_ID=${{ secrets.DEFAULT_MAL_CLIENT_ID }}