Как я могу остановить конвейер gitlab и попросить меня ввести переменные? - PullRequest
1 голос
/ 05 ноября 2019

Я создал конвейер в gitlab, с

image:
  name: hashicorp/terraform:light
  entrypoint:
    - '/usr/bin/env'
    - 'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'

variables:
  PLAN: dbrest.tfplan
  STATE: dbrest.tfstate

cache:
  paths:
    - .terraform

before_script:
  - terraform --version
  - terraform init

stages:
  - validate
  - build
  - deploy
  - destroy

validate:
  stage: validate
  script:
    - terraform validate

plan:
  stage: build
  script:
    - terraform plan -state=$STATE -out=$PLAN
  artifacts:
    name: plan
    paths:
      - $PLAN
      - $STATE

apply:
  stage: deploy
  environment:
    name: production
  script:
    - terraform apply -state=$STATE -input=false $PLAN
    - terraform state show aws_instance.bastion
  dependencies:
    - plan
  when: manual
  only:
    - master

destroy:
    stage: destroy
    environment:
      name: production
    script:
      - terraform destroy -state=$STATE -auto-approve
    dependencies:
      - apply
    when: manual
    only:
      - master

Я также создал переменную в разделе «Настройки». -> 'CI / CD' -> 'Переменные' - у меня сложилось впечатление, что когда я перешел на ручной этап deploy, gitlab должен сделать паузу и попросить меня ввести значение для этой переменной, но этого не происходит -чего не хватает?

1 Ответ

2 голосов
/ 05 ноября 2019

Вы смешали задание с when: manual, когда запускаете конвейер вручную. Это то, что вам нужно:

https://docs.gitlab.com/ee/ci/pipelines.html#manually-executing-pipelines

Вы можете использовать это вместе с only для некоторой переменной. Что-то вроде:

...
apply:
  stage: deploy
  environment:
    name: production
  script:
    - terraform apply -state=$STATE -input=false $PLAN
    - terraform state show aws_instance.bastion
  dependencies:
    - plan
  only:
    refs:
      - master
    variables:
      - $RELEASE == "yes" 

destroy:
    stage: destroy
    environment:
      name: production
    script:
      - terraform destroy -state=$STATE -auto-approve
    dependencies:
      - apply
    only:
      refs:
        - master
      variables:
        - $RELEASE == "yes" 

С чем-то вроде этого вы можете иметь задания, которые никогда не запускаются нормально, но только если вы вручную запускаете новый конвейер в главной ветви и устанавливаете переменную $RELEASE в yes. Я не проверял это, поэтому мои извинения, если это не работает!

...