mirror of
https://github.com/docker/metadata-action.git
synced 2024-11-05 11:45:40 +01:00
5c38e5df03
Co-authored-by: CrazyMax <crazy-max@users.noreply.github.com>
295 lines
6.0 KiB
Markdown
295 lines
6.0 KiB
Markdown
# Upgrade notes
|
|
|
|
## 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@v2
|
|
-
|
|
name: Docker meta
|
|
id: meta
|
|
uses: crazy-max/ghaction-docker-meta@v1
|
|
with:
|
|
images: name/app
|
|
-
|
|
name: Login to DockerHub
|
|
if: github.event_name != 'pull_request'
|
|
uses: docker/login-action@v1
|
|
with:
|
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
-
|
|
name: Build and push
|
|
uses: docker/build-push-action@v2
|
|
with:
|
|
context: .
|
|
push: ${{ github.event_name != 'pull_request' }}
|
|
tags: ${{ steps.docker_meta.outputs.tags }}
|
|
labels: ${{ steps.docker_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@v2
|
|
-
|
|
name: Docker meta
|
|
id: meta
|
|
uses: crazy-max/ghaction-docker-meta@v2
|
|
with:
|
|
images: name/app
|
|
-
|
|
name: Login to DockerHub
|
|
if: github.event_name != 'pull_request'
|
|
uses: docker/login-action@v1
|
|
with:
|
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
-
|
|
name: Build and push
|
|
uses: docker/build-push-action@v2
|
|
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@v2
|
|
-
|
|
name: Docker meta
|
|
id: meta
|
|
uses: crazy-max/ghaction-docker-meta@v1
|
|
with:
|
|
images: name/app
|
|
tag-semver: |
|
|
{{version}}
|
|
{{major}}.{{minor}}
|
|
-
|
|
name: Login to DockerHub
|
|
if: github.event_name != 'pull_request'
|
|
uses: docker/login-action@v1
|
|
with:
|
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
-
|
|
name: Build and push
|
|
uses: docker/build-push-action@v2
|
|
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@v2
|
|
-
|
|
name: Docker meta
|
|
id: meta
|
|
uses: crazy-max/ghaction-docker-meta@v2
|
|
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@v1
|
|
with:
|
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
-
|
|
name: Build and push
|
|
uses: docker/build-push-action@v2
|
|
with:
|
|
context: .
|
|
push: ${{ github.event_name != 'pull_request' }}
|
|
tags: ${{ steps.meta.outputs.tags }}
|
|
labels: ${{ steps.meta.outputs.labels }}
|
|
```
|