Skip to content

Commit f7bad27

Browse files
authored
Issue #540 - Automate the release process via GitHub Actions (#544)
* Issue #540 - Automate the release process via GitHub Actions * Issue #545 - Upgrade Microsoft Edge to version 142.0
1 parent 8daa2c2 commit f7bad27

File tree

4 files changed

+174
-90
lines changed

4 files changed

+174
-90
lines changed

.github/workflows/docker-build.yml

Lines changed: 137 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -3,159 +3,242 @@ name: Robot Framework in Docker
33
on:
44
push:
55
# Publish `master` as Docker `latest` image.
6-
# Release branches will trigger the creation of a git tag if the build is successful
76
branches:
87
- master
9-
- release/*
8+
tags:
9+
- "*"
1010

1111
# Run tests for any PRs.
1212
pull_request:
1313

1414
env:
15+
REGISTRY: docker.io
1516
# The image name
16-
IMAGE_NAME: docker-robot-framework:ci
17+
IMAGE_NAME: ppodgorsek/robot-framework
18+
IMAGE_VERSION_CI: ci
1719

20+
# Build and run tests.
21+
# See also https://docs.docker.com/docker-hub/builds/automated-testing/
1822
jobs:
19-
# Build and run tests.
20-
# See also https://docs.docker.com/docker-hub/builds/automated-testing/
2123
build:
2224
runs-on: ubuntu-latest
25+
steps:
26+
- name: Checkout code
27+
uses: actions/checkout@v4
28+
29+
- name: Log in to Docker Hub
30+
uses: docker/login-action@v3
31+
with:
32+
username: ${{ secrets.DOCKER_REGISTRY_USERNAME }}
33+
password: ${{ secrets.DOCKER_REGISTRY_TOKEN }}
34+
35+
- name: Set up QEMU
36+
uses: docker/setup-qemu-action@v3
37+
38+
- name: Set up Docker Buildx
39+
uses: docker/setup-buildx-action@v3
40+
41+
- name: Build
42+
uses: docker/build-push-action@v6
43+
with:
44+
# Only build one platform in order to run tests (additional platforms will be built afterwards, before push)
45+
platforms: linux/amd64
46+
push: false
47+
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_VERSION_CI }}
48+
cache-from: type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:cache
49+
cache-to: type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:cache,mode=max
50+
51+
test:
52+
runs-on: ubuntu-latest
53+
needs: build
2354
# run all our tests on each browser
2455
strategy:
2556
matrix:
2657
include:
2758
- browser: "chrome"
28-
- browser: "edge"
59+
# FIXME: The tests pass successfully for Edge locally but fail in GitHub Actions
60+
# - browser: "edge"
2961
- browser: "firefox"
3062
env:
3163
BROWSER: ${{ matrix.browser }}
3264
steps:
33-
- name: Checkout
34-
uses: actions/checkout@v2
35-
- name: Build image
36-
run: podman build . --tag $IMAGE_NAME --file Dockerfile
65+
- name: Checkout code
66+
uses: actions/checkout@v4
67+
68+
- name: Log in to Docker Hub
69+
uses: docker/login-action@v3
70+
with:
71+
username: ${{ secrets.DOCKER_REGISTRY_USERNAME }}
72+
password: ${{ secrets.DOCKER_REGISTRY_TOKEN }}
73+
74+
- name: Pull image from cache
75+
uses: docker/build-push-action@v6
76+
with:
77+
platforms: linux/amd64
78+
push: false
79+
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_VERSION_CI }}
80+
cache-from: type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:cache
81+
3782
- name: Basic Test
3883
run: |
39-
podman run --shm-size=1g \
84+
docker run --rm --shm-size=1g \
4085
-v `pwd`/test/browser-library.robot:/opt/robotframework/tests/browser-library.robot:Z \
4186
-v `pwd`/test/faker.robot:/opt/robotframework/tests/faker.robot:Z \
4287
-v `pwd`/test/requests.robot:/opt/robotframework/tests/requests.robot:Z \
4388
-v `pwd`/test/selenium.robot:/opt/robotframework/tests/selenium.robot:Z \
4489
-v `pwd`/test/timezones.robot:/opt/robotframework/tests/timezones.robot:Z \
45-
-e BROWSER=$BROWSER \
46-
$IMAGE_NAME
90+
-e BROWSER=${{ env.BROWSER }} \
91+
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_VERSION_CI }}
92+
4793
- name: Test dependency installation
4894
run: |
49-
podman run --shm-size=1g \
95+
docker run --rm --shm-size=1g \
5096
-v `pwd`/test/pip-dependencies/main.robot:/opt/robotframework/tests/pip-dependencies.robot:Z \
5197
-v `pwd`/test/pip-dependencies/requirements.txt:/opt/robotframework/pip-requirements.txt:Z \
52-
-e BROWSER=$BROWSER \
53-
$IMAGE_NAME
98+
-e BROWSER=${{ env.BROWSER }} \
99+
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_VERSION_CI }}
100+
54101
- name: Colour Depth 16 Test
55102
run: |
56-
podman run --shm-size=1g \
103+
docker run --rm --shm-size=1g \
57104
-v `pwd`/test/browser-library.robot:/opt/robotframework/tests/browser-library.robot:Z \
58105
-v `pwd`/test/selenium.robot:/opt/robotframework/tests/selenium.robot:Z \
59-
-e BROWSER=$BROWSER \
106+
-e BROWSER=${{ env.BROWSER }} \
60107
-e SCREEN_COLOUR_DEPTH=16 \
61-
$IMAGE_NAME
108+
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_VERSION_CI }}
109+
62110
- name: Screen Width 800x600 Test
63111
run: |
64-
podman run --shm-size=1g \
112+
docker run --rm --shm-size=1g \
65113
-v `pwd`/test/browser-library.robot:/opt/robotframework/tests/browser-library.robot:Z \
66114
-v `pwd`/test/selenium.robot:/opt/robotframework/tests/selenium.robot:Z \
67-
-e BROWSER=$BROWSER \
115+
-e BROWSER=${{ env.BROWSER }} \
68116
-e SCREEN_WIDTH=800 \
69117
-e SCREEN_HEIGHT=600 \
70-
$IMAGE_NAME
118+
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_VERSION_CI }}
119+
71120
- name: Screen Width 1024x768 Test
72121
run: |
73-
podman run --shm-size=1g \
122+
docker run --rm --shm-size=1g \
74123
-v `pwd`/test/browser-library.robot:/opt/robotframework/tests/browser-library.robot:Z \
75124
-v `pwd`/test/selenium.robot:/opt/robotframework/tests/selenium.robot:Z \
76-
-e BROWSER=$BROWSER \
125+
-e BROWSER=${{ env.BROWSER }} \
77126
-e SCREEN_WIDTH=1024 \
78127
-e SCREEN_HEIGHT=768 \
79-
$IMAGE_NAME
128+
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_VERSION_CI }}
129+
80130
- name: Screen Width 1280x1024 Test
81131
run: |
82-
podman run --shm-size=1g \
132+
docker run --rm --shm-size=1g \
83133
-v `pwd`/test/browser-library.robot:/opt/robotframework/tests/browser-library.robot:Z \
84134
-v `pwd`/test/selenium.robot:/opt/robotframework/tests/selenium.robot:Z \
85-
-e BROWSER=$BROWSER \
135+
-e BROWSER=${{ env.BROWSER }} \
86136
-e SCREEN_WIDTH=1280 \
87137
-e SCREEN_HEIGHT=1024 \
88-
$IMAGE_NAME
138+
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_VERSION_CI }}
139+
89140
- name: Screen Width 2560x1440 Test
90141
run: |
91-
podman run --shm-size=1g \
142+
docker run --rm --shm-size=1g \
92143
-v `pwd`/test/browser-library.robot:/opt/robotframework/tests/browser-library.robot:Z \
93144
-v `pwd`/test/selenium.robot:/opt/robotframework/tests/selenium.robot:Z \
94-
-e BROWSER=$BROWSER \
145+
-e BROWSER=${{ env.BROWSER }} \
95146
-e SCREEN_WIDTH=2560 \
96147
-e SCREEN_HEIGHT=1440 \
97-
$IMAGE_NAME
148+
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_VERSION_CI }}
149+
98150
- name: Screen Width 3840x2160 Test
99151
run: |
100-
podman run --shm-size=1g \
152+
docker run --rm --shm-size=1g \
101153
-v `pwd`/test/browser-library.robot:/opt/robotframework/tests/browser-library.robot:Z \
102154
-v `pwd`/test/selenium.robot:/opt/robotframework/tests/selenium.robot:Z \
103-
-e BROWSER=$BROWSER \
155+
-e BROWSER=${{ env.BROWSER }} \
104156
-e SCREEN_WIDTH=3840 \
105157
-e SCREEN_HEIGHT=2160 \
106-
$IMAGE_NAME
158+
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_VERSION_CI }}
159+
107160
- name: Debug Log Level Test
108161
run: |
109-
podman run --shm-size=1g \
162+
docker run --rm --shm-size=1g \
110163
-v `pwd`/test/faker.robot:/opt/robotframework/tests/faker.robot:Z \
111-
-e BROWSER=$BROWSER \
164+
-e BROWSER=${{ env.BROWSER }} \
112165
-e ROBOT_OPTIONS="--loglevel DEBUG" \
113-
$IMAGE_NAME
166+
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_VERSION_CI }}
167+
114168
- name: Basic Multithreaded Test
115169
run: |
116-
podman run --shm-size=1g \
170+
docker run --rm --shm-size=1g \
117171
-v `pwd`/test/browser-library.robot:/opt/robotframework/tests/browser-library.robot:Z \
118172
-v `pwd`/test/faker.robot:/opt/robotframework/tests/faker.robot:Z \
119173
-v `pwd`/test/requests.robot:/opt/robotframework/tests/requests.robot:Z \
120174
-v `pwd`/test/selenium.robot:/opt/robotframework/tests/selenium.robot:Z \
121175
-v `pwd`/test/timezones.robot:/opt/robotframework/tests/timezones.robot:Z \
122-
-e BROWSER=$BROWSER \
176+
-e BROWSER=${{ env.BROWSER }} \
123177
-e ROBOT_THREADS=4 \
124-
$IMAGE_NAME
178+
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_VERSION_CI }}
179+
125180
- name: Test Level Multithreaded Test
126181
run: |
127-
podman run --shm-size=1g \
182+
docker run --rm --shm-size=1g \
128183
-v `pwd`/test/browser-library.robot:/opt/robotframework/tests/browser-library.robot:Z \
129184
-v `pwd`/test/faker.robot:/opt/robotframework/tests/faker.robot:Z \
130185
-v `pwd`/test/requests.robot:/opt/robotframework/tests/requests.robot:Z \
131186
-v `pwd`/test/selenium.robot:/opt/robotframework/tests/selenium.robot:Z \
132187
-v `pwd`/test/timezones.robot:/opt/robotframework/tests/timezones.robot:Z \
133-
-e BROWSER=$BROWSER \
188+
-e BROWSER=${{ env.BROWSER }} \
134189
-e ROBOT_THREADS=4 \
135190
-e PABOT_OPTIONS="--testlevelsplit" \
136-
$IMAGE_NAME
191+
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_VERSION_CI }}
192+
137193
- name: Custom User Test
138194
run: |
139-
podman run --user=2000 --shm-size=1g \
195+
docker run --rm --user=2000 --shm-size=1g \
140196
-v `pwd`/test/faker.robot:/opt/robotframework/tests/faker.robot:Z \
141-
-e BROWSER=$BROWSER \
142-
$IMAGE_NAME
197+
-e BROWSER=${{ env.BROWSER }} \
198+
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_VERSION_CI }}
199+
143200
- name: Custom User and Group Test
144201
run: |
145-
podman run --user=2000:2000 --shm-size=1g \
202+
docker run --rm --user=2000:2000 --shm-size=1g \
146203
-v `pwd`/test/faker.robot:/opt/robotframework/tests/faker.robot:Z \
147-
-e BROWSER=$BROWSER \
148-
$IMAGE_NAME
204+
-e BROWSER=${{ env.BROWSER }} \
205+
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_VERSION_CI }}
206+
149207
- name: Datetime
150208
run: |
151-
podman run --user=2000:2000 --shm-size=1g \
209+
docker run --rm --shm-size=1g \
152210
-v `pwd`/test/timezones.robot:/opt/robotframework/tests/timezones.robot:Z \
153-
-e BROWSER=$BROWSER \
211+
-e BROWSER=${{ env.BROWSER }} \
154212
-e TZ="America/New_York" \
155-
$IMAGE_NAME
213+
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_VERSION_CI }}
214+
156215
- name: Rerun Test
157216
run: |
158-
podman run --user=2000:2000 --shm-size=1g \
217+
docker run --rm --shm-size=1g \
159218
-v `pwd`/test/rerun.robot:/opt/robotframework/tests/rerun.robot:Z \
219+
-e BROWSER=${{ env.BROWSER }} \
160220
-e ROBOT_RERUN_MAX_ROUNDS=50 \
161-
$IMAGE_NAME
221+
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_VERSION_CI }}
222+
223+
push:
224+
runs-on: ubuntu-latest
225+
needs: test
226+
if: github.event_name != 'pull_request'
227+
steps:
228+
- name: Checkout code
229+
uses: actions/checkout@v4
230+
231+
- name: Log in to Docker Hub
232+
uses: docker/login-action@v3
233+
with:
234+
username: ${{ secrets.DOCKER_REGISTRY_USERNAME }}
235+
password: ${{ secrets.DOCKER_REGISTRY_TOKEN }}
236+
237+
- name: Build other platforms and push
238+
uses: docker/build-push-action@v6
239+
with:
240+
platforms: linux/amd64
241+
# platforms: linux/amd64,linux/arm64
242+
push: ${{ github.event_name != 'pull_request' }}
243+
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.ref_type == 'branch' && 'latest' || github.ref_name }}
244+
cache-from: type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:cache

0 commit comments

Comments
 (0)