/ .github / workflows / publish-container.yml
publish-container.yml
 1  name: Create and publish a Docker image
 2  
 3  on:
 4    push:
 5      branches: ['master']
 6      tags: ['*.*.*']
 7  
 8  env:
 9    REGISTRY: ghcr.io
10    IMAGE_NAME: ${{ github.repository }}
11  
12  jobs:
13    build-and-push-image:
14      runs-on: ubuntu-latest
15      permissions:
16        contents: read
17        packages: write
18  
19      steps:
20        - name: Checkout repository
21          uses: actions/checkout@v3
22  
23        - name: Log in to the Container registry
24          uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9
25          with:
26            registry: ${{ env.REGISTRY }}
27            username: ${{ github.actor }}
28            password: ${{ secrets.GITHUB_TOKEN }}
29  
30        - name: Extract metadata (tags, labels) for Docker
31          id: meta
32          uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38
33          with:
34            images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
35  
36        - name: Build and push Docker image
37          uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc
38          with:
39            context: .
40            push: true
41            tags: ${{ steps.meta.outputs.tags }}
42            labels: ${{ steps.meta.outputs.labels }}