Skip to content

Add the web service implementation #60

Add the web service implementation

Add the web service implementation #60

Workflow file for this run

name: Run tests
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: [ "3.10", "3.12" ]
services:
redis:
image: redis:latest
ports:
- 6379:6379
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Set up Podman and Buildah
run: |
sudo apt-get update
sudo apt-get install -y podman buildah
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: '${{ matrix.python-version }}'
- name: Install pytest
run: |
python -m pip install pytest
python -m pip install -r src/requirements.txt
- name: Build the web image
run: |
buildah bud -t tmt-web:latest --build-arg PYTHON_VERSION=${{ matrix.python-version }} .
- name: Start Celery container
run: |
podman run -d --name celery \
-e REDIS_URL=redis://redis:6379 \
-e API_HOSTNAME=http://localhost:8000 \
--network host \
tmt-web:latest celery --app=src.api.service worker --loglevel=INFO
- name: Start Web container
run: |
podman run -d --name web \
-e REDIS_URL=redis://redis:6379 \
-e API_HOSTNAME=http://localhost:8000 \
-p 8000:8000 \
--network host \
tmt-web:latest uvicorn src.api:app --reload --host 0.0.0.0 --port 8000
- name: Wait for services to be ready
run: |
for i in {1..30}; do
if curl -s http://localhost:8000/health; then
break
fi
sleep 4
done
- name: Run tests
run: |
python -m pytest
- name: Cleanup
if: always()
run: |
podman pod stop tmt-web-pod
podman pod rm tmt-web-pod