|  | 
|  | 1 | +name: Build and Push Docker Image (No Cache) | 
|  | 2 | + | 
|  | 3 | +on: | 
|  | 4 | +  push: | 
|  | 5 | +    branches: [ main ] | 
|  | 6 | +    tags: [ 'v*' ] | 
|  | 7 | +  pull_request: | 
|  | 8 | +    branches: [ main ] | 
|  | 9 | + | 
|  | 10 | +env: | 
|  | 11 | +  REGISTRY: ghcr.io | 
|  | 12 | +  IMAGE_NAME: ${{ github.repository }} | 
|  | 13 | + | 
|  | 14 | +jobs: | 
|  | 15 | +  build-and-push: | 
|  | 16 | +    runs-on: ubuntu-latest | 
|  | 17 | +    permissions: | 
|  | 18 | +      contents: read | 
|  | 19 | +      packages: write | 
|  | 20 | + | 
|  | 21 | +    steps: | 
|  | 22 | +    - name: Checkout repository | 
|  | 23 | +      uses: actions/checkout@v4 | 
|  | 24 | + | 
|  | 25 | +    - name: Set up Docker Buildx | 
|  | 26 | +      uses: docker/setup-buildx-action@v3 | 
|  | 27 | + | 
|  | 28 | +    - name: Log in to Container Registry | 
|  | 29 | +      if: github.event_name != 'pull_request' | 
|  | 30 | +      uses: docker/login-action@v3 | 
|  | 31 | +      with: | 
|  | 32 | +        registry: ${{ env.REGISTRY }} | 
|  | 33 | +        username: ${{ github.actor }} | 
|  | 34 | +        password: ${{ secrets.GITHUB_TOKEN }} | 
|  | 35 | + | 
|  | 36 | +    - name: Extract metadata | 
|  | 37 | +      id: meta | 
|  | 38 | +      uses: docker/metadata-action@v5 | 
|  | 39 | +      with: | 
|  | 40 | +        images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} | 
|  | 41 | +        tags: | | 
|  | 42 | +          type=ref,event=branch | 
|  | 43 | +          type=ref,event=pr | 
|  | 44 | +          type=semver,pattern={{version}} | 
|  | 45 | +          type=semver,pattern={{major}}.{{minor}} | 
|  | 46 | +          type=raw,value=latest,enable={{is_default_branch}} | 
|  | 47 | +
 | 
|  | 48 | +    - name: Build and push Docker image | 
|  | 49 | +      uses: docker/build-push-action@v5 | 
|  | 50 | +      with: | 
|  | 51 | +        context: . | 
|  | 52 | +        platforms: linux/amd64,linux/arm64 | 
|  | 53 | +        push: ${{ github.event_name != 'pull_request' }} | 
|  | 54 | +        tags: ${{ steps.meta.outputs.tags }} | 
|  | 55 | +        labels: ${{ steps.meta.outputs.labels }} | 
0 commit comments