diff --git a/.gitea/workflows/docker-build.yml b/.gitea/workflows/docker-build.yml index 4c9dc83..032244f 100644 --- a/.gitea/workflows/docker-build.yml +++ b/.gitea/workflows/docker-build.yml @@ -17,28 +17,56 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 - # Simple login directly with docker login + - name: Compute version and image names + run: | + LOWERCASE_IMAGE=$(echo "${{ env.IMAGE_NAME }}" | tr '[:upper:]' '[:lower:]') + # Version sémantique lue dans package.json (sans dépendre de node) + VERSION=$(sed -n 's/.*"version"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p' package.json | head -1) + [ -z "$VERSION" ] && VERSION="0.0.0" + BUILD="${{ gitea.run_number }}" + SHORT_SHA=$(echo "${{ gitea.sha }}" | cut -c1-7) + { + echo "FRONT=${{ env.REGISTRY }}/$LOWERCASE_IMAGE" + echo "BACK=${{ env.REGISTRY }}/$LOWERCASE_IMAGE-backend" + echo "VERSION=$VERSION" + echo "TAG=$VERSION-$BUILD" + echo "SHORT_SHA=$SHORT_SHA" + } >> "$GITHUB_ENV" + echo "Publication version $VERSION (build $BUILD, commit $SHORT_SHA)" + - name: Log in to the Container registry run: echo "${{ secrets.DOCKER_TOKEN }}" | docker login ${{ env.REGISTRY }} -u "${{ gitea.actor }}" --password-stdin # Frontend image (nginx + SPA) - name: Build frontend Docker image run: | - LOWERCASE_IMAGE=$(echo "${{ env.IMAGE_NAME }}" | tr '[:upper:]' '[:lower:]') - docker build -t ${{ env.REGISTRY }}/$LOWERCASE_IMAGE:latest . + docker build \ + -t "$FRONT:latest" \ + -t "$FRONT:$VERSION" \ + -t "$FRONT:$TAG" \ + -t "$FRONT:$SHORT_SHA" \ + . - name: Push frontend Docker image run: | - LOWERCASE_IMAGE=$(echo "${{ env.IMAGE_NAME }}" | tr '[:upper:]' '[:lower:]') - docker push ${{ env.REGISTRY }}/$LOWERCASE_IMAGE:latest + docker push "$FRONT:latest" + docker push "$FRONT:$VERSION" + docker push "$FRONT:$TAG" + docker push "$FRONT:$SHORT_SHA" # Backend image (Express API) - name: Build backend Docker image run: | - LOWERCASE_IMAGE=$(echo "${{ env.IMAGE_NAME }}" | tr '[:upper:]' '[:lower:]') - docker build -t ${{ env.REGISTRY }}/$LOWERCASE_IMAGE-backend:latest ./server + docker build \ + -t "$BACK:latest" \ + -t "$BACK:$VERSION" \ + -t "$BACK:$TAG" \ + -t "$BACK:$SHORT_SHA" \ + ./server - name: Push backend Docker image run: | - LOWERCASE_IMAGE=$(echo "${{ env.IMAGE_NAME }}" | tr '[:upper:]' '[:lower:]') - docker push ${{ env.REGISTRY }}/$LOWERCASE_IMAGE-backend:latest + docker push "$BACK:latest" + docker push "$BACK:$VERSION" + docker push "$BACK:$TAG" + docker push "$BACK:$SHORT_SHA"