From 53d971abc7f7c663ae163b0639d72d18d45b09d6 Mon Sep 17 00:00:00 2001 From: Kay Effenberger <kay@jointech.org> Date: Thu, 27 Jun 2024 12:28:52 +0200 Subject: [PATCH] Feat adding ci --- .gitlab-ci.yml | 168 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 168 insertions(+) create mode 100644 .gitlab-ci.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..cbc24c1 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,168 @@ +stages: + - test + +.aura-runtime: + # These variables are basically a copy from what can be found in tests/env. + # GitLab supports dotenv reports that can be loaded in dependent jobs, but + # there doesn’t seem to be a way to load an env file directly. + variables: + # GitLab feature flag: services need to be able to communicate for OIDC + FF_NETWORK_PER_BUILD: 'true' + # Service output might be useful for debugging + CI_DEBUG_SERVICES: 'true' + + # general settings + ADMIN_USERNAME: admin + ADMIN_PASSWORD: admin + + # tank settings + TANK_HOST: tank + TANK_PORT: 8040 + TANK_ORIGIN: http://$TANK_HOST:$TANK_PORT + TANK_CALLBACK_BASE_URL: $TANK_ORIGIN + TANK_OIDC_CLIENT_ID: 123456 + TANK_OIDC_CLIENT_SECRET: tank-oidc-secret + TANK_POSTGRES_DB: tank + TANK_POSTGRES_USER: tank + TANK_POSTGRES_PASSWORD: aura + TANK_VERSION: main + + # steering settings + STEERING_HOST: steering + STEERING_PORT: 8000 + STEERING_ORIGIN: http://$STEERING_HOST:$STEERING_PORT + STEERING_VERSION: main + + # dashboard settings + DASHBOARD_VERSION: main + DASHBOARD_BRANCH: main + DASHBOARD_PORT: 80 + DASHBOARD_HOST: dashbaord + DASHBOARD_ORIGIN: http://$DASHBOARD_HOST:$DASHBOARD_PORT + DASHBOARD_CALLBACK_BASE_URL: $DASHBOARD_ORIGIN + DASHBOARD_OIDC_CLIENT_ID: 234567 + DASHBOARD_OIDC_CLIENT_SECRET: dashboard-oidc-secret + + services: + - name: postgres:13 + alias: postgres + variables: + POSTGRES_DB: $TANK_POSTGRES_DB + POSTGRES_USER: $TANK_POSTGRES_USER + POSTGRES_PASSWORD: $TANK_POSTGRES_PASSWORD + + - name: autoradio/steering:${STEERING_VERSION} + alias: steering + variables: + DJANGO_SUPERUSER_EMAIL: admin@example.org + DJANGO_SUPERUSER_USERNAME: $ADMIN_USERNAME + DJANGO_SUPERUSER_PASSWORD: $ADMIN_PASSWORD + entrypoint: ['/bin/bash'] + command: + - '-c' + - | + cat >>/app/steering/settings.py <<EOF + CORS_ALLOWED_ORIGINS = ["$DASHBOARD_ORIGIN"] + ALLOWED_HOSTS = ["*"] + SITE_URL = "$STEERING_ORIGIN" + DEBUG = True + LOGGING = { + "version": 1, + "disable_existing_loggers": False, + "handlers": { + "console": { + "class": "logging.StreamHandler", + }, + }, + "root": { + "handlers": ["console"], + "level": "INFO", + }, + } + EOF + poetry run ./manage.py initialize + poetry run ./manage.py loadfixtures sample + exec ./entrypoint.sh run.prod + + - name: autoradio/tank:${TANK_VERSION} + alias: tank + entrypoint: ['/bin/bash'] + command: + - '-c' + - | + # make sure postgres is up before starting tank + while true; do + timeout 0.25 cat >/dev/null 2>&1 </dev/tcp/postgres/5432 + if [ "$?" = 124 ]; then break; fi + done + while true; do + timeout 0.25 cat >/dev/null 2>&1 <"/dev/tcp/steering/$STEERING_PORT" + if [ "$?" = 124 ]; then break; fi + done + cat >/tmp/tank.yaml <<EOF + store: + path: /srv/audio + audio: + format: flac + sample-rate: 44100 + db: + type: postgres + host: postgres + tls: disable + username: "$TANK_POSTGRES_USER" + password: "$TANK_POSTGRES_PASSWORD" + database: "$TANK_POSTGRES_DB" + + importer: + temp-path: /srv/import-temp + workers: 4 + normalizer: ffmpeg + + auth: + sessions: + max-age: 12h + static: + engine: + secret: no-secret + readonly: true + allShows: true + oidc: + issuer-url: $STEERING_ORIGIN/openid + client-id: $TANK_OIDC_CLIENT_ID + client-secret: $TANK_OIDC_CLIENT_SECRET + callback-url: $TANK_ORIGIN/auth/oidc/callback + login-timeout: 10m + + web: + cors: + allowed-origins: ['$DASHBOARD_ORIGIN'] + allowed-methods: + - GET + - PUT + - POST + - PATCH + - DELETE + allowed-headers: ['*'] + allow-credentials: true + debug: true + EOF + /usr/local/bin/tank --config /tmp/tank.yaml run --listen ":$TANK_PORT" + + - name: autoradio/dashboard:${DASHBOARD_VERSION} + alias: dashboard + variables: + DASHBOARD_OIDC_CLIENT_ID: $DASHBOARD_OIDC_CLIENT_ID + AURA_PROTO: http + AURA_HOST: $DASHBOARD_HOST + +integration-tests: + extends: .aura-runtime + stage: test + image: debian:bookworm-slim + before_script: + - apt update -y && apt install -y make wait-for-it + - wait-for-it -t 120 -h steering -p "$STEERING_PORT" + - wait-for-it -t 120 -h tank -p "$TANK_PORT" + - wait-for-it -t 120 -h dashboard -p "$DASHBOARD_PORT" + script: + - echo 'insert integrations Tests' \ No newline at end of file -- GitLab