| name: Create and publish a container image |
|
|
| on: |
| push: |
| branches: |
| - master |
| tags: |
| - "*" |
|
|
| env: |
| REGISTRY: ghcr.io |
| IMAGE_NAME: ${{ github.repository }} |
|
|
| jobs: |
| build-and-push-image: |
| name: Build and push container image |
| runs-on: ubuntu-latest |
| permissions: |
| contents: read |
| packages: write |
| steps: |
| - name: Clone repository |
| uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 |
| with: |
| persist-credentials: false |
|
|
| - name: Set up Docker Buildx |
| uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 |
|
|
| - name: Log in to the Container registry |
| uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef |
| with: |
| registry: ${{ env.REGISTRY }} |
| username: ${{ github.actor }} |
| password: ${{ secrets.GITHUB_TOKEN }} |
|
|
| - name: Extract metadata (tags, labels) |
| id: meta |
| uses: docker/metadata-action@c299e40c65443455700f0fdfc63efafe5b349051 |
| with: |
| images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} |
|
|
| - name: Build and push container image |
| uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 |
| with: |
| context: . |
| push: ${{ github.event_name != 'pull_request' }} |
| tags: ${{ steps.meta.outputs.tags }} |
| labels: ${{ steps.meta.outputs.labels }} |
|
|