在执行docker - gitlab-ci.yml上的阶段之前,在我的本地服务器上执行命令

时间:2016-11-01 15:34:33

标签: continuous-integration gitlab devops gitlab-ci

我有这个gitlab-ci.yml

stages:
  - test

test_ahpi:
  stage: test
  image: "ahgora/alpine-test-node"
  script:
   - cd ${CI_PROJECT_DIR}/api; npm install --unsafe-perm
   - cd ${CI_PROJECT_DIR}/api; node_modules/.bin/gulp build-test

test_php:
  stage: test
  image: "ahgora/alpine-test-php"
  script:
   - cd ${CI_PROJECT_DIR}/; make test

但我之前想在本地服务器上做一些步骤,所以我不需要手动运行一些步骤。

有没有办法在我的本地服务器上执行命令,然后才能执行gitlab-ci.yml上的各个阶段?

我以为我可以做类似下面的事情,但我得到错误,因为没有任何已定义的图像到这一步。(但我想在shell中运行它而不是在这个特定阶段的docker中)。

stages:
  - prepare
  - test

docker:
  stage: prepare
  script:
   - docker run -d --name lookupd nsqio/nsq /nsqlookupd
   - docker run --name mongo -d mongo
   - docker run -d --link lookupd:lookupd --name nsqd nsqio/nsq /nsqd --broadcast-address=lookupd --lookupd-tcp-address=lookupd:4160
   - docker run --name redis -d redis    

test_ahpi:
  stage: test
  image: "ahgora/alpine-test-node"
  script:
   - cd ${CI_PROJECT_DIR}/api; npm install --unsafe-perm
   - cd ${CI_PROJECT_DIR}/api; node_modules/.bin/gulp build-test

test_php:
  stage: test
  image: "ahgora/alpine-test-php"
  script:
   - cd ${CI_PROJECT_DIR}/; make test

感谢您的时间。

1 个答案:

答案 0 :(得分:0)

如果您不想使用docker作为gitlab-runner,那么您可以在特定阶段指定tag并指定shell作为执行者。