104 lines
3.4 KiB
YAML
104 lines
3.4 KiB
YAML
---
|
|
# dance-lessons-coach Docker Push Workflow
|
|
# Separate workflow for Docker image building and pushing
|
|
# Can be triggered manually or by CI/CD workflow
|
|
|
|
name: Docker Push
|
|
|
|
on:
|
|
# Manual trigger for testing or production
|
|
workflow_dispatch:
|
|
inputs:
|
|
ref:
|
|
description: 'Git reference (branch/tag)'
|
|
required: false
|
|
type: string
|
|
default: ''
|
|
|
|
# Environment variables
|
|
env:
|
|
GITEA_INTERNAL: "https://gitea.arcodange.lab/"
|
|
GITEA_EXTERNAL: "https://gitea.arcodange.fr/"
|
|
GITEA_ORG: "arcodange"
|
|
GITEA_REPO: "dance-lessons-coach"
|
|
CI_REGISTRY: "gitea.arcodange.lab"
|
|
|
|
jobs:
|
|
docker-push:
|
|
name: Docker Push
|
|
runs-on: ubuntu-latest-ca
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{ github.event.inputs.ref || github.ref }}
|
|
|
|
- name: Login to Gitea Container Registry
|
|
uses: docker/login-action@v3
|
|
with:
|
|
registry: ${{ env.CI_REGISTRY }}
|
|
username: ${{ github.actor }}
|
|
password: ${{ secrets.PACKAGES_TOKEN }}
|
|
|
|
|
|
|
|
- name: Restore Swagger Docs Cache
|
|
id: cache-swagger-restore
|
|
uses: actions/cache/restore@v5
|
|
with:
|
|
path: |
|
|
pkg/server/docs/docs.go
|
|
pkg/server/docs/swagger.json
|
|
pkg/server/docs/swagger.yaml
|
|
key: swagger-docs-${{ hashFiles('cmd/server/main.go', 'pkg/greet/*.go', 'pkg/server/*.go', 'go.mod') }}
|
|
restore-keys: |
|
|
swagger-docs-
|
|
|
|
- name: Generate Swagger Docs if needed
|
|
if: steps.cache-swagger-restore.outputs.cache-hit != 'true'
|
|
run: >
|
|
docker run --rm
|
|
-v ${GITHUB_WORKSPACE}:/workspace
|
|
-w /workspace
|
|
golang:1.26.1-alpine
|
|
sh -c "apk add git && go install github.com/swaggo/swag/cmd/swag@latest && go generate ./pkg/server"
|
|
|
|
- name: Save Swagger Docs Cache
|
|
if: steps.cache-swagger-restore.outputs.cache-hit != 'true'
|
|
id: cache-swagger-save
|
|
uses: actions/cache/save@v5
|
|
with:
|
|
path: |
|
|
pkg/server/docs/docs.go
|
|
pkg/server/docs/swagger.json
|
|
pkg/server/docs/swagger.yaml
|
|
key: ${{ steps.cache-swagger-restore.outputs.cache-primary-key }}
|
|
|
|
- name: Build and push Docker image
|
|
run: |
|
|
source VERSION
|
|
IMAGE_VERSION="$MAJOR.$MINOR.$PATCH${PRERELEASE:+-$PRERELEASE}"
|
|
|
|
TAGS="$IMAGE_VERSION latest ${{ github.sha }}"
|
|
echo "Building Docker image with tags: $TAGS"
|
|
|
|
# Build using the standard Dockerfile (Attempt 2 - simplest approach)
|
|
docker build -t dance-lessons-coach -f docker/Dockerfile .
|
|
|
|
for TAG in $TAGS; do
|
|
IMAGE_NAME="${{ env.CI_REGISTRY }}/${{ env.GITEA_ORG }}/${{ env.GITEA_REPO }}:$TAG"
|
|
echo "Tagging and pushing: $IMAGE_NAME"
|
|
docker tag dance-lessons-coach "$IMAGE_NAME"
|
|
docker push "$IMAGE_NAME"
|
|
done
|
|
|
|
- name: Show published images
|
|
run: |
|
|
source VERSION
|
|
IMAGE_VERSION="$MAJOR.$MINOR.$PATCH${PRERELEASE:+-$PRERELEASE}"
|
|
echo "📦 Published Docker images:"
|
|
echo " - ${{ env.CI_REGISTRY }}/${{ env.GITEA_ORG }}/${{ env.GITEA_REPO }}:$IMAGE_VERSION"
|
|
echo " - ${{ env.CI_REGISTRY }}/${{ env.GITEA_ORG }}/${{ env.GITEA_REPO }}:latest"
|
|
echo " - ${{ env.CI_REGISTRY }}/${{ env.GITEA_ORG }}/${{ env.GITEA_REPO }}:${{ github.sha }}"
|