Reusable workflows for use with our other repos
- To support passing app version args to the build process your Dockerfile(s) should use the generic
APP_VERSIONarg rather than an app-specific env var. - A bake definition .hcl file is required to build the images. An example
docker-bake.hclfile is included in this repo and can generally be used as-is.
The following workflows are available for use:
This workflow will build a Docker image on release or on a PR being opened. It is designed to work with a single Dockerfile for all architectures.
release_type should be consistent across all workflows. Supported release_types are:
- github - Standard github release, requires
release_urlinput - github_tag - Github release tag, requires
release_urlandrelease_nameinputs - github_commit - Github commit release, requires
release_urlinput - alpine - Alpine package release, requires
release_urlandrelease_nameinputs - script - Shell script release. Requires
get-version.shscript in root of repo
app_name is a mandatory input and should be the desired name of the image and consistent across all workflows.
target-arch is mandatory and can be one of all, amd64, arm, 64
sign_image is an optional boolean for whether or not to sign the resultant image (default true)
branch_name is optional and should be the name of the branch being built from (default main)
Example workflow:
name: Build Image On Release
on:
release:
types: [published]
pull_request:
jobs:
call-workflow:
uses: linuxserver-labs/docker-actions/.github/workflows/build-image.yml@v8
with:
repo_owner: ${{ github.repository_owner }}
app_name: "your_spotify"
release_type: "github"
release_url: "https://api.github.com/repos/Yooooomi/your_spotify"
target-arch: "64"
sign_image: true
branch_name: main
secrets:
OP_SERVICE_ACCOUNT_TOKEN: ${{ secrets.OP_SERVICE_ACCOUNT_TOKEN }}This workflow will build a Docker image on release or on a PR being opened. It is designed to work with a individual Dockerfiles for each architecture.
release_type should be consistent across all workflows. Supported release_types are:
- github - Standard github release, requires
release_urlinput - github_tag - Github release tag, requires
release_urlandrelease_nameinputs - github_commit - Github commit release, requires
release_urlinput - alpine - Alpine package release, requires
release_urlandrelease_nameinputs - script - Shell script release. Requires
get-version.shscript in root of repo
app_name is a mandatory input and should be the desired name of the image and consistent across all workflows.
target-arch is mandatory and should be an array of one or more of amd64, arm64v8, risvc64
sign_image is an optional boolean for whether or not to sign the resultant image (default true)
branch_name is optional and should be the name of the branch being built from (default main)
Example workflow:
name: Build Image On Release
on:
release:
types: [ published ]
pull_request:
jobs:
call-workflow:
uses: linuxserver-labs/docker-actions/workflows/build-split-image.yml@v8
with:
repo_owner: ${{ github.repository_owner }}
app_name: "radarr"
release_type: "script"
target-arch: >-
["amd64", "arm64v8"]
sign_image: true
branch_name: main
secrets:
OP_SERVICE_ACCOUNT_TOKEN: ${{ secrets.OP_SERVICE_ACCOUNT_TOKEN }}This workflow will check for updates to the upstream application and generate a release if there are any.
release_type should be consistent across all workflows. Supported release_types are:
- github - Standard github release, requires
release_urlinput - github_tag - Github release tag, requires
release_urlandrelease_nameinputs - github_commit - Github commit release, requires
release_urlinput - alpine - Alpine package release, requires
release_urlandrelease_nameinputs - script - Shell script release. Requires
get-version.shscript in root of repo
app_name is a mandatory input and should be the desired name of the image and consistent across all workflows.
prerelease is an optional input and will cause all releases to be marked as prerelease.
branch_name is optional and will cause all releases to be targeted against that branch (default main).
Example workflow:
name: Check for update and release
on:
workflow_dispatch:
schedule:
- cron: '11 * * * *'
jobs:
call-workflow:
uses: linuxserver-labs/docker-actions/.github/workflows/check-and-release.yml@v8
with:
repo_owner: ${{ github.repository_owner }}
app_name: "radarr"
release_type: "script"
prerelease: true
branch_name: nightly
secrets:
repo_release_token: ${{ secrets.repo_release_token }}This workflow will check for updates to the base image used by the repo and generate a release if there are any.
app_name is a mandatory input and should be the desired name of the image and consistent across all workflows.
baseimage is a mandatory input and should be the name of the base image to check for updates. e.g. if you're using linuxserver/baseimage-alpine-nginx then the baseimage should be alpine-nginx.
basebranch is a mandatory input and should be the release tag of the base image you're using. e.g. if you're using the focal tag of the Ubuntu baseimage then the basebranch should be focal.
branch_name is optional and will cause all releases to be targeted against that branch (default main).
Example workflow:
name: Check for base image updates
on:
workflow_dispatch:
schedule:
- cron: '0 0 * * 0'
jobs:
call-workflow:
uses: linuxserver-labs/docker-actions/.github/workflows/check-baseimage-update.yml@v8
with:
repo_owner: ${{ github.repository_owner }}
baseimage: "alpine"
basebranch: "3.19"
app_name: "radarr"
branch_name: nightly
secrets:
repo_release_token: ${{ secrets.repo_release_token }}