70 lines
2.4 KiB
YAML
70 lines
2.4 KiB
YAML
name: Build und Push Docker Image
|
|
|
|
on:
|
|
push:
|
|
branches: [main, Dev, beta]
|
|
tags: ["v*"]
|
|
|
|
env:
|
|
REGISTRY: 172.29.0.2:3000
|
|
DOCKER_HOST: tcp://172.17.0.1:2375
|
|
|
|
jobs:
|
|
build-and-push:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Code auschecken
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Docker-Daemon Diagnose
|
|
run: |
|
|
echo "--- Umgebungsvariablen (DOCKER_*) ---"
|
|
env | grep -i docker || echo "keine DOCKER_* Variable gesetzt"
|
|
echo "--- docker info ---"
|
|
docker info
|
|
|
|
- name: Bei der Registry anmelden
|
|
run: echo "${{ secrets.REGISTRY_TOKEN }}" | docker login ${{ env.REGISTRY }} -u ${{ github.actor }} --password-stdin
|
|
|
|
# Die Versionsnummer kommt aus der Datei VERSION im Repo-Root (z.B.
|
|
# "1.4.0") - vor einem Release dort einfach den Wert erhoehen.
|
|
#
|
|
# Tags je nach Push:
|
|
# - Branch main -> :latest und :v<VERSION>
|
|
# - Branch Dev -> :dev und :v<VERSION>-dev
|
|
# - Branch beta -> :beta und :v<VERSION>-beta
|
|
# - Git-Tag "v1.4.0" -> genau :v1.4.0 (expliziter Versions-Release)
|
|
# - immer zusaetzlich -> :<commit-sha> (exakte Nachverfolgung)
|
|
- name: Image-Namen und Tags bestimmen
|
|
id: vars
|
|
run: |
|
|
IMAGE=${{ env.REGISTRY }}/${{ github.repository }}
|
|
VERSION=$(tr -d '[:space:]' < VERSION)
|
|
|
|
if [ "${{ github.ref_type }}" = "tag" ]; then
|
|
TAGS="${{ github.ref_name }}"
|
|
elif [ "${{ github.ref_name }}" = "main" ]; then
|
|
TAGS="latest v${VERSION}"
|
|
else
|
|
BRANCH=$(echo "${{ github.ref_name }}" | tr '[:upper:]' '[:lower:]')
|
|
TAGS="${BRANCH} v${VERSION}-${BRANCH}"
|
|
fi
|
|
|
|
echo "image=$IMAGE" >> "$GITHUB_OUTPUT"
|
|
echo "tags=$TAGS" >> "$GITHUB_OUTPUT"
|
|
echo "Ermittelte Tags: $TAGS"
|
|
|
|
- name: Image bauen
|
|
run: |
|
|
BUILD_ARGS=""
|
|
for TAG in ${{ steps.vars.outputs.tags }}; do
|
|
BUILD_ARGS="$BUILD_ARGS -t ${{ steps.vars.outputs.image }}:${TAG}"
|
|
done
|
|
docker build $BUILD_ARGS -t ${{ steps.vars.outputs.image }}:${{ github.sha }} .
|
|
|
|
- name: Image pushen
|
|
run: |
|
|
for TAG in ${{ steps.vars.outputs.tags }}; do
|
|
docker push ${{ steps.vars.outputs.image }}:${TAG}
|
|
done
|
|
docker push ${{ steps.vars.outputs.image }}:${{ github.sha }} |