|
9 | 9 | jobs:
|
10 | 10 | publish_docker_image_to_docker_hub:
|
11 | 11 | name: Build & Push docker image to dockerhub
|
12 |
| - runs-on: ubuntu-22.04 |
| 12 | + runs-on: ubuntu-24.04 |
13 | 13 |
|
14 | 14 | steps:
|
15 | 15 | - name: Checkout code
|
|
77 | 77 | test-docker-images:
|
78 | 78 | name: verify that the docker images work
|
79 | 79 | needs: publish_docker_image_to_docker_hub
|
80 |
| - runs-on: ubuntu-22.04 |
| 80 | + runs-on: ubuntu-24.04 |
81 | 81 | env:
|
82 | 82 | SA_PASSWORD: "P@ssw0rd"
|
83 | 83 |
|
@@ -146,24 +146,64 @@ jobs:
|
146 | 146 | - name: Get metadata as environment variables
|
147 | 147 | uses: HSLdevcom/jore4-tools/github-actions/extract-metadata@extract-metadata-v1
|
148 | 148 |
|
| 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 | +
|
149 | 155 | - name: Start up mssql docker container
|
150 | 156 | 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 |
152 | 172 |
|
153 | 173 | - name:
|
154 | 174 | Verify that dockerized MSSQL database is up and can be connected to
|
155 | 175 | uses: HSLdevcom/jore4-tools/github-actions/healthcheck@healthcheck-v1
|
156 | 176 | with:
|
157 | 177 | 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'';"' |
161 | 188 | - name:
|
162 | 189 | Verify that the proper sql dumps got imported (diff expected results)
|
163 | 190 | env:
|
164 | 191 | # query for listing all available database names
|
165 | 192 | 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 |
166 | 195 | 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 | +
|
168 | 208 | echo "${{ matrix.expectedOutput }}" > expectedresults.txt
|
169 | 209 | diff --ignore-all-space --ignore-blank-lines dbresults.txt expectedresults.txt
|
0 commit comments