Slu*_*ugQ 11 python powershell gitlab cicd
我的 gitlab 管道已经运行了近六个月,现在意外失败。
之前的每一行都成功运行,然后会发生这种情况:
Setting up curl (7.52.1-5+deb9u16) ...
$ curl -s https://deb.nodesource.com/setup_12.x | bash
Cleaning up project directory and file based variables
ERROR: Job failed: exit code 1
Run Code Online (Sandbox Code Playgroud)
我一生都无法弄清楚到底发生了什么变化。我认为这可能与此问题有关,但我没有遇到任何网络问题、超时等问题。
我的 .gitlab-ci.yml 的轻度混淆版本。显然,我正在使用 .gitlab-ci.yml 来配置我的管道,并且我还使用共享的 GitLab 运行程序。
image: python:3.6-stretch
variables:
ACCESS_KEY_ID: **********
SECRET_ACCESS_KEY: **********
before_script:
- apt-get update
- apt-get install -y curl
- curl -s https://deb.nodesource.com/setup_12.x | bash
- apt-get install -y nodejs
- apt-get install -y npm
- npm install -g serverless
- pip install --upgrade awscli
- python --version
- nodejs --version
stages:
- deploy
deploy:
stage: deploy
only:
- master # We will run the CD only when something is going to change in master branch.
script:
- npm install # Archive the code repository.
- pip install -r requirements.txt
- cd services/service1/
- sls deploy -v --stage production
- cd ../../
- cd services/service2/
- sls deploy -v --stage production
- cd ../../
- cd services/service3/
- sls deploy -v --stage production
- cd ../../
environment:
name: master
Run Code Online (Sandbox Code Playgroud)
倒数第二行 ( Cleaning up project directory and file based variables ) 始终出现在 CI/CD 作业中,无论通过还是失败。
可能发生的情况是最后一个命令curl -s https://deb.nodesource.com/setup_12.x | bash失败。不幸的是,由于您正在下载删除文件并将其通过管道传输到 bash,因此您的管道很可能开始随机失败,因为该脚本不能保证每次都相同。
为了测试它,我创建了一个干净的 ubuntu 虚拟机,并运行该 curl 命令,并收到以下错误:
解决这个长期问题的最佳方法是创建一个容器,其中包含 CI 烘焙所需的所有依赖项,并将其存储在 GitLab 项目的容器注册表中,然后每次拉取该容器。这不仅可以节省您的 CI/CD 分钟时间,因为您不必每次都运行安装,而且可以防止您的依赖项发生变化并导致错误的确切问题。还值得注意的是,您在将外部下载的脚本传递给 bash 时应该非常小心,因为该脚本可能会更改为包含任何内容,并且您的 CI 会在不知不觉中运行它。
| 归档时间: |
|
| 查看次数: |
26729 次 |
| 最近记录: |