44 types :
55 - labeled
66
7+ permissions :
8+ contents : read
9+ pull-requests : write
10+
711env :
8- TELEPRESENCE_REGISTRY : ghcr.io/telepresenceio
12+ TELEPRESENCE_REGISTRY : local
913
1014jobs :
11- build_images :
15+ build_and_test :
1216 if : ${{ github.event.label.name == 'ok to test' || github.event.label.name == 'compatibility test' }}
13- runs-on : ubuntu-latest
14- outputs :
15- telepresenceVersion : ${{ steps.version.outputs.version }}
16- telepresenceSemver : ${{ steps.version.outputs.semver }}
17+ strategy :
18+ fail-fast : false
19+ matrix :
20+ runners :
21+ - ubuntu-latest
22+ # Re-enable when we can run a proper cluster. Colima almost works on macOS but the very limited
23+ # resources available make the test fail very often. On windows, we'll need WSL2
24+ # - macos-latest
25+ # - windows-latest
26+ runs-on : ${{ matrix.runners }}
1727 steps :
1828 - name : Remove ok to test label
1929 if : github.event.label.name == 'ok to test'
@@ -33,62 +43,27 @@ jobs:
3343 with :
3444 fetch-depth : 0
3545 ref : " ${{ github.event.pull_request.head.sha }}"
46+ - name : install dependencies
47+ uses : ./.github/actions/install-dependencies
3648 - name : Get Telepresence Version
3749 id : version
3850 run : |
3951 v=$(go run build-aux/genversion/main.go ${{github.run_id}})
4052 echo "TELEPRESENCE_VERSION=$v" >> "$GITHUB_ENV"
4153 echo "TELEPRESENCE_SEMVER=${v#v}" >> "$GITHUB_ENV"
42- echo "version=$v" >> $GITHUB_OUTPUT
43- echo "semver=${v#v}" >> $GITHUB_OUTPUT
44- - name : Setup docker buildx
45- uses : docker/setup-buildx-action@v3
46- with :
47- platforms : linux/amd64,linux/arm64
48- - name : Build image dependencies
49- run : make images-deps
50- - name : Log in to registry
51- run : echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin
52- - name : Push client image
53- run : |
54- docker buildx build --platform=linux/amd64,linux/arm64 --build-arg TELEPRESENCE_VERSION=${{env.TELEPRESENCE_SEMVER}} \
55- --push --tag ${{env.TELEPRESENCE_REGISTRY}}/telepresence:${{env.TELEPRESENCE_SEMVER}} -f build-aux/docker/images/Dockerfile.client .
56- - name : Push tel2 image
57- run : |
58- docker buildx build --platform=linux/amd64,linux/arm64 --build-arg TELEPRESENCE_VERSION=${{env.TELEPRESENCE_SEMVER}} \
59- --push --tag ${{env.TELEPRESENCE_REGISTRY}}/tel2:${{env.TELEPRESENCE_SEMVER}} -f build-aux/docker/images/Dockerfile.traffic .
60- - name : Log out from registry
61- if : always()
62- run : docker logout
63-
64- run_tests :
65- if : ${{ github.event.label.name == 'ok to test' || github.event.label.name == 'compatibility test' }}
66- strategy :
67- fail-fast : false
68- matrix :
69- runners :
70- - ubuntu-latest
71- # Re-enable when we can run a proper cluster. Colima almost works on macOS but the very limited
72- # resources available make the test fail very often. On windows, we'll need WSL2
73- # - macos-latest
74- # - windows-latest
75- runs-on : ${{ matrix.runners }}
76- needs : build_images
77- env :
78- TELEPRESENCE_VERSION : ${{ needs.build_images.outputs.telepresenceVersion }}
79- steps :
80- - uses : actions/checkout@v4
81- with :
82- ref : " ${{ github.event.pull_request.head.sha }}"
83- - name : install dependencies
84- uses : ./.github/actions/install-dependencies
8554 - name : Start minikube
8655 if : runner.os == 'Linux'
8756 uses : medyagh/setup-minikube@latest
8857 with :
8958 kubernetes-version : v1.33.5
9059 - name : Build client
9160 run : make build
61+ - name : Build images
62+ run : make client-image tel2-image
63+ - name : Load images into minikube
64+ run : |
65+ minikube image load ${{env.TELEPRESENCE_REGISTRY}}/telepresence:${{env.TELEPRESENCE_SEMVER}}
66+ minikube image load ${{env.TELEPRESENCE_REGISTRY}}/tel2:${{env.TELEPRESENCE_SEMVER}}
9267 - name : Run integration tests
9368 if : github.event.label.name == 'ok to test'
9469 uses : nick-fields/retry/@v3
10681 if : ${{ github.event.label.name == 'compatibility test' }}
10782 env :
10883 DEV_MANAGER_VERSION : " 2.24.1"
84+ DEV_MANAGER_REGISTRY : ghcr.io/telepresenceio
10985 uses : nick-fields/retry/@v3
11086 with :
11187 max_attempts : 3
12197 if : ${{ github.event.label.name == 'compatibility test' }}
12298 env :
12399 DEV_CLIENT_VERSION : " 2.24.1"
100+ DEV_CLIENT_REGISTRY : ghcr.io/telepresenceio
124101 uses : nick-fields/retry/@v3
125102 with :
126103 max_attempts : 3
@@ -136,30 +113,3 @@ jobs:
136113 env :
137114 LOG_SUFFIX : " ${{ runner.os }}-${{ runner.arch }}-${{ matrix.clusters.distribution }}-${{ matrix.clusters.version }}"
138115 if : ${{ always() }}
139- purge_images :
140- if : ${{ always() }}
141- runs-on : ubuntu-latest
142- permissions :
143- packages : write
144- needs :
145- - build_images
146- - run_tests
147- steps :
148- - name : Delete tel2 and telepresence image
149- uses : dataaxiom/ghcr-cleanup-action@v1
150- continue-on-error : true
151- with :
152- owner : telepresenceio
153- packages : tel2,telepresence
154- token : ${{ secrets.GITHUB_TOKEN }}
155- delete-tags : ${{ needs.build_images.outputs.telepresenceSemver }}
156- - name : Prune tel2 and telepresence
157- uses : dataaxiom/ghcr-cleanup-action@v1
158- with :
159- owner : telepresenceio
160- packages : tel2,telepresence
161- token : ${{ secrets.GITHUB_TOKEN }}
162- delete-untagged : true
163- delete-ghost-images : true
164- delete-partial-images : true
165- delete-orphaned-images : true
0 commit comments