在我的项目中,部署脚本使用构建作业的结果,但我看到在我的部署作业中,GitLab CI 重新获取上次提交的所有更改,并且还删除了构建作业生成的所有文件。我正在使用外壳执行器。
有没有办法阻止 GitLab CI 在部署作业中执行此操作,以便我的部署可以从构建作业停止的地方继续?
我努力了:
cache:
untracked: true
Run Code Online (Sandbox Code Playgroud)
在我的部署工作中,但这似乎没有任何区别
我完整的 .gitlab-ci.yml 是:
before_script:
- sudo apt-get -y install default-jdk
- sudo add-apt-repository -y ppa:cwchien/gradle
- sudo apt-get -y update
- sudo apt-get -y install gradle
- curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
- sudo apt-get install -y nodejs
- sudo npm install -g pm2
stages:
- build
- test
- deploy
after_script:
jobBuild:
stage: build
script:
- ( cd my-lib; gradle build assemble)
only:
- master
jobDeploy:
before_script:
stage: deploy
cache:
untracked: true
script:
- <some shell scripts>
only:
- master
Run Code Online (Sandbox Code Playgroud)
首先,由于您要缓存的是构建作业中的文件,因此您可能需要将缓存规则添加到 jobBuild。您甚至可以通过在作业外部定义缓存来全局定义缓存。
缓存机制的问题在于它是尽力而为的系统,这意味着缓存可能并不总是可用。
缓存是尽力提供的,因此不要期望缓存始终存在。有关实现细节,请查看 GitLab Runner。
如果您想要 100% 成功地将构建的文件从一个作业传输到另一个作业,则需要使用artifacts。
Gitlab CI 将允许您定义一组文件和/或文件夹,以在作业结束时捆绑到工件中。如果您指定了对第一个作业的依赖关系,则该工件将可在后续阶段的作业中使用。
如果您不想在部署阶段获取 git 存储库,可以将您的设置GIT_STRATEGY
为none
. 有关此的更多信息,请参见此处。
这是对文件的修改.gitlab-ci.yml
以完成所有这些操作:
before_script:
- sudo apt-get -y install default-jdk
- sudo add-apt-repository -y ppa:cwchien/gradle
- sudo apt-get -y update
- sudo apt-get -y install gradle
- curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
- sudo apt-get install -y nodejs
- sudo npm install -g pm2
stages:
- build
- test
- deploy
after_script:
jobBuild:
stage: build
script:
- ( cd my-lib; gradle build assemble)
only:
- master
artifacts:
paths:
- path/to/folder/containing/build/files # for example my-lib
jobDeploy:
before_script:
stage: deploy
variables:
GIT_STRATEGY: none
dependencies:
- jobBuild
script:
- cd path/to/folder/containing/build/files # for example my-lib
- <some shell scripts>
only:
- master
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1842 次 |
最近记录: |