Merge pull request #1215 from Frederik-Baetens/main
update sortable image tag guide with github.run_number
This commit is contained in:
@@ -36,6 +36,7 @@ $ date +%s
|
|||||||
Alternatively, you can use a serial number as part of the tag. Some CI platforms will provide a
|
Alternatively, you can use a serial number as part of the tag. Some CI platforms will provide a
|
||||||
build number in an environment variable, but that may not be reliable to use as a serial number --
|
build number in an environment variable, but that may not be reliable to use as a serial number --
|
||||||
check the platform documentation.
|
check the platform documentation.
|
||||||
|
For example, Github makes availabe the variable `github.run_number` which can be used as a reliable ever increasing serial number.
|
||||||
|
|
||||||
A commit count can be a reasonable stand-in for a serial number, if you build an image per commit
|
A commit count can be a reasonable stand-in for a serial number, if you build an image per commit
|
||||||
and you don't rewrite the branch in question:
|
and you don't rewrite the branch in question:
|
||||||
@@ -105,6 +106,39 @@ jobs:
|
|||||||
${{ env.IMAGE }}:${{ steps.prep.outputs.BUILD_ID }}
|
${{ env.IMAGE }}:${{ steps.prep.outputs.BUILD_ID }}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Alternative example utilizing github.run_number
|
||||||
|
|
||||||
|
Here is another example example of a [GitHub Actions job][gha-syntax] which tags images using Github action's built in `run_number`
|
||||||
|
and the git SHA1:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
jobs:
|
||||||
|
build-push:
|
||||||
|
env:
|
||||||
|
IMAGE: org/my-app
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
# These are prerequisites for the docker build step
|
||||||
|
- name: Set up QEMU
|
||||||
|
uses: docker/setup-qemu-action@v1
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v1
|
||||||
|
- name: Login to DockerHub
|
||||||
|
uses: docker/login-action@v1
|
||||||
|
with:
|
||||||
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Build and publish container image with tag
|
||||||
|
uses: docker/build-push-action@v2
|
||||||
|
with:
|
||||||
|
push: true
|
||||||
|
context: .
|
||||||
|
file: ./Dockerfile
|
||||||
|
tags: |
|
||||||
|
${{ env.IMAGE }}:${{ github.sha }}-${{ github.run_number }}
|
||||||
|
```
|
||||||
|
|
||||||
## Using in an `ImagePolicy` object
|
## Using in an `ImagePolicy` object
|
||||||
|
|
||||||
When creating an `ImagePolicy` object, you will need to extract just the timestamp part of the tag,
|
When creating an `ImagePolicy` object, you will need to extract just the timestamp part of the tag,
|
||||||
@@ -112,7 +146,7 @@ using the `tagFilter` field. You can filter for a particular branch to restrict
|
|||||||
built from that branch.
|
built from that branch.
|
||||||
|
|
||||||
Here is an example that filters for only images built from `main` branch, and selects the most
|
Here is an example that filters for only images built from `main` branch, and selects the most
|
||||||
recent according the timestamp (created with `date +%s`):
|
recent according to a timestamp (created with `date +%s`) or according to the run number (`github.run_number` for example):
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
apiVersion: image.toolkit.fluxcd.io/v1alpha2
|
apiVersion: image.toolkit.fluxcd.io/v1alpha2
|
||||||
@@ -124,6 +158,7 @@ spec:
|
|||||||
imageRepositoryRef:
|
imageRepositoryRef:
|
||||||
name: image-repo
|
name: image-repo
|
||||||
filterTags:
|
filterTags:
|
||||||
|
## use "pattern: '(?P<ts>.*)-.+'" if you copied the workflow example using github.run_number
|
||||||
pattern: '^main-[a-f0-9]+-(?P<ts>[0-9]+)'
|
pattern: '^main-[a-f0-9]+-(?P<ts>[0-9]+)'
|
||||||
extract: '$ts'
|
extract: '$ts'
|
||||||
policy:
|
policy:
|
||||||
|
|||||||
Reference in New Issue
Block a user