name: Build & Push Portfolio Image on: push: branches: - main paths: - 'app/**' - 'components/**' - 'lib/**' - 'public/**' - 'styles/**' - 'package.json' - 'pnpm-lock.yaml' - 'next.config.js' - 'tsconfig.json' - 'Dockerfile' - '.dockerignore' jobs: build-push: runs-on: node steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to Forgejo Registry uses: docker/login-action@v3 with: registry: forgejo.riotpiao.com username: ${{ secrets.FORGEJO_REGISTRY_USER }} password: ${{ secrets.FORGEJO_REGISTRY_TOKEN }} - name: Extract metadata id: meta run: | echo "timestamp=$(date -u +'%Y%m%d-%H%M%S')" >> $GITHUB_OUTPUT echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT - name: Build and push Docker image uses: docker/build-push-action@v5 with: context: . push: true tags: | forgejo.riotpiao.com/rock/portfolio:latest forgejo.riotpiao.com/rock/portfolio:${{ steps.meta.outputs.sha_short }} platforms: linux/amd64 cache-from: type=registry,ref=forgejo.riotpiao.com/rock/portfolio:buildcache cache-to: type=registry,ref=forgejo.riotpiao.com/rock/portfolio:buildcache,mode=max - name: Verify image pushed run: | echo "✓ Image pushed to forgejo.riotpiao.com/rock/portfolio:latest" echo "✓ Image tagged with SHA: ${{ steps.meta.outputs.sha_short }}"