Compare commits
6
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
651fe4e95e | ||
|
|
0d08cde3c1 | ||
|
|
e1cf8aff29 | ||
|
|
9b46a25802 | ||
|
|
71682ae2b7 | ||
|
|
bac27cbc05 |
@@ -1,8 +1,10 @@
|
||||
# Builds the app, session manager and streamer images and pushes them to this
|
||||
# Gitea instance's container registry, under the repository's owner.
|
||||
#
|
||||
# Needs repository secrets REGISTRY_USERNAME and REGISTRY_TOKEN: a user, and an
|
||||
# access token of theirs with package write access.
|
||||
# Needs a repository secret REGISTRY_TOKEN: an access token with package write
|
||||
# access, belonging to the repository's owner. If the runner reaches Gitea at a
|
||||
# different address than the registry's public one, set a repository variable
|
||||
# REGISTRY_HOST to the registry's host name.
|
||||
name: Images
|
||||
|
||||
on:
|
||||
@@ -11,28 +13,50 @@ on:
|
||||
tags: ['v*.*.*']
|
||||
workflow_dispatch:
|
||||
|
||||
# Jobs that run docker builds use dejima-privileged; anything else should use
|
||||
# dejima-confined.
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
name: ${{ matrix.name }}
|
||||
runs-on: dejima-privileged
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- image: dotcom-arcade
|
||||
- name: app
|
||||
image: dotcom-arcade
|
||||
context: .
|
||||
- image: dotcom-arcade-session-manager
|
||||
- name: session-manager
|
||||
image: dotcom-arcade-session-manager
|
||||
context: streaming/session-manager
|
||||
- image: dotcom-arcade-streamer
|
||||
- name: streamer
|
||||
image: dotcom-arcade-streamer
|
||||
context: streaming/streamer
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
# The registry lives on the same host as this Gitea instance
|
||||
# The runner mounts the host's Docker socket, but its job image ships no
|
||||
# Docker client, and the login and build actions shell out to `docker`.
|
||||
# Only Docker's repository is refreshed, so the job needs no other mirrors.
|
||||
- name: Install the Docker CLI
|
||||
run: |
|
||||
install -m 0755 -d /etc/apt/keyrings
|
||||
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
|
||||
chmod a+r /etc/apt/keyrings/docker.asc
|
||||
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" > /etc/apt/sources.list.d/docker.list
|
||||
apt-get update -o Dir::Etc::sourcelist=sources.list.d/docker.list -o Dir::Etc::sourceparts=- -o APT::Get::List-Cleanup=0
|
||||
apt-get install -y --no-install-recommends docker-ce-cli
|
||||
|
||||
# The registry is this Gitea instance, unless REGISTRY_HOST says otherwise
|
||||
- name: Locate the registry
|
||||
id: registry
|
||||
shell: bash
|
||||
env:
|
||||
REGISTRY_HOST: ${{ vars.REGISTRY_HOST }}
|
||||
run: |
|
||||
host=${GITHUB_SERVER_URL#*://}
|
||||
echo "host=${host%/}" >> "$GITHUB_OUTPUT"
|
||||
host=${REGISTRY_HOST:-${host%/}}
|
||||
echo "host=$host" >> "$GITHUB_OUTPUT"
|
||||
echo "owner=${GITHUB_REPOSITORY_OWNER,,}" >> "$GITHUB_OUTPUT"
|
||||
|
||||
- uses: docker/setup-buildx-action@v3
|
||||
@@ -40,7 +64,7 @@ jobs:
|
||||
- uses: docker/login-action@v3
|
||||
with:
|
||||
registry: ${{ steps.registry.outputs.host }}
|
||||
username: ${{ secrets.REGISTRY_USERNAME }}
|
||||
username: ${{ github.repository_owner }}
|
||||
password: ${{ secrets.REGISTRY_TOKEN }}
|
||||
|
||||
- id: meta
|
||||
|
||||
@@ -43,10 +43,13 @@ Then run `docker compose pull && docker compose up -d`.
|
||||
`.gitea/workflows/images.yml` builds all three images on Gitea Actions and
|
||||
pushes them to the Gitea instance's container registry, under the repository's
|
||||
owner. Pushes to `main` publish a `main` tag; `v1.2.3` tags publish `1.2.3`,
|
||||
`1.2` and `latest`. It needs two repository secrets:
|
||||
|
||||
- `REGISTRY_USERNAME`: a user;
|
||||
- `REGISTRY_TOKEN`: an access token of theirs with package write access.
|
||||
`1.2` and `latest`. Its jobs run docker builds, so they need a runner labelled
|
||||
`dejima-privileged`; jobs that don't build images should use `dejima-confined`.
|
||||
It also needs a repository secret, `REGISTRY_TOKEN`: an access token with
|
||||
package write access, belonging to the repository's owner, whom the workflow
|
||||
logs in as. If the runner reaches Gitea at a different address than the
|
||||
registry's public one, set a repository variable `REGISTRY_HOST` to the
|
||||
registry's host name.
|
||||
|
||||
## Volumes
|
||||
|
||||
|
||||
Reference in New Issue
Block a user