@@ -15,14 +15,19 @@ jobs:
1515 build :
1616 # Skip forks - they don't have write access to GHCR anyway
1717 if : github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository
18- runs-on : ubuntu-latest
1918 permissions :
2019 contents : read
2120 packages : write
2221
2322 strategy :
2423 matrix :
25- arch : [amd64, arm64]
24+ include :
25+ - arch : amd64
26+ runner : ubuntu-24.04
27+ - arch : arm64
28+ runner : ubuntu-24.04-arm
29+
30+ runs-on : ${{ matrix.runner }}
2631
2732 steps :
2833 - name : Checkout
3338 with :
3439 go-version : " 1.25"
3540
36- - name : Set up QEMU
37- uses : docker/setup-qemu-action@v3
38-
3941 - name : Set up Docker Buildx
4042 uses : docker/setup-buildx-action@v3
4143
@@ -49,66 +51,37 @@ jobs:
4951 - name : Build plugin rootfs
5052 run : |
5153 docker build \
52- --platform linux/${{ matrix.arch }} \
53- -t tslink:rootfs-${{ matrix.arch }} \
54+ -t tslink:rootfs \
5455 -f docker/Dockerfile \
5556 .
5657
5758 mkdir -p docker/rootfs
58- docker create --name tslink-tmp tslink:rootfs-${{ matrix.arch }}
59+ docker create --name tslink-tmp tslink:rootfs
5960 docker export tslink-tmp | tar -x -C docker/rootfs
6061 docker rm tslink-tmp
6162
62- - name : Create and push plugin
63- run : |
64- docker plugin create ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:sha-${{ github.sha }}-${{ matrix.arch }} docker/
65- docker plugin push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:sha-${{ github.sha }}-${{ matrix.arch }}
66-
67- manifest :
68- needs : build
69- if : github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository
70- runs-on : ubuntu-latest
71- permissions :
72- contents : read
73- packages : write
74-
75- steps :
76- - name : Log in to GHCR
77- uses : docker/login-action@v3
78- with :
79- registry : ${{ env.REGISTRY }}
80- username : ${{ github.actor }}
81- password : ${{ secrets.GITHUB_TOKEN }}
82-
83- - name : Create and push PR manifest
63+ - name : Push PR plugin
8464 if : github.event_name == 'pull_request'
8565 run : |
86- docker manifest create ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:pr-${{ github.event.pull_request.number }} \
87- ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:sha-${{ github.sha }}-amd64 \
88- ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:sha-${{ github.sha }}-arm64
89- docker manifest push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:pr-${{ github.event.pull_request.number }}
66+ docker plugin create ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:pr-${{ github.event.pull_request.number }}-${{ matrix.arch }} docker/
67+ docker plugin push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:pr-${{ github.event.pull_request.number }}-${{ matrix.arch }}
9068
91- - name : Create and push main manifest
69+ - name : Push main plugin
9270 if : github.ref == 'refs/heads/main'
9371 run : |
94- docker manifest create ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:main \
95- ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:sha-${{ github.sha }}-amd64 \
96- ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:sha-${{ github.sha }}-arm64
97- docker manifest push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:main
72+ docker plugin create ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:main-${{ matrix.arch }} docker/
73+ docker plugin push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:main-${{ matrix.arch }}
9874
99- - name : Create and push version manifests
75+ - name : Push version plugin
10076 if : startsWith(github.ref, 'refs/tags/v')
10177 run : |
10278 VERSION=${GITHUB_REF#refs/tags/}
10379
104- # Create versioned manifest
105- docker manifest create ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${VERSION} \
106- ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:sha-${{ github.sha }}-amd64 \
107- ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:sha-${{ github.sha }}-arm64
108- docker manifest push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${VERSION}
109-
110- # Create latest manifest
111- docker manifest create ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest \
112- ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:sha-${{ github.sha }}-amd64 \
113- ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:sha-${{ github.sha }}-arm64
114- docker manifest push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest
80+ docker plugin create ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${VERSION}-${{ matrix.arch }} docker/
81+ docker plugin push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${VERSION}-${{ matrix.arch }}
82+
83+ # Also push as latest-<arch>
84+ docker plugin disable ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${VERSION}-${{ matrix.arch }} || true
85+ docker plugin rm ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest-${{ matrix.arch }} || true
86+ docker plugin create ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest-${{ matrix.arch }} docker/
87+ docker plugin push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest-${{ matrix.arch }}
0 commit comments