6
6
- staging
7
7
- prod
8
8
pull_request :
9
+ types : [opened, synchronize, labeled]
9
10
branches :
10
11
- master
11
12
workflow_dispatch :
12
13
jobs :
13
- docker :
14
+ docker-build :
15
+ if : github.event_name != 'pull_request' || contains(github.event.pull_request.labels.*.name, 'build-container')
14
16
runs-on : ubuntu-22.04
15
17
name : Docker Build and Push
16
18
steps :
17
- - uses : actions/checkout@v4
19
+ - name : Generate Auth Token
20
+ uses : actions/create-github-app-token@v1
21
+ id : app-token
22
+ with :
23
+ app-id : ${{ secrets.APP_ID }}
24
+ private-key : ${{ secrets.APP_PRIVATE_KEY }}
25
+ owner : metacpan
18
26
- name : Log in to Docker Hub
19
27
uses : docker/login-action@v3
20
28
with :
21
29
username : ${{ secrets.DOCKER_HUB_USER }}
22
30
password : ${{ secrets.DOCKER_HUB_TOKEN }}
23
31
- name : Set up Docker Buildx
24
32
uses : docker/setup-buildx-action@v3
25
- - name : Generate Auth Token
26
- uses : actions/create-github-app-token@v1
27
- id : app-token
33
+ - uses : actions/checkout@v4
28
34
with :
29
- app-id : ${{ secrets.APP_ID }}
30
- private-key : ${{ secrets.APP_PRIVATE_KEY }}
35
+ token : ${{ steps.app-token.outputs.token }}
31
36
- name : Build test image
32
37
id : docker-build-test
33
- uses : docker/build-push-action@v5
38
+ uses : docker/build-push-action@v6
34
39
with :
35
40
target : test
36
41
push : false
37
42
load : true
38
- cache-from : type=gha
39
- cache-to : type=gha,mode=max
40
43
- name : Run Perl tests
41
44
run : docker run -i ${{ steps.docker-build-test.outputs.imageid }}
42
45
- name : Docker meta
@@ -47,18 +50,19 @@ jobs:
47
50
flavor : |
48
51
latest=false
49
52
tags : |
50
- type=sha,format=long,priority=1000
53
+ type=sha,format=long,priority=2000,enable={{is_default_branch}}
51
54
type=ref,event=branch
52
55
type=ref,event=pr
53
56
type=raw,value=latest,enable={{is_default_branch}}
57
+ env :
58
+ DOCKER_METADATA_ANNOTATIONS_LEVELS : manifest,index
54
59
- name : Build and push
55
- uses : docker/build-push-action@v5
60
+ uses : docker/build-push-action@v6
56
61
with :
57
62
push : true
58
63
tags : ${{ steps.meta.outputs.tags }}
64
+ labels : ${{ steps.meta.outputs.labels }}
59
65
annotations : ${{ steps.meta.outputs.annotations }}
60
- cache-from : type=gha
61
- cache-to : type=gha,mode=max
62
66
- name : Update deployed image
63
67
if : ${{ contains( fromJSON(steps.meta.outputs.json).tags, format('{0}:latest', github.repository)) }}
64
68
uses : benc-uk/workflow-dispatch@v1
0 commit comments