Skip to content

Commit 7751ec5

Browse files
committed
ci: gha test workflow for integration and unit test
Signed-off-by: CrazyMax <[email protected]>
1 parent de02776 commit 7751ec5

4 files changed

Lines changed: 236 additions & 33 deletions

File tree

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
name: 'Setup Runner'
2+
description: 'Composite action to set up the GitHub Runner for jobs in the test.yml workflow'
3+
4+
runs:
5+
using: composite
6+
steps:
7+
- run: |
8+
sudo modprobe ipv6
9+
sudo modprobe ip6table_filter
10+
echo '{"experimental":true,"ipv6":true,"fixed-cidr-v6":"2001:db8:1::/64"}' | sudo tee /etc/docker/daemon.json
11+
sudo service docker restart
12+
shell: bash

.github/workflows/ci.yml

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -195,35 +195,3 @@ jobs:
195195
TESTFLAGS: "-v --parallel=1 --timeout=30m --run=//worker=dockerd$"
196196
SKIP_INTEGRATION_TESTS: "${{ matrix.skip-integration-tests }}"
197197
working-directory: buildkit
198-
199-
dev:
200-
runs-on: ubuntu-20.04
201-
strategy:
202-
fail-fast: false
203-
matrix:
204-
mode:
205-
- ""
206-
- systemd
207-
steps:
208-
-
209-
name: Prepare
210-
run: |
211-
if [ "${{ matrix.mode }}" = "systemd" ]; then
212-
echo "SYSTEMD=true" >> $GITHUB_ENV
213-
fi
214-
-
215-
name: Checkout
216-
uses: actions/checkout@v3
217-
-
218-
name: Set up Docker Buildx
219-
uses: docker/setup-buildx-action@v1
220-
-
221-
name: Build dev image
222-
uses: docker/bake-action@v1
223-
with:
224-
targets: dev
225-
set: |
226-
*.cache-from=type=gha,scope=cross-bundle-linux-amd64
227-
*.cache-from=type=gha,scope=dev${{ matrix.mode }}
228-
*.cache-to=type=gha,scope=dev${{ matrix.mode }},mode=max
229-
*.output=type=cacheonly

.github/workflows/test.yml

Lines changed: 215 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ on:
1010
- 'v*'
1111
pull_request:
1212

