我已经在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
我采取了以下步骤:
git push -u origin review
将更改推送到gitlabimage: 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: {}
我期望看到“部署审查”是正在进行中的唯一工作。然而,我看到了“测试工件”和“测试网站”。我能做些什么来解决这个问题?谢谢。
发布于 2019-08-21 15:35:56
我找到了一个解决办法:
将以下内容添加到构建网站和部署审查阶段:
only:
- master
- merge_requests
发布于 2021-12-12 12:22:11
我想你看了瓦伦丁·德斯帕的课程。我刚刚遇到了同样的问题。我想知道他是否就这一问题发表了任何解决办法。
基本上我不确定如果我是对的但是..。
如果我们打开链接,可能会找到一个解释:pipelines.html
only:
- merge_requests
以分离模式运行部署审查阶段。我们无法访问环境变量,因为它们是受保护的。我所做的就是去设置->、CI/CD、->变量,->去掉了两个变量的受保护变量选项中的勾号。
然后,如果您再次运行该管道,您会注意到它会在./public上抛出一个错误。
播放他的视频动态环境和通知在4:49 (时间线)有三个绿色管道。您只有一个(您的管道是分离的)!意思是网站建设阶段还没有运行。这就是为什么您将看到与./public相关的错误,因为您的管道对盖茨比一无所知。我们需要先安装盖茨比,然后再构建它。
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
https://stackoverflow.com/questions/57583093
复制相似问题