[英]Bundle install really slow on Jenkins Pipeline (AWS EC2 Instance)
我在 AWS EC2 Linux 实例上运行 Jenkins,我正在尝试在 GitHub 上捆绑安装我的 rails 存储库所需的 gem。
这是我为测试而创建的一个新项目,但捆绑包需要数小时,Jenkins 冻结,我需要重新启动服务器和 Jenkins 并且它最终永远无法完成 gems 的安装。
这是我的代码:
pipeline {
agent { docker { image 'ruby:2.6.6' } }
stages {
stage('Fetching Git') {
steps {
git credentialsId: 'user-key',
url: 'git@github.com:user/jenkins_project.git'
}
}
stage('Build') {
steps {
sh 'gem install bundler'
sh 'bundle install --jobs 4'
sh 'RAILS_ENV=test rake db:migrate'
}
}
stage('Test') {
steps {
sh 'RAILS_ENV=test bundle exec rspec --format RspecJunitFormatter --out result_spec.xml'
}
}
}
}
我尝试做的是:
捆绑安装时使用 --jobs (它似乎不起作用)
打开时在 Gemfile 上使用 http 而不是 https
来源“http://rubygems.org”
我知道这是不安全的。 这似乎也不起作用。 3.也试过这个:
echo 'export MAKE="make -j$(nproc)"' >> $home/.bash_profile
time MAKE="make --jobs 8" bundle install
从这里( https://build.betterup.com/one-weird-trick-that-will-speed-up-your-bundle-install/ )。 但它也不起作用。
关于为什么会发生这种情况以及如何解决它的任何想法,非常感谢!
通过以下方式解决了这个问题:
代码将是这样的:
pipeline {
agent {
docker {
image 'ruby:2.6.6'
label 'linux_slave'
}
}
stages {
stage('Fetching Git') {
steps {
git credentialsId: 'user-key',
url: 'git@github.com:user/jenkins_project.git'
}
}
stage('Build') {
steps {
sh 'gem install bundler:2.0.1'
sh 'bundle install'
sh 'RAILS_ENV=test rake db:migrate'
}
}
}
}
希望对有需要的人有所帮助!
将此添加为 gem install 之前的第一行,因为每个安装的 package 的大小会更小,因为没有下载文档
'echo''gem: --no-document'' > ~/.gemrc'
我已经将它用于 Travis,它帮助很大
stage('Build') {
steps {
sh 'echo''gem: --no-document'' > ~/.gemrc'
sh 'gem install bundler'
sh 'bundle install --jobs 4'
sh 'RAILS_ENV=test rake db:migrate'
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.