Skip to content

Commit e3e6ca4

Browse files
committed
Update GitHub Actions runners to Ubuntu 24.04
The 24.04 runners do not have mssql-tools installed, i.e. we need to use the sqlcmd from, for example, the official MSSQL Docker image.
1 parent 700b184 commit e3e6ca4

File tree

1 file changed

+47
-7
lines changed

1 file changed

+47
-7
lines changed

.github/workflows/cd.yml

Lines changed: 47 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ on:
99
jobs:
1010
publish_docker_image_to_docker_hub:
1111
name: Build & Push docker image to dockerhub
12-
runs-on: ubuntu-22.04
12+
runs-on: ubuntu-24.04
1313

1414
steps:
1515
- name: Checkout code
@@ -77,7 +77,7 @@ jobs:
7777
test-docker-images:
7878
name: verify that the docker images work
7979
needs: publish_docker_image_to_docker_hub
80-
runs-on: ubuntu-22.04
80+
runs-on: ubuntu-24.04
8181
env:
8282
SA_PASSWORD: "P@ssw0rd"
8383

@@ -146,24 +146,64 @@ jobs:
146146
- name: Get metadata as environment variables
147147
uses: HSLdevcom/jore4-tools/github-actions/extract-metadata@extract-metadata-v1
148148

149+
- name: Read Current MS SQL Docker Image
150+
id: docker
151+
shell: bash
152+
run: |
153+
echo mssql_docker_image="$(grep FROM Dockerfile | sed -E 's/FROM *([^ ]*)( AS.*)?/\1/g' | head -n 1)" >> "${GITHUB_OUTPUT}"
154+
149155
- name: Start up mssql docker container
150156
run: |
151-
docker run -d --rm -p 1433:1433 --name mssql -e SA_PASSWORD="$SA_PASSWORD" ${{ matrix.volumeMapping }} $IMAGE_NAME:${{ matrix.dockerImage }}-$COMMIT_ID
157+
# A custom network is used so that Docker containers can be referred with names instead of IPs
158+
docker network rm hsl || true
159+
docker network create -d bridge --subnet=10.240.0.0/24 hsl
160+
docker network ls
161+
162+
docker run \
163+
-d \
164+
--rm \
165+
-p 1433:1433 \
166+
--name mssql \
167+
--hostname mssql \
168+
--network hsl \
169+
-e SA_PASSWORD="$SA_PASSWORD" \
170+
${{ matrix.volumeMapping }} \
171+
$IMAGE_NAME:${{ matrix.dockerImage }}-$COMMIT_ID
152172
153173
- name:
154174
Verify that dockerized MSSQL database is up and can be connected to
155175
uses: HSLdevcom/jore4-tools/github-actions/healthcheck@healthcheck-v1
156176
with:
157177
command:
158-
'/opt/mssql-tools/bin/sqlcmd -S 127.0.0.1 -U sa -P "$SA_PASSWORD" -d
159-
master -Q "SELECT ''OK'';"'
160-
178+
'docker run
179+
--network hsl
180+
${{ steps.docker.outputs.mssql_docker_image }}
181+
/opt/mssql-tools18/bin/sqlcmd
182+
-C
183+
-S mssql
184+
-U sa
185+
-P "$SA_PASSWORD"
186+
-d master
187+
-Q "SELECT ''OK'';"'
161188
- name:
162189
Verify that the proper sql dumps got imported (diff expected results)
163190
env:
164191
# query for listing all available database names
165192
DB_QUERY: "SELECT name FROM master.sys.databases ORDER BY name;"
193+
# A custom entrypoint needs to be used so that the output does not contain lines printed by
194+
# the default entrypoint which would make the diff fail
166195
run: |
167-
/opt/mssql-tools/bin/sqlcmd -S 127.0.0.1 -U sa -P "$SA_PASSWORD" -d master -Q "$DB_QUERY" > dbresults.txt
196+
docker run \
197+
--network hsl \
198+
--entrypoint /opt/mssql-tools18/bin/sqlcmd \
199+
${{ steps.docker.outputs.mssql_docker_image }} \
200+
-C \
201+
-S mssql \
202+
-U sa \
203+
-P "$SA_PASSWORD" \
204+
-d master \
205+
-Q "$DB_QUERY" \
206+
> dbresults.txt
207+
168208
echo "${{ matrix.expectedOutput }}" > expectedresults.txt
169209
diff --ignore-all-space --ignore-blank-lines dbresults.txt expectedresults.txt

0 commit comments

Comments
 (0)