我正在 AWS EC2 Linux 實體上運行 Jenkins,并且我正在嘗試在 GitHub 上捆綁安裝我的 rails 存盤庫所需的 gem。
這是我為測驗而創建的一個新專案,但捆綁包需要幾個小時,Jenkins 凍結,我需要重新啟動服務器和 Jenkins,但它最終從未完成安裝 gem。
這是我的代碼:
pipeline {
agent { docker { image 'ruby:2.6.6' } }
stages {
stage('Fetching Git') {
steps {
git credentialsId: 'user-key',
url: '[email protected]: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/)。但它也不起作用。
關于為什么會發生這種情況以及我如何解決它的任何想法都非常感謝!
uj5u.com熱心網友回復:
通過以下方式解決了這個問題:
- 使用 Java 和 Jenkins 創建主服務器
- 使用 Java & Git & Docker 創建從服務器(稱為“linux_slave”)
代碼將是這樣的:
pipeline {
agent {
docker {
image 'ruby:2.6.6'
label 'linux_slave'
}
}
stages {
stage('Fetching Git') {
steps {
git credentialsId: 'user-key',
url: '[email protected]:user/jenkins_project.git'
}
}
stage('Build') {
steps {
sh 'gem install bundler:2.0.1'
sh 'bundle install'
sh 'RAILS_ENV=test rake db:migrate'
}
}
}
}
希望它在某個時候可以幫助有需要的人!
uj5u.com熱心網友回復:
在 gem install 之前將此添加為第一行,因為每個安裝的包的大小都會更小,因為沒有隨它下載檔案
sh 'echo gem: --no-document > ~/.gemrc'
我已經將它用于 Travis,它有很大幫助我不完全確定 Jenkins 語法,但請嘗試以下一個
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'
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/364009.html
上一篇:自定義型別總是改變記錄,讓它變臟
