stages: - build - test - deploy include: - project: 'turniere/turniere-infra' file: '/ci/pipeline.yaml' rails spec: stage: test image: $CI_REGISTRY_IMAGE/test/commits:$CI_COMMIT_SHA rules: - if: $SKIP_TEST when: never - if: $CI_PIPELINE_SOURCE != "push" when: never - when: always script: - cd /app - bundle exec rails db:migrate - bundle exec rspec artifacts: paths: - specs_with_runtime.txt expire_in: 30 days rails e2e spec: stage: test image: $CI_REGISTRY_IMAGE/test/commits:$CI_COMMIT_SHA rules: - if: $SKIP_TEST when: never - if: $CI_PIPELINE_SOURCE != "push" when: never - when: always script: - 'cd /app' - 'bundle exec rails db:migrate' - 'bundle exec rails runner -e test "user = User.find_or_initialize_by(email: ''e2e@example.com''); user.username = ''e2e-user''; user.password = ''password123''; user.password_confirmation = ''password123''; user.confirmed_at = Time.current; user.uid = user.email; user.provider = ''email''; user.save!"' - 'bundle exec rails s -e test -p 3000 -b 0.0.0.0 > /tmp/turniere-e2e-server.log 2>&1 &' - 'SERVER_PID=$!' - 'ruby script/wait_for_http.rb http://127.0.0.1:3000 60' - 'TURNIERE_E2E_BASE_URL=http://127.0.0.1:3000 TURNIERE_E2E_EMAIL=e2e@example.com TURNIERE_E2E_PASSWORD=password123 TURNIERE_E2E_USERNAME=e2e-user bundle exec rspec spec/e2e/http' - 'kill $SERVER_PID' after_script: - 'test -f /tmp/turniere-e2e-server.log && tail -n 200 /tmp/turniere-e2e-server.log || true'