LU08a - Container in der Pipeline
Um die Integration und E2e-Tests in der Pipeline auszuführen müssen oft Services (Zum Beispiel eine Datenbank und/oder ein Backend) in der Testumgebung bereitgestellt werden.
Im nachfolgenden Code-Block sehen Sie ein Beispiel einer PostgreSQL-Datenbank. Der gesamte Code befindet sich auf: https://github.com/AlexanderPeter/cicd/blob/develop/.github/workflows/nightly_trigger.yml
services: postgres: image: postgres:15 env: POSTGRES_USER: localuser POSTGRES_PASSWORD: localpass POSTGRES_DB: localdb ports: - 5432:5432 options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 env: DATABASE_URL: postgresql://localuser:localpass@127.0.0.1:5432/localdb
Analog dazu gibt es auch ein Beispiel für einen Python-Backend-Server ebenfalls auf: https://github.com/AlexanderPeter/cicd/blob/develop/.github/workflows/nightly_trigger.yml
steps: - name: Checkout code uses: actions/checkout@v4 with: fetch-depth: 0 - name: Initialize database schema working-directory: database run: | psql postgresql://localuser:localpass@127.0.0.1:5432/localdb -f schema.sql - name: Set up python uses: actions/setup-python@v5 with: python-version: '3.11.9' - name: Install dependencies working-directory: backend run: | python -m venv .venv source .venv/bin/activate pip install -r requirements.txt pip install -r requirements-dev.txt ... - name: Start backend server working-directory: backend run: | source .venv/bin/activate python app.py > backend.log 2>&1 & - name: Wait for backend run: | until curl --silent http://localhost:5000/; do echo "Waiting for backend..." sleep 2 done - name: Wait for frontend run: | until curl --silent http://localhost:3000; do echo "Waiting for frontend..." sleep 2 done - name: Run e2e tests working-directory: frontend run: npm run e2e-headless