# Upgrade notes ## v2 to v3 * Repository has been moved to docker org. Replace `crazy-max/ghaction-docker-meta@v2` with `docker/metadata-action@v4` * The default bake target has been changed: `ghaction-docker-meta` > `docker-metadata-action` ## v1 to v2 * [inputs](#inputs) * [`tag-sha`](#tag-sha) * [`tag-edge` / `tag-edge-branch`](#tag-edge--tag-edge-branch) * [`tag-semver`](#tag-semver) * [`tag-match` / `tag-match-group`](#tag-match--tag-match-group) * [`tag-latest`](#tag-latest) * [`tag-schedule`](#tag-schedule) * [`tag-custom` / `tag-custom-only`](#tag-custom--tag-custom-only) * [`label-custom`](#label-custom) * [Basic workflow](#basic-workflow) * [Semver workflow](#semver-workflow) ### inputs | New | Unchanged | Removed | |------------|-----------------|--------------------| | `tags` | `images` | `tag-sha` | | `flavor` | `sep-tags` | `tag-edge` | | `labels` | `sep-labels` | `tag-edge-branch` | | | | `tag-semver` | | | | `tag-match` | | | | `tag-match-group` | | | | `tag-latest` | | | | `tag-schedule` | | | | `tag-custom` | | | | `tag-custom-only` | | | | `label-custom` | #### `tag-sha` ```yaml tags: | type=sha ``` #### `tag-edge` / `tag-edge-branch` ```yaml tags: | # default branch type=edge # specify branch type=edge,branch=main ``` #### `tag-semver` ```yaml tags: | type=semver,pattern={{version}} ``` #### `tag-match` / `tag-match-group` ```yaml tags: | type=match,pattern=v(.*),group=1 ``` #### `tag-latest` `tag-latest` is now handled through the [`flavor` input](README.md#flavor-input): ```yaml flavor: | latest=auto ``` See also the notes about ["latest tag" behavior](README.md#latest-tag) #### `tag-schedule` ```yaml tags: | # default tag (nightly) type=schedule # specific pattern type=schedule,pattern={{date 'YYYYMMDD'}} ``` #### `tag-custom` / `tag-custom-only` ```yaml tags: | type=raw,value=foo type=raw,value=bar # or type=raw,foo type=raw,bar # or foo bar ``` #### `label-custom` Same behavior for `labels`: ```yaml labels: | maintainer=CrazyMax ``` ### Basic workflow ```yaml # v1 name: ci on: push: branches: - 'master' tags: - 'v*' pull_request: branches: - 'master' jobs: docker: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 - name: Docker meta id: meta uses: docker/metadata-action@v1 with: images: name/app - name: Login to DockerHub if: github.event_name != 'pull_request' uses: docker/login-action@v2 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build and push uses: docker/build-push-action@v4 with: context: . push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} ``` ```yaml # v2 name: ci on: push: branches: - 'master' tags: - 'v*' pull_request: branches: - 'master' jobs: docker: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 - name: Docker meta id: meta uses: docker/metadata-action@v4 with: images: name/app - name: Login to DockerHub if: github.event_name != 'pull_request' uses: docker/login-action@v2 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build and push uses: docker/build-push-action@v4 with: context: . push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} ``` ### Semver workflow ```yaml # v1 name: ci on: push: branches: - 'master' tags: - 'v*' pull_request: branches: - 'master' jobs: docker: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 - name: Docker meta id: meta uses: docker/metadata-action@v1 with: images: name/app tag-semver: | {{version}} {{major}}.{{minor}} - name: Login to DockerHub if: github.event_name != 'pull_request' uses: docker/login-action@v2 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build and push uses: docker/build-push-action@v4 with: context: . push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} ``` ```yaml # v2 name: ci on: push: branches: - 'master' tags: - 'v*' pull_request: branches: - 'master' jobs: docker: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 - name: Docker meta id: meta uses: docker/metadata-action@v4 with: images: name/app tags: | type=ref,event=branch type=ref,event=pr type=semver,pattern={{version}} type=semver,pattern={{major}}.{{minor}} - name: Login to DockerHub if: github.event_name != 'pull_request' uses: docker/login-action@v2 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build and push uses: docker/build-push-action@v4 with: context: . push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} ```