Jenkins 相关二(重要)

  • Post author:
  • Post category:其他


jenkins官网

https://www.jenkins.io/download/



特殊报错



坑一:

问题描述:

在使用Jenkins打包的时候,抛出这样的错,但JDK和Maven都是已经安装,没问题了的。其中Jenkins用的Pipline流水线来部署项目。

问题解决:

在使用Pipline部署项目的时候,本地区编译代码是自动使用 /usr/bin/java 的软连接来编译的,需要查看以下此软连接是不是指向了JAVA_HOME中 bin 目录下的 java命令,如果不是,直接删除掉此软连接,并新建:ln -s /usr/local/jdk8/bin/java /usr/bin/java



解决方法:

ln -s /usr/local/jdk8/bin/java /usr/bin/java



坑二:报错

mvn clean install -pl starts-common -Dmaven.test.spik=true -Ptest -e

/var/lib/jenkins/workspace/starts_pipeline@tmp/durable-cb5301a6/script.sh: line 1: mvn: command not found



解决方法:

sudo ln -s /usr/local/apache-maven-3.6.3/bin/mvn /usr/local/bin/mvn

sudo ln -s /usr/local/apache-maven-3.6.3/bin/mvn /usr/bin/mvn



坑三:

INFO: Retrying request to {}->unix://localhost:80

Dec 04, 2021 6:00:30 AM org.apache.http.impl.execchain.RetryExec execute

INFO: I/O exception (java.io.IOException) caught when processing request to {}->unix://localhost:80: Permission denied

Dec 04, 2021 6:00:30 AM org.apache.http.impl.execchain.RetryExec execute

INFO: Retrying request to {}->unix://localhost:80

[WARNING] An attempt failed, will retry 1 more times

org.apache.maven.plugin.MojoExecutionException: Could not build image

at com.spotify.plugin.dockerfile.BuildMojo.buildImage (BuildMojo.java:185)

at com.spotify.plugin.dockerfile.BuildMojo.execute (BuildMojo.java:105)

at com.spotify.plugin.dockerfile.AbstractDockerMojo.tryExecute (AbstractDocker



解决方法

chmod 777 /var/run/docker.sock



坑四:这是真坑,太坑了

jenkins pipeline 配置publish over ssh bash 插件,远程部署,无法执行shell脚本

最开始是这样的报错下面这个,后面百度说可以看日志 verbose 变为true

 sshPublisher(publishers: [sshPublisherDesc(configName: "master_service", transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: "/opt/jenkins_shell/deploy.sh $harbor_url $harbor_project $service $tag $port ", execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: true)])

在这里插入图片描述

在这里插入图片描述



解决方法:

自己windos 上穿件的一个sh脚本,哭了…

1、重新在linux上创建脚本复制内容

2、改该shell脚本格式,方法如下:sed -i “s/\r//” deploy.sh。



坑五:jenkins:配置ssh 密钥时报错

这是一个坑 解决jenkins 秘钥存在但是新增的时候报错 说找不到秘钥

秘钥 首行:—–BEGIN OPENSSH PRIVATE KEY——

jenkins 版本在检验密钥时还不支持这种格式



解决方法:重新生成秘钥

ssh-keygen -m PEM -t rsa -b 4096

秘钥头部—–BEGIN RSA PRIVATE KEY—–

https://www.cnblogs.com/architectforest/p/13707244.html

https://www.bbsmax.com/A/n2d9qjnwdD/



坑六

jenkins.plugins.publish_over.BapPublisherException: Failed to connect and initialize SSH connection. Message: [Failed to connect session for config [master_service]. Message [Auth fail]]



解决方法:

说明秘钥不对重新 复制,ssh-copy-id 机器IP



前言



一、Role-based Authorization Strategy 用户权限管理插件



下载插件 (感觉用的少)

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。



开启全局策略,安装插件后才会有

在这里插入图片描述



角色管理

在这里插入图片描述

在这里插入图片描述



有3种角色类型,(Global roles、Item roles,多些)

在这里插入图片描述



用户管理

在这里插入图片描述

在这里插入图片描述



分配权限(填写的,不是选择用户)



二、凭证管理(用于管理 拉取gitLab 代码账号密码)

Credentials Binding Plugin 证书凭证管理 下载插件

在这里插入图片描述

在这里插入图片描述



三、构建一个自由风格的软件项目

在这里插入图片描述

在这里插入图片描述

#!/bin/bash
echo "编译构建开始!"
cd /var/lib/jenkins/workspace/auth/authentication
mvn clean install -Dmaven.test.spik=true -Ptest -e
echo "编译构建结束!"



四、构建一个maven项目



安装插件 Maven Integration plugin

clean install -Dmaven.test.skip=true -Ptest -e 失败有2种可能

一种是maven 仓库没有权限

chown -R jenkins:jenkins 仓库地址

二是jdk 和 maven的配置

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述



五、maven 多模块构建(重要)

clean install -pl $service -Dmaven.test.spik=true -Ptest -e

Extended Choice Parameter 多选参数插件

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述



六、流水线构建(重要)

涉及到语法

插件下载 Pipeline

在这里插入图片描述



gitLab 拉取代码

用工具生成代码片段

在这里插入图片描述

在这里插入图片描述

生成的代码赋值过去 。

在这里插入图片描述



编译打包 (sh + 命令)

在这里插入图片描述

在这里插入图片描述



本地管理 脚本

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述



七、构建方案



点击后台(用的多)



身份验证令牌(用的少)



gitLab 钩子(用的一般)

需要安装插件

Gitlab Hook GitLab

在这里插入图片描述

在这里插入图片描述


参照 我的另一篇帖子



持续集成邮件



远程拉取镜像插件 Publish over SSH



SSH免密登录

在这里插入图片描述

cd /root/.ssh/



Harbor 密码pipeline语法

在这里插入图片描述

stage('编译构建代码/打包镜像、打标签、推送到镜像仓库') {
            steps {
                echo '编译构建代码---------------------------------->'
                sh "mvn clean install -pl ${service} -Dmaven.test.spik=true -Ptest -e dockerfile:build"
                //打标签
                echo '开始打标签---------------------------------->'
                sh "docker tag ${imagesName} ${harbor_url}/${harbor_project}/${imagesName}"


                withCredentials([usernamePassword(credentialsId: "${harbor_auth}", passwordVariable: 'password', usernameVariable: 'username')]) {
                    // some block
                  echo '登录镜像仓库---------------------------------->'
                  sh "docker login -u ${username} -p ${password} ${harbor_url}";
                  //推送到镜像仓库
                  echo '开始推送到镜像仓库---------------------------------->'
                  sh "docker push  ${harbor_url}/${harbor_project}/${imagesName}"

                  echo '镜像推送仓库成功---------------------------------->'
                }
            }
        }



插件拉取远程 Publish Over SSH

在这里插入图片描述



版权声明:本文为qq_38058456原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。