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 }}