51 lines
1.6 KiB
YAML
51 lines
1.6 KiB
YAML
name: Image bauen und in die Registry schieben
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
tags: ['v*']
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
# Der Job laeuft in einem Container, der je nach Runner-Label keine
|
|
# Docker-CLI mitbringt. Sicherstellen, dass `docker` vorhanden ist;
|
|
# der Runner muss den Docker-Socket (-v /var/run/docker.sock) stellen.
|
|
- name: Docker-CLI sicherstellen
|
|
run: |
|
|
if ! command -v docker >/dev/null 2>&1; then
|
|
apt-get update && apt-get install -y docker.io
|
|
fi
|
|
|
|
- name: Bei der Registry anmelden
|
|
run: echo "${{ secrets.REGISTRY_TOKEN }}" | docker login git.somantis.net -u "${{ secrets.REGISTRY_USER }}" --password-stdin
|
|
|
|
# Tags: main-Push -> latest + SHA; Tag-Push (v*) -> vX.Y.Z + SHA.
|
|
# So zieht man entweder die aktuelle Version (:latest) oder eine
|
|
# feste Version (z.B. :v1.0.0).
|
|
- name: Image-Tags bestimmen
|
|
id: img
|
|
run: |
|
|
IMG="git.somantis.net/j4stmarkus/trainingsplan"
|
|
TAGS="$IMG:latest"
|
|
if [ "${{ github.ref_type }}" = "tag" ]; then
|
|
TAGS="$TAGS $IMG:${{ github.ref_name }}"
|
|
fi
|
|
TAGS="$TAGS $IMG:${{ github.sha }}"
|
|
echo "tags=$TAGS" >> "$GITHUB_OUTPUT"
|
|
echo "tags=$TAGS"
|
|
|
|
- name: Image bauen
|
|
run: |
|
|
ARGS=()
|
|
for t in ${{ steps.img.outputs.tags }}; do
|
|
ARGS+=("-t" "$t")
|
|
done
|
|
docker build --no-cache "${ARGS[@]}" .
|
|
|
|
- name: Image pushen
|
|
run: docker push ${{ steps.img.outputs.tags }} |