我正在开发一个项目,使用 .gitlab-ci.yml 构建,测试和部署应用程序到 Cloud 端

1) Build the backend and frontend using pip install and npm install

build_backend:
  image: python
  stage: build
  script:
  - pip install requirements.txt
  artifacts:
    paths:
      - backend/

build_frontend:
  image: node
  stage: build
  script:
  - npm install
  - npm run build
  artifacts:
    paths:
      - frontend

2) Run unit and functional tests using PyUnit and Python Selenium

test_unit:
  image: python
  stage: test
  script:
    - python -m unittest discover

test_functional:
  image: python
  stage: test
  services:
    - selenium/standalone-chrome
  script:
    - python tests/example.py http://selenium__standalone-chrome:4444/wd/hub https://$CI_BUILD_REF_SLUG-dot-$GAE_PROJECT.appspot.com

3) Deploy to Google Cloud using the sdk

deploy:
  image: google/cloud-sdk
  stage: deploy
  environment:
    name: $CI_BUILD_REF_NAME
    url: https://$CI_BUILD_REF_SLUG-dot-$GAE_PROJECT.appspot.com
  script:
    - echo $GAE_KEY > /tmp/gae_key.json
    - gcloud config set project $GAE_PROJECT
    - gcloud auth activate-service-account --key-file /tmp/gae_key.json
    - gcloud --quiet app deploy --version $CI_BUILD_REF_SLUG --no-promote
  after_script:
    - rm /tmp/gae_key.json

这一切都运行得很好,除了selenium测试是在已部署的url上运行而不是当前构建:

python tests/example.py http://selenium__standalone-chrome:4444/wd/hub https://$CI_BUILD_REF_SLUG-dot-$GAE_PROJECT.appspot.com

我需要让gitlab同时运行三件事:a)Selenium b)带有应用程序的Python服务器 - 测试脚本

运行python服务器的可能方法:

  • 以某种方式在与测试脚本相同的终端命令中运行
    259 Docker中的Docker

  • 服务

任何建议或答案将不胜感激!