Complete rewrite of infra test in rust! #148
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Linux Distribution Test Pipeline | |
| on: [push, pull_request] | |
| jobs: | |
| test: | |
| runs-on: ubuntu-latest | |
| services: | |
| mongodb: | |
| image: mongo:5.0.6 | |
| ports: | |
| - 27017:27017 | |
| options: >- | |
| --health-cmd mongo | |
| --health-interval 10s | |
| --health-timeout 5s | |
| --health-retries 5 | |
| env: | |
| MONGO_INITDB_ROOT_USERNAME: root | |
| MONGO_INITDB_ROOT_PASSWORD: pass | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup .env file | |
| run: | | |
| cp .env.example .env | |
| - name: Build and run server container | |
| run: | | |
| docker build -t server -f images/server-ci.Dockerfile . | |
| docker run -d --network host --name server-container server | |
| - name: Wait for server to start | |
| run: | | |
| TIMEOUT=60 | |
| ELAPSED=0 | |
| until curl --output /dev/null --silent --fail http://localhost:3000; do | |
| if [ "$ELAPSED" -ge "$TIMEOUT" ]; then | |
| echo "Server did not start within $TIMEOUT seconds. But continuing..." | |
| exit 0 | |
| fi | |
| echo "Waiting for server..." | |
| sleep 5 | |
| ELAPSED=$((ELAPSED + 5)) | |
| done | |
| echo "Server is up!" | |
| continue-on-error: true | |
| - name: Build and run Ubuntu 24.04 container | |
| run: | | |
| docker build -t ubuntu24.04 -f images/ubuntu24.04.Dockerfile scripts/ | |
| docker run --name ubuntu24.04-test --network host ubuntu24.04 || true | |
| - name: Build and run Fedora 42 container | |
| run: | | |
| docker build -t fedora42 -f images/fedora42.Dockerfile scripts/ | |
| docker run --name fedora42-test --network host fedora42 || true | |
| - name: Build and run Debian 12 container | |
| run: | | |
| docker build -t debian12 -f images/debian12.Dockerfile scripts/ | |
| docker run --name debian12-test --network host debian12 || true | |
| - name: Build and run Ubuntu 24.04 container for checking multiple package support | |
| run: | | |
| docker build -t ubuntu24.04-multi -f images/ubuntu24.04-multi-package.Dockerfile scripts/ | |
| docker run --name ubuntu24.04-multitest --network host ubuntu24.04-multi || true | |
| - name: Build and run Fedora 42 container for checking multiple package support | |
| run: | | |
| docker build -t fedora42 -f images/fedora42-multi-package.Dockerfile scripts/ | |
| docker run --name fedora42-multitest --network host fedora42 || true | |
| - name: Build and run Debian 12 container for checking multiple package support | |
| run: | | |
| docker build -t debian12-multi -f images/debian12-multi-package.Dockerfile scripts/ | |
| docker run --name debian12-multitest --network host debian12-multi || true | |
| - name: Build and run OpenSuse Tumbleweed container for checking multiple package support | |
| run: | | |
| docker build -t tumbleweed-multi -f images/tumbleweed-multi-package.Dockerfile scripts/ | |
| docker run --name tumbleweed-multitest --network host tumbleweed-multi || true | |
| - name: Check server logs | |
| run: | | |
| docker logs server-container || true | |
| - name: Check client containers' statuses | |
| run: | | |
| if [ "$(docker inspect -f '{{.State.ExitCode}}' ubuntu24.04-test)" -ne 0 ]; then | |
| echo "Test on Ubuntu 24.04 failed" | |
| exit 1 | |
| fi | |
| if [ "$(docker inspect -f '{{.State.ExitCode}}' fedora42-test)" -ne 0 ]; then | |
| echo "Test on Fedora 42 failed" | |
| exit 1 | |
| fi | |
| if [ "$(docker inspect -f '{{.State.ExitCode}}' debian12-test)" -ne 0 ]; then | |
| echo "Test on Debian 12 failed" | |
| exit 1 | |
| fi | |
| if [ "$(docker inspect -f '{{.State.ExitCode}}' ubuntu24.04-multitest)" -ne 0 ]; then | |
| echo "Test on Ubuntu 23.04 for multiple package support failed" | |
| exit 1 | |
| fi | |
| if [ "$(docker inspect -f '{{.State.ExitCode}}' fedora42-multitest)" -ne 0 ]; then | |
| echo "Test on Fedora 42 failed multiple package support failed" | |
| exit 1 | |
| fi | |
| if [ "$(docker inspect -f '{{.State.ExitCode}}' debian12-multitest)" -ne 0 ]; then | |
| echo "Test on Debian 12 for multiple package support failed" | |
| exit 1 | |
| fi | |
| if [ "$(docker inspect -f '{{.State.ExitCode}}' tumbleweed-multitest)" -ne 0 ]; then | |
| echo "Test on OpenSuse Tumbleweed for multiple package support failed" | |
| exit 1 | |
| fi |