【问题标题】:How to fix dynamic environment in gitlab?如何修复 gitlab 中的动态环境?
【发布时间】:2019-12-26 05:29:42
【问题描述】:

我已经建立了一个“部署审查”阶段,并使用以下代码在我的 yaml 文件中部署作业:

deploy review:
  stage: deploy review
  only:
    - merge_requests
  environment:
    name: review/$CI_COMMIT_REF_NAME 
    url: https://crazymonk84-$CI_ENVIRONMENT_SLUG.surge.sh
  script:
    - npm install -g surge
    - surge --project ./public --domain 
      https://crazymonk84-$CI_ENVIRONMENT_SLUG.surge.sh 

当我在我的 gitlab 帐户上检查管道时,我在我的审查分支上看到了提交,但我没有看到“部署审查”作业正在运行。我看到“测试工件”“测试网站”作业正在运行。

gitlab项目的链接是https://gitlab.com/syed.r.abdullah/my-static-website/tree/review

我采取了以下步骤:

  1. 在 yaml 文件中添加了“部署审查”
  2. 在本地创建了一个新分支“review”
  3. 在审查分支中添加了对 yaml 文件的更改
  4. 提交更改
  5. 使用 git push -u origin review 将更改推送到 gitlab
  6. 访问了我的流水线,发现审核流水线处于失败状态
  7. 审核管道中的作业是“测试工件”和“测试网站”,而不是“部署审核”
image: node

variables:
  STAGING_DOMAIN: crazymonk84-staging.surge.sh
  PRODUCTION_DOMAIN: crazymonk84.surge.sh

stages:
  - build
  - test
  - deploy review
  - deploy staging
  - deploy production
  - production tests
  - cache

cache:
  key: ${CI_COMMIT_REF_SLUG}
  policy: pull
  paths:
    - node_modules/

update cache:
  stage: cache
  script:
    - npm install
  only:
    - schedules
  cache:
    key: ${CI_COMMIT_REF_SLUG}
    policy: push
    paths:
      - node_modules/

build website:
  stage: build
  only: 
    - master
    - merge_requests
  except:
    - schedules
  script:
    - echo $CI_COMMIT_SHORT_SHA
    - npm install -g gatsby-cli
    - npm i xstate@4.6.4
    - gatsby build
    - sed -i "s/%%VERSION%%/$CI_COMMIT_SHORT_SHA/" ./public/index.html
  artifacts:
    paths:
      - ./public

test website:
  stage: test
  except:
    - schedules
  script:
    - npm install -g gatsby-cli
    - npm i xstate@4.6.4
    - gatsby serve &
    - sleep 3
    - curl "http://localhost:9000" | tac | tac | grep -q "Gatsby"  

test artifact:
  image: alpine
  stage: test
  except:
    - schedules
  script:
    - grep -q "Gatsby" ./public/index.html
  cache: {}

deploy review:
  stage: deploy review
  only:
    - merge_requests
  environment:
    name: review/$CI_COMMIT_REF_NAME 
    url: https://crazymonk84-$CI_ENVIRONMENT_SLUG.surge.sh
  script:
    - npm install -g surge
    - surge --project ./public --domain https://crazymonk84-$CI_ENVIRONMENT_SLUG.surge.sh      

deploy staging: 
  stage: deploy staging
  environment: 
    name: staging
    url: http://$STAGING_DOMAIN
  only: 
    - master 
  except:
    - schedules
  script:
    - npm install --global surge
    - surge --project ./public --domain $STAGING_DOMAIN
  cache: {}

deploy production: 
  stage: deploy production
  environment: 
    name: production
    url: http://$PRODUCTION_DOMAIN
  only:
    - master  
  when: manual
  allow_failure: false
  except:
    - schedules
  script:
    - npm install --global surge
    - surge --project ./public --domain $PRODUCTION_DOMAIN
  cache: {}

production tests:
  image: alpine
  stage: production tests
  only: 
    - master
  except:
    - schedules
  script:
    - apk add --no-cache curl
    - curl -s "https://$PRODUCTION_DOMAIN" | grep -q "Hi people"
    - curl -s "https://$PRODUCTION_DOMAIN" | grep -q "$CI_COMMIT_SHORT_SHA"
  cache: {}

我希望将“部署审核”视为唯一的工作。但是,我看到了“测试神器”和“测试网站”。我能做些什么来解决这个问题?谢谢。

【问题讨论】:

    标签: bash yaml


    【解决方案1】:

    我找到了一个解决方案:

    将以下内容添加到构建网站部署审核阶段:

    only:
        - master
        - merge_requests
    

    【讨论】:

      【解决方案2】:

      我希望您观看了 Valentin Despa 的课程。我刚刚遇到了同样的问题。我想知道他是否发布了任何解决该问题的方法。

      如果我是正确的,基本上我并不肯定,但是......

      如果我们打开链接,可能会发现一个解释: https://docs.gitlab.com/ee/ci/pipelines/merge_request_pipelines.html

      only:
        - merge_requests
      

      以分离模式运行部署审查阶段。我们无法访问我们的环境变量,因为它们受到保护。我所做的是我转到设置 -> CI/CD -> 变量 -> 去掉了两个变量的受保护变量选项中的勾号。

      然后,如果您再次运行管道,您会注意到它会在 ./public 上引发错误。

      播放他的视频动态环境并注意在 4:49(时间线)有三个绿色管道。您只有一个(您的管道已分离)!意思是构建网站阶段尚未运行。这就是为什么您会看到与 ./public 有关的错误,因为您的管道对 Gatsby 一无所知。我们需要先安装 Gatsby,然后再构建它。

      deploy review:
        stage: deploy review
        environment:
          name: review/$CI_COMMIT_REF_NAME
          url: https://yourdomain-$CI_ENVIRONMENT_SLUG.surge.sh
        only:
          - merge_requests
        script:
          - npm install --silent
          - npm install -g gatsby-cli
          - gatsby build
          - npm install --global surge
          - surge --project ./public --domain yourdomain-$CI_ENVIRONMENT_SLUG.surge.sh
        artifacts:
          paths:
            - ./public
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-03-10
        • 2020-02-09
        • 2021-01-23
        • 2022-01-16
        • 1970-01-01
        • 1970-01-01
        • 2021-01-28
        相关资源
        最近更新 更多