stage: パイプラインを制御するためのもので、job毎に使用できるステージを定義するもの。dependenciesとセットになる同じステージのjobは並行で実行される
artifacts: 成果物のパスを指定。特定のjobから成果物をDLできる。後続のjobで引き継がせることができる。ディレクトリのみ。
image: sample.gitlab.com/vagrant/sample/app stages: - test - build_static rspec: stage: test services: - mysql:5.7 variables: MYSQL_DATABASE: sample_test MYSQL_ROOT_PASSWORD: mysql_strong_password before_script: - "echo \"install: --no-document\" > ~/.gemrc" - "echo \"update: --no-document\" > ~/.gemrc" - bundle install --jobs=4 - buncle exec rake db:setup RAILS_ENV=test - buncle exec rake db:migrate RAILS_ENV=test script: - bundle exec rspec artifacts: paths: - coverage/ pages: stage: build_static dependencies: - rspec script: - my coverage/ public/ artifacts: paths: - public only: - master
どのようなjobを実行するか設計 -> jobの集合体をstage
commitするとjobが実行される
build, test, docker_build
stages: - build - test - docker_build # 全ジョブの前処理 before_script: - chmod +x ./gradlew - export GRADLE_USER_HOME=`pwd`/.gradlew # 実行するジョブ build: stage: build image: java:openjdk-8u111-jdk-alpine script: - ./gradlew assemble artifacts: name: "${CI_PROJECT_NAME}_${CI_COMMIT_REF_NAME}" paths: - build/libs/*.jar test: stage: test image: java:openjdk-8u111-jdk-alpine script: - ./gradlew test sonarqube -PsonarBranch=$CI_COMMIT_REF_NAME -PsonarHostUrl=$SONAR_HOST_UR+ docker_build: stage: docker_build image: docker:18.03 script: - docker login -u "gitlab-ci-token" -p "$CI_JOB_TOKEN" $CI_REGISTRY - docker build --build-arg JAR_FILE=$(find ./build/libs/ -name "sample*.jar") -t "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME" ./ - docker push "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME"
うーん、なるほど、少しずつって感じやな