13+
env:
14+
DOCKER_EXPERIMENTAL: 1
15+
1316
jobs:
1417
smoke:
1518
runs-on: ubuntu-20.04
@@ -47,3 +50,215 @@ jobs:
4750
*.cache-to=type=gha,scope=binary-smoketest-${{ env.PLATFORM_PAIR }}
4851
env:
4952
DOCKER_LINKMODE: static
53+
54+
devimage:
55+
runs-on: ubuntu-20.04
56+
strategy:
57+
fail-fast: false
58+
matrix:
59+
mode:
60+
- ""
61+
- systemd
62+
steps:
63+
-
64+
name: Prepare
65+
run: |
66+
if [ "${{ matrix.mode }}" = "systemd" ]; then
67+
echo "SYSTEMD=true" >> $GITHUB_ENV
68+
fi
69+
-
70+
name: Checkout
71+
uses: actions/checkout@v3
72+
-
73+
name: Set up Docker Buildx
74+
uses: docker/setup-buildx-action@v1
75+
-
76+
name: Build dev image
77+
uses: docker/bake-action@v1
78+
with:
79+
targets: dev
80+
set: |
81+
*.cache-from=type=gha,scope=cross-bundle-linux-amd64
82+
*.cache-from=type=gha,scope=dev${{ matrix.mode }}
83+
*.cache-to=type=gha,scope=dev${{ matrix.mode }},mode=max
84+
*.output=type=cacheonly
85+
86+
unit:
87+
runs-on: ubuntu-20.04
88+
needs:
89+
- devimage
90+
steps:
91+
-
92+
name: Checkout
93+
uses: actions/checkout@v3
94+
-
95+
name: Set up runner
96+
uses: ./.github/actions/setup-runner
97+
-
98+
name: Set up Docker Buildx
99+
uses: docker/setup-buildx-action@v1
100+
-
101+
name: Build dev image
102+
uses: docker/bake-action@v1
103+
with:
104+
targets: dev
105+
set: |
106+
dev.cache-from=type=gha,scope=dev
107+
-
108+
name: Test
109+
run: |
110+
make test-unit
111+
112+
docker-py:
113+
runs-on: ubuntu-20.04
114+
needs:
115+
- devimage
116+
steps:
117+
-
118+
name: Checkout
119+
uses: actions/checkout@v3
120+
-
121+
name: Set up runner
122+
uses: ./.github/actions/setup-runner
123+
-
124+
name: Set up Docker Buildx
125+
uses: docker/setup-buildx-action@v1
126+
-
127+
name: Build dev image
128+
uses: docker/bake-action@v1
129+
with:
130+
targets: dev
131+
set: |
132+
dev.cache-from=type=gha,scope=dev
133+
-
134+
name: Test
135+
run: |
136+
make test-docker-py
137+
-
138+
name: Test daemon logs
139+
if: always()
140+
run: |
141+
cat bundles/test-docker-py/docker.log
142+
143+
integration-flaky:
144+
runs-on: ubuntu-20.04
145+
needs:
146+
- devimage
147+
steps:
148+
-
149+
name: Checkout
150+
uses: actions/checkout@v3
151+
-
152+
name: Set up runner
153+
uses: ./.github/actions/setup-runner
154+
-
155+
name: Set up Docker Buildx
156+
uses: docker/setup-buildx-action@v1
157+
-
158+
name: Build dev image
159+
uses: docker/bake-action@v1
160+
with:
161+
targets: dev
162+
set: |
163+
dev.cache-from=type=gha,scope=dev
164+
-
165+
name: Test
166+
run: |
167+
make test-integration-flaky
168+
env:
169+
TEST_SKIP_INTEGRATION_CLI: 1
170+
171+
integration:
172+
runs-on: ubuntu-20.04
173+
needs:
174+
- devimage
175+
strategy:
176+
fail-fast: false
177+
matrix:
178+
mode:
179+
- ""
180+
- rootless
181+
- cgroup2
182+
steps:
183+
-
184+
name: Checkout
185+
uses: actions/checkout@v3
186+
-
187+
name: Set up runner
188+
uses: ./.github/actions/setup-runner
189+
-
190+
name: Prepare
191+
run: |
192+
CACHE_DEV_SCOPE=dev
193+
if [ "${{ matrix.mode }}" = "rootless" ]; then
194+
echo "DOCKER_ROOTLESS=1" >> $GITHUB_ENV
195+
fi
196+
if [ "${{ matrix.mode }}" = "cgroup2" ]; then
197+
echo "SYSTEMD=true" >> $GITHUB_ENV
198+
CACHE_DEV_SCOPE="${CACHE_DEV_SCOPE}systemd"
199+
fi
200+
echo "CACHE_DEV_SCOPE=${CACHE_DEV_SCOPE}" >> $GITHUB_ENV
201+
-
202+
name: Set up Docker Buildx
203+
uses: docker/setup-buildx-action@v1
204+
-
205+
name: Build dev image
206+
uses: docker/bake-action@v1
207+
with:
208+
targets: dev
209+
set: |
210+
dev.cache-from=type=gha,scope=${{ env.CACHE_DEV_SCOPE }}
211+
-
212+
name: Test
213+
run: |
214+
make test-integration
215+
env:
216+
TEST_SKIP_INTEGRATION_CLI: 1
217+
-
218+
name: Test daemon logs
219+
if: always()
220+
run: |
221+
cat bundles/test-integration/docker.log
222+
223+
integration-cli:
224+
runs-on: ubuntu-20.04
225+
needs:
226+
- devimage
227+
strategy:
228+
fail-fast: false
229+
matrix:
230+
testsuite:
231+
- DockerSuite
232+
- DockerNetworkSuite|DockerHubPullSuite|DockerRegistrySuite|DockerSchema1RegistrySuite|DockerRegistryAuthTokenSuite|DockerRegistryAuthHtpasswdSuite
233+
- DockerSwarmSuite
234+
- DockerDaemonSuite
235+
- DockerExternalVolumeSuite
236+
steps:
237+
-
238+
name: Checkout
239+
uses: actions/checkout@v3
240+
-
241+
name: Set up runner
242+
uses: ./.github/actions/setup-runner
243+
-
244+
name: Set up Docker Buildx
245+
uses: docker/setup-buildx-action@v1
246+
-
247+
name: Build dev image
248+
uses: docker/bake-action@v1
249+
with:
250+
targets: dev
251+
set: |
252+
dev.cache-from=type=gha,scope=dev
253+
-
254+
name: Test
255+
run: |
256+
make test-integration
257+
env:
258+
TEST_SKIP_INTEGRATION: 1
259+
TESTFLAGS: "-test.run Test(${{ matrix.testsuite }})/"
260+
-
261+
name: Test daemon logs
262+
if: always()
263+
run: |
264+
cat bundles/test-integration/docker.log

Makefile

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ DOCKER_IMAGE := docker-dev
112112
DOCKER_PORT_FORWARD := $(if $(DOCKER_PORT),-p "$(DOCKER_PORT)",)
113113
DELVE_PORT_FORWARD := $(if $(DELVE_PORT),-p "$(DELVE_PORT)",)
114114

115-
DOCKER_FLAGS := $(DOCKER) run --rm -i --privileged $(DOCKER_CONTAINER_NAME) $(DOCKER_ENVS) $(DOCKER_MOUNT) $(DOCKER_PORT_FORWARD) $(DELVE_PORT_FORWARD)
115+
DOCKER_FLAGS := $(DOCKER) run --rm --privileged $(DOCKER_CONTAINER_NAME) $(DOCKER_ENVS) $(DOCKER_MOUNT) $(DOCKER_PORT_FORWARD) $(DELVE_PORT_FORWARD)
116116
BUILD_APT_MIRROR := $(if $(DOCKER_BUILD_APT_MIRROR),--build-arg APT_MIRROR=$(DOCKER_BUILD_APT_MIRROR))
117117
export BUILD_APT_MIRROR
118118

@@ -131,6 +131,14 @@ ifeq ($(INTERACTIVE), 1)
131131
DOCKER_FLAGS += -t
132132
endif
133133

134+
# on GitHub Runners input device is not a TTY but we allocate a pseudo-one,
135+
# otherwise keep STDIN open even if not attached if not a GitHub Runner.
136+
ifeq ($(GITHUB_ACTIONS),true)
137+
DOCKER_FLAGS += -t
138+
else
139+
DOCKER_FLAGS += -i
140+
endif
141+
134142
DOCKER_RUN_DOCKER := $(DOCKER_FLAGS) "$(DOCKER_IMAGE)"
135143

136144
DOCKER_BUILD_ARGS += --build-arg=GO_VERSION

0 commit comments

Comments
 (0)