From cdb52cac56c8677315113d22a053687d40dbd778 Mon Sep 17 00:00:00 2001 From: jafreli Date: Thu, 24 Jul 2025 21:43:37 +0200 Subject: [PATCH] Update worckflow --- .gitea/workflows/docker-simple.yml | 114 ++++++++++++----------------- 1 file changed, 46 insertions(+), 68 deletions(-) diff --git a/.gitea/workflows/docker-simple.yml b/.gitea/workflows/docker-simple.yml index 335c1c1..d37e91c 100644 --- a/.gitea/workflows/docker-simple.yml +++ b/.gitea/workflows/docker-simple.yml @@ -1,10 +1,16 @@ -name: Build and Push Docker Image (Simple) +name: Build and Push Docker Image on: push: branches: - main - master + pull_request: + branches: + - main + - master + release: + types: [published] env: REGISTRY: git.out.jafre.li @@ -13,80 +19,52 @@ env: jobs: build-and-push: runs-on: ubuntu-latest + permissions: + contents: read + packages: write steps: - name: Checkout repository uses: actions/checkout@v4 - - name: Prepare repository name - id: repo - run: | - REPO_LOWER=$(echo "${{ gitea.repository }}" | tr '[:upper:]' '[:lower:]') - REPO_NAME=$(echo "${{ gitea.repository }}" | cut -d'/' -f2 | tr '[:upper:]' '[:lower:]') - echo "repository_lower=${REPO_LOWER}" >> $GITHUB_OUTPUT - echo "repository_name=${REPO_NAME}" >> $GITHUB_OUTPUT - echo "Repository name (lowercase): ${REPO_NAME}" + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 - - name: Build Docker image - run: | - docker build \ - --build-arg SOURCE_URL="https://${{ env.REGISTRY }}/${{ gitea.repository }}" \ - --build-arg REPO_NAME="${{ steps.repo.outputs.repository_name }}" \ - --label "org.opencontainers.image.source=https://${{ env.REGISTRY }}/${{ gitea.repository }}" \ - --label "org.opencontainers.image.url=https://${{ env.REGISTRY }}/${{ gitea.repository }}" \ - --label "org.opencontainers.image.documentation=https://${{ env.REGISTRY }}/${{ gitea.repository }}" \ - -t ${{ env.REGISTRY }}/${{ steps.repo.outputs.repository_lower }}/${{ steps.repo.outputs.repository_name }}:latest . + - name: Log in to Gitea Container Registry + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ gitea.actor }} + password: ${{ secrets.TOKEN }} - - name: Log in to Container Registry - run: | - echo "${{ secrets.TOKEN }}" | docker login ${{ env.REGISTRY }} -u ${{ gitea.repository_owner }} --password-stdin + - name: Extract metadata + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + tags: | + type=ref,event=branch + type=ref,event=pr + type=semver,pattern={{version}} + type=semver,pattern={{major}}.{{minor}} + type=raw,value=latest,enable={{is_default_branch}} - - name: Push Docker image - run: | - docker push ${{ env.REGISTRY }}/${{ steps.repo.outputs.repository_lower }}/${{ steps.repo.outputs.repository_name }}:latest + - name: Build and push Docker image + uses: docker/build-push-action@v5 + with: + context: . + platforms: linux/amd64,linux/arm64 + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + build-args: | + SOURCE_URL=${{ gitea.server_url }}/${{ gitea.repository }} + REPO_NAME=${{ gitea.repository }} + cache-from: type=gha + cache-to: type=gha,mode=max - - name: Link package to repository + - name: Generate deployment info run: | - echo "� Libnking package to repository..." - echo "Package name: habittracker/habittracker" - echo "Repository: ${{ gitea.repository }}" - - # Wait for package registration - sleep 10 - - # Link the package using the correct API endpoint and package name - echo "� LAttempting to link package..." - RESPONSE=$(curl -s -w "%{http_code}" \ - -X PUT \ - -H "Authorization: token ${{ secrets.TOKEN }}" \ - -H "Content-Type: application/json" \ - -d '{"repository": "${{ gitea.repository }}"}' \ - "https://${{ env.REGISTRY }}/api/v1/packages/${{ gitea.repository_owner }}/container/habittracker%2Fhabittracker") - - HTTP_CODE="${RESPONSE: -3}" - RESPONSE_BODY="${RESPONSE%???}" - - echo "HTTP Status: $HTTP_CODE" - echo "Response: $RESPONSE_BODY" - - if [ "$HTTP_CODE" = "200" ] || [ "$HTTP_CODE" = "204" ]; then - echo "✅ Package successfully linked to repository!" - echo "🎉 Check your repository packages tab: https://${{ env.REGISTRY }}/${{ gitea.repository }}" - else - echo "⚠️ Automatic linking failed (HTTP $HTTP_CODE)" - echo "💡 Manual linking instructions:" - echo " 1. Go to: https://${{ env.REGISTRY }}/${{ gitea.repository_owner }}/packages" - echo " 2. Find package: habittracker/habittracker" - echo " 3. Click 'Link to Repository'" - echo " 4. Select: ${{ gitea.repository }}" - fi - - - name: Link package to repository - run: | - echo "✅ Docker image pushed to: ${{ env.REGISTRY }}/${{ steps.repo.outputs.repository_lower }}/${{ steps.repo.outputs.repository_name }}:latest" - echo "📦 Package is now linked to repository: ${{ steps.repo.outputs.repository_lower }}" - echo "🔗 View packages at: https://${{ env.REGISTRY }}/${{ gitea.repository_owner }}/packages" - - - name: Cleanup - run: | - docker rmi ${{ env.REGISTRY }}/${{ steps.repo.outputs.repository_lower }}/${{ steps.repo.outputs.repository_name }}:latest || true \ No newline at end of file + echo "Docker image pushed successfully!" + echo "Image: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}" + echo "Tags: ${{ steps.meta.outputs.tags }}" \ No newline at end of file