GitLab 部署作业从 git 获取更改
GitLab deploy job fetches changes from git
在我的项目中,部署脚本使用构建作业的结果,但我看到在我的部署作业中 GitLab CI 重新获取上次提交的所有更改,并删除构建生成的所有文件工作。我正在使用 Shell 执行器。
有没有办法阻止 GitLab CI 在部署作业上执行此操作,以便我的部署可以从构建作业中断的地方继续?
我试过:
cache:
untracked: true
在我的部署作业中,但似乎没有任何区别
我完整的 .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
关于 Gitlab 的更多信息 CI cache
首先,由于您要缓存的是构建作业中的文件,因此您可能需要将缓存规则添加到 jobBuild。您甚至可以通过在作业外定义它来全局定义缓存。
缓存机制的问题在于它是一个尽力而为的系统,这意味着缓存可能并不总是可用。
The cache is provided on a best-effort basis, so don't expect that the
cache will be always present. For implementation details, please check
GitLab Runner.
如果您想要将构建的文件在 100% 的时间内从一个作业传输到另一个作业,则需要使用 artifacts。
使用artifacts
Gitlab CI 将允许您定义一组文件 and/or 文件夹,以便在作业结束时捆绑到工件中。如果您指定对第一个作业的依赖性,那么该工件将可用于后期阶段的作业。
如果您不想在部署阶段获取 git 存储库,您可以将 GIT_STRATEGY
设置为 none
。有关此 here.
的更多信息
这里是对您的 .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
在我的项目中,部署脚本使用构建作业的结果,但我看到在我的部署作业中 GitLab CI 重新获取上次提交的所有更改,并删除构建生成的所有文件工作。我正在使用 Shell 执行器。
有没有办法阻止 GitLab CI 在部署作业上执行此操作,以便我的部署可以从构建作业中断的地方继续?
我试过:
cache:
untracked: true
在我的部署作业中,但似乎没有任何区别
我完整的 .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
关于 Gitlab 的更多信息 CI cache
首先,由于您要缓存的是构建作业中的文件,因此您可能需要将缓存规则添加到 jobBuild。您甚至可以通过在作业外定义它来全局定义缓存。
缓存机制的问题在于它是一个尽力而为的系统,这意味着缓存可能并不总是可用。
The cache is provided on a best-effort basis, so don't expect that the cache will be always present. For implementation details, please check GitLab Runner.
如果您想要将构建的文件在 100% 的时间内从一个作业传输到另一个作业,则需要使用 artifacts。
使用artifacts
Gitlab CI 将允许您定义一组文件 and/or 文件夹,以便在作业结束时捆绑到工件中。如果您指定对第一个作业的依赖性,那么该工件将可用于后期阶段的作业。
如果您不想在部署阶段获取 git 存储库,您可以将 GIT_STRATEGY
设置为 none
。有关此 here.
这里是对您的 .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