@@ -38,36 +38,113 @@ jobs:
38
38
- uses : actions/checkout@v4
39
39
- name : Update Rust
40
40
run : rustup update stable && rustup default stable
41
+ - name : Docker meta
42
+ id : meta
43
+ uses : docker/metadata-action@v5
44
+ with :
45
+ images : ${{ env.REGISTRY }}/${{ github.repository_owner }}/sprocket
41
46
- name : Log in to the Container registry
42
47
uses : docker/login-action@v3
43
48
with :
44
49
registry : ${{ env.REGISTRY }}
45
50
username : ${{ github.actor }}
46
51
password : ${{ secrets.GITHUB_TOKEN }}
47
- - uses : docker/setup-buildx-action@v3
48
- - uses : docker/build-push-action@v6
52
+ - name : Set up Docker Buildx
53
+ uses : docker/setup-buildx-action@v3
54
+ - name : Build and push by digest
55
+ id : build
56
+ uses : docker/build-push-action@v6
49
57
with :
50
- push : true
51
- tags : ${{ env.REGISTRY }}/${{ github.repository_owner }}/sprocket:${{ github.ref_name }}
52
58
platforms : linux/amd64
59
+ labels : ${{ steps.meta.outputs.labels }}
60
+ tags : ${{ env.REGISTRY }}/${{ github.repository_owner }}/sprocket
61
+ outputs : type=image,push-by-digest=true,name-canonical=true,push=true
62
+ - name : Export digest
63
+ run : |
64
+ mkdir -p ${{ runner.temp }}/digests
65
+ digest="${{ steps.build.outputs.digest }}"
66
+ touch "${{ runner.temp }}/digests/${digest#sha256:}"
67
+ - name : Upload digest
68
+ uses : actions/upload-artifact@v4
69
+ with :
70
+ name : digests-x86
71
+ path : ${{ runner.temp }}/digests/*
72
+ if-no-files-found : error
73
+ retention-days : 1
53
74
docker-arm :
54
75
runs-on : ubuntu-24.04-arm
55
76
steps :
56
77
- uses : actions/checkout@v4
57
78
- name : Update Rust
58
79
run : rustup update stable && rustup default stable
80
+ - name : Docker meta
81
+ id : meta
82
+ uses : docker/metadata-action@v5
83
+ with :
84
+ images : ${{ env.REGISTRY }}/${{ github.repository_owner }}/sprocket
59
85
- name : Log in to the Container registry
60
86
uses : docker/login-action@v3
61
87
with :
62
88
registry : ${{ env.REGISTRY }}
63
89
username : ${{ github.actor }}
64
90
password : ${{ secrets.GITHUB_TOKEN }}
65
- - uses : docker/setup-buildx-action@v3
66
- - uses : docker/build-push-action@v6
91
+ - name : Set up Docker Buildx
92
+ uses : docker/setup-buildx-action@v3
93
+ - name : Build and push by digest
94
+ id : build
95
+ uses : docker/build-push-action@v6
67
96
with :
68
- push : true
69
- tags : ${{ env.REGISTRY }}/${{ github.repository_owner }}/sprocket:${{ github.ref_name }}
70
97
platforms : linux/arm64
98
+ labels : ${{ steps.meta.outputs.labels }}
99
+ tags : ${{ env.REGISTRY }}/${{ github.repository_owner }}/sprocket
100
+ outputs : type=image,push-by-digest=true,name-canonical=true,push=true
101
+ - name : Export digest
102
+ run : |
103
+ mkdir -p ${{ runner.temp }}/digests
104
+ digest="${{ steps.build.outputs.digest }}"
105
+ touch "${{ runner.temp }}/digests/${digest#sha256:}"
106
+ - name : Upload digest
107
+ uses : actions/upload-artifact@v4
108
+ with :
109
+ name : digests-arm
110
+ path : ${{ runner.temp }}/digests/*
111
+ if-no-files-found : error
112
+ retention-days : 1
113
+ docker-merge-manifests :
114
+ runs-on : ubuntu-latest
115
+ needs : [docker-x86, docker-arm]
116
+ steps :
117
+ - name : Download digests
118
+ uses : actions/download-artifact@v4
119
+ with :
120
+ path : ${{ runner.temp }}/digests
121
+ pattern : digests-*
122
+ merge-multiple : true
123
+ - name : Log in to the Container registry
124
+ uses : docker/login-action@v3
125
+ with :
126
+ registry : ${{ env.REGISTRY }}
127
+ username : ${{ github.actor }}
128
+ password : ${{ secrets.GITHUB_TOKEN }}
129
+ - name : Set up Docker Buildx
130
+ uses : docker/setup-buildx-action@v3
131
+ - name : Docker meta
132
+ id : meta
133
+ uses : docker/metadata-action@v5
134
+ with :
135
+ images : ${{ env.REGISTRY }}/${{ github.repository_owner }}/sprocket
136
+ tags : type=semver,pattern=v{{version}}
137
+ labels : |
138
+ org.opencontainers.image.source=https://github.com/${{ github.repository }}
139
+ org.opencontainers.image.version=v{{version}}
140
+ - name : Create manifest list and push
141
+ working-directory : ${{ runner.temp }}/digests
142
+ run : |
143
+ docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \
144
+ $(printf '${{ env.REGISTRY }}/${{ github.repository_owner }}/sprocket@sha256:%s ' *)
145
+ - name : Inspect image
146
+ run : |
147
+ docker buildx imagetools inspect ${{ env.REGISTRY }}/${{ github.repository_owner }}/sprocket:${{ steps.meta.outputs.version }}
71
148
build_artifacts_win :
72
149
runs-on : windows-latest
73
150
strategy :
0 commit comments