Jad*_*dda 7 jenkins docker jenkins-pipeline
我有BookStore Spring Boot项目,需要通过Jenkins进行部署。安装在我的本地计算机(macOS)中的Docker和创建的Jenkinsfile如下
pipeline
{
agent
{
docker
{
image 'maven:3-alpine'
//This exposes application through port 8081 to outside world
args '-u root -p 8081:8081 -v /var/run/docker.sock:/var/run/docker.sock '
}
}
stages
{
stage('Build')
{
steps
{
sh 'mvn -B -DskipTests clean package'
}
}
stage('Test')
{
steps {
//sh 'mvn test'
sh 'echo "test"'
}
post {
always {
//junit 'target/surefire-reports/*.xml'
sh 'echo "test"'
}
}
}
stage('Deliver for development')
{
when {
branch 'development'
}
steps {
sh './jenkins/scripts/deliver-for-development.sh'
input message: 'Finished using the web site? (Click "Proceed" to continue)'
}
}
stage('Deploy for production')
{
when {
branch 'production'
}
steps {
sh './jenkins/scripts/deploy-for-production.sh'
input message: 'Finished using the web site? (Click "Proceed" to continue)'
}
}
stage('Deliver') {
when {
branch 'production'
}
steps {
sh 'bash ./jenkins/deliver.sh'
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我在詹金斯创建了多分支管道,当我尝试运行它时,出现以下错误
/Users/Shared/Jenkins/Home/workspace/BookStore_master-VPWQ32ZZPV7CVOXNI4XOB3VSGH56MTF3W34KXKZFJKOBMSGLRZQQ@tmp/durable-70dd5a81/script.sh: line 2: docker: command not found
script returned exit code 127
Run Code Online (Sandbox Code Playgroud)
我觉得这很奇怪,因为docker在本地计算机中可用,并且还配置了“ 全局工具配置”部分,并提供了适当的详细信息,如下所示。我调查了几篇文章,到目前为止,没有一种解决方案有效。
小智 5
我在 Mac 上遇到了同样的问题,以下答案对我有所帮助。
docker:找不到命令(mac mini)仅发生在 jenkins shell 步骤中,但可以在命令提示符下工作。
解决方案是将以下行添加到 /usr/local/Cellar/jenkins-lts/2.176.3/homebrew.mxcl.jenkins-lts.plist 文件中,以便 Jenkins 能够从主机找到 docker 命令。
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/Docker.app/Contents/Resources/bin/:/Users/Kh0a/Library/Group\ Containers/group.com.docker/Applications/Docker.app/Contents/Resources/bin</string>
</dict>Run Code Online (Sandbox Code Playgroud)
我能够通过从全局工具配置部分检索 Docker 和 Maven 值并将它们添加到环境 PATH 来解决此问题,如下所示
更新了Jenkinsfile:
node {
stage('Initialize')
{
def dockerHome = tool 'MyDocker'
def mavenHome = tool 'MyMaven'
env.PATH = "${dockerHome}/bin:${mavenHome}/bin:${env.PATH}"
}
stage('Checkout')
{
checkout scm
}
stage('Build')
{
sh 'uname -a'
sh 'mvn -B -DskipTests clean package'
}
stage('Test')
{
//sh 'mvn test'
sh 'ifconfig'
}
stage('Deliver')
{
sh 'bash ./jenkins/deliver.sh'
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9806 次 |
| 最近记录: |