Git+Jenkins基本使用_jenkins git-程序员宅基地

技术标签: 自动化部署  

Git+Jenkins基本使用

本章资源请访问
https://download.csdn.net/download/weixin_54373617/19447568

技能目标:

  • 了解 Jenkins 持续集成工具
  • 学会安装 Jenkins 持续集成工具
  • 学会利用Jenkins 实现源码自动打包部署

案例分析

案例概述

随着软件开发复杂度的不断提高,团队成员之间如何更好地协同工作以确保软件开发的质量,已经慢慢成为开发过程中不可回避的问题。Jenkins 自动化部署可以解决集成、测试、部署等重复性的工作,工具集成的效率明显高于人工操作;并且持续集成可以更早的获取代码变更的信息,从而可以更早的进入测试阶段;并且能够更早的发现问题,这样解决问题的成本就会显著下降。持续集成缩短了从开发、集成、测试、部署各个环节的时间,从而也缩短了中间出现的等待时间。持续集成也意味着开发、集成、测试、部署得以持续。所以,当配置完 Jenkins 持续集成持续交付环境后,就可以把发布的任务交给集成服务器去处理了。本章将使用 Maven(Ant) 等来实现 Java 项目自动化构建发布部署。这些工具可以帮助在构建过程中实现自动化发布、回滚等动作。

案例前置知识点

1. 什么是 Jenkins

Jenkins 原名 Hudson,2011 年改为现在的名字,它是一个开源的实现持续集成的软件工具。官方网站网址:https://jenkins.io/。

Jenkins 能实时监控持续集成过程中所存在的问题,提供详细的日志文件和提醒功能, 还能通过图表的形式,形象地展示项目构建的趋势和稳定性。
Jenkins 包含以下几个特点:

  • 易安装:从官网仅需要下载一个 jenkins.war 文件后,直接运行,无需额外的安装,更无需安装数据库;

  • 易配置:提供友好的 GUI 配置界面;

  • 变更支持:Jenkins 能从代码仓库(SVN /Git)中获取并产生代码更新列表,并显示到编译输出信息中;

  • 支持永久链接:用户是通过 Web 来访问 Jenkins 的,而这些 Web 页面的链接地址都是永久链接地址,可以在各种文档中直接使用该链接;

  • 集成 E-Mail/RSS/IM:当完成一次集成后,可通过这些工具实时收取集成结果(构建一次集成需要花费一定时间,有了这个功能,就可以在等待结果过程中,干别的事情);

  • JUnit/TestNG 测试报告:是以图表等形式提供详细的测试报表功能;

  • 支持分布式构建:Jenkins 可以把集成构建等工作分发到多台计算机中完成;

  • 文件指纹信息:Jenkins 会保存构建集成所产生的 jars 文件、集成构建使用了哪个版本的 jars 文件等构建记录;

  • 支持第三方插件:Jenkins 支持第三方插件,这使得 Jenkins 功能变得越来越强大。

2. 持续集成的作用

持续集成(Continuous Integration,简写为 CI)可以保证团队开发人员提交代码的质量, 减轻软件发布的时间压力。在持续集成过程中任何一个环节都是自动完成的,无需太多的人工干预,这样有利于减少重复过程,从而可以节省时间、费用和工作量。

3. 持续集成的特点

持续集成是一个自动化的、周期性的集成测试过程,检出代码、编译构建、运行测试、 结果记录、测试统计等过程都是自动完成的,无需人工干预。持续集成需要有专门的集成服务器来执行集成构建操作,同时需要有代码托管工具的支持。

4. 持续集成的工作原理

Jenkins 的工作原理是先将源代码从 SVN/Git 版本控制系统中拷贝一份到本地,然后根据设置的脚本进行 build(构建)。整个系统的关键就是 build 脚本,build 脚本告诉 Jenkins 在一次集成中需要执行的任务,如下图所示。
在这里插入图片描述

5. Maven 介绍

Maven 项目对象模型(POM)是可以通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。

Maven 除了程序构建能力出色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 脚本就可以构建简单的项目。由于Maven 是面向项目的方法,许多 Apache Jakarta 项目发布时都使用 Maven,而且公司企业项目采用 Maven 的比例也在持续增长。

Maven 这个单词意为知识的积累,最初在 Jakata Turbine 项目中用来简化构建过程。当时,有一些项目(有各自 Ant build 文件)仅有细微的差别,而 JAR 文件都由 CVS 维护。于是希望有一种标准化的方式构建项目,一个清晰的方式定义项目的组成,一个容易的方式发布项目的信息,以及一种简单的方式在多个项目中共享 JARs,因此 Maven 就这样诞生了。

案例环境

1. 本案例环境

本案例共使用三台服务器,每台服务器划分不同的服务角色,最后通过配置 Jenkins 实现自动打包部署 Java 项目。本案例具体实验环境如下表所示。

主机名 系统 IP地址 配置 主要软件
jenkins CentOS7.9 192.168.10.101 2C/4G Jenkins、JDK、Tomcat、maven、git
docker CentOS7.9 192.168.10.102 1C/1G docker、JDK、
git CentOS7.9 192.168.10.103 1C/1G git

2. 案例拓扑

本章案例拓扑图,如下图所示。
在这里插入图片描述

3. 案例需求

(1) 从 GitHub 下载开源的博客系统到本地,然后将开源的博客系统源码提交到 Git 本地代码版本控制系统。
(2) 配置 Jenkins 持续集成持续交付工具,完成 Java 项目自动打包部署等工作。

4. 案例实现思路

(1) 准备 Jenkins 基础环境。

(2) Jenkins 基本配置。

(3) 实现 Jenkins 自动打包。

案例实施

准备 Jenkins 基础环境

1. 准备系统环境,所有主机操作

修改主机名

192.168.10.101主机操作
hostnamectl set-hostname jenkins
su
192.168.10.102主机操作
hostnamectl set-hostname docker
su
192.168.10.103主机操作
hostnamectl set-hostname git
su

关闭防火墙SELinux和网络管理

systemctl stop firewalld && systemctl disable firewalld
systemctl stop NetworkManager && systemctl disable NetworkManager
sed -i '/^SELINUX=/s/enforcing/disabled/' /etc/selinux/config
setenforce 0

安装时间同步服务

yum -y install chrony
systemctl start chronyd
systemctl enable chronyd
chronyc sources -v

2. 使用 YUM 安装并配置 Git, git主机操作

yum -y install git       #jenkins主机也需执行此条命令
useradd git
passwd git 
更改用户 git 的密码 。
新的 密码:                           #密码自定义
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

su - git   #切换到指定帐户,同时切换到git的家目录
mkdir tale.git
cd tale.git
git --bare init
初始化空的 Git 版本库于 /home/git/tale.git/

ll
总用量 12
drwxrwxr-x. 2 git git   6 67 15:36 branches
-rw-rw-r--. 1 git git  66 67 15:36 config
-rw-rw-r--. 1 git git  73 67 15:36 description
-rw-rw-r--. 1 git git  23 67 15:36 HEAD
drwxrwxr-x. 2 git git 242 67 15:36 hooks
drwxrwxr-x. 2 git git  21 67 15:36 info
drwxrwxr-x. 4 git git  30 67 15:36 objects
drwxrwxr-x. 4 git git  31 67 15:36 refs

此时,Git 服务器就已经部署完成。但是,用户还不能向服务器推送数据,也不能克隆Git 版本仓库。因为要在服务器上开放至少一种支持 Git 的协议,比如:HTTP/HTTPS/SSH 协议等,现在使用最多的就是 HTTPS 和 SSH 协议。

切换至 jenkins 主机也就是 Git 的客户机(192.168.10.101)生成免交互 SSH 密钥认证。

ssh-keygen   #一路回车
ssh-copy-id [email protected]	//将客户机的公钥传递给Git 服务器
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '192.168.10.103 (192.168.10.103)' can't be established.
ECDSA key fingerprint is SHA256:2fQLgiER9lL5D2sIHiKrcE9C9lAc3IRuu4+kyZIGMR4.
ECDSA key fingerprint is MD5:14:58:01:3a:bb:1c:72:e1:1f:21:14:4e:ba:b5:ba:32.
Are you sure you want to continue connecting (yes/no)? yes        
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
[email protected]'s password:     #密码是git的用户密码

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '[email protected]'"
and check to make sure that only the key(s) you wanted were added.

这样,就可以从 Git 服务器中克隆版本仓库了(此时目录内没有文件是正常的)。

pwd  #git主机操作
/home/git/tale.git 

git clone git@192.168.10.103:/home/git/tale.git     #jenkins主机操作
正克隆到 'tale'...
warning: 您似乎克隆了一个空版本库。

3. 下载开源博客系统,jenkins主机操作

将开源博客系统源码克隆到本地 Git 仓库目录,然后添加注释“all tale”,并提交到 Git版本仓库中。

mkdir tale-test
cd tale-test/
#上传tale.git.gz的包
cd
cp -rf tale-test/tale/* tale/
git add .        #上传到暂存区
git commit -m "all tale"    #提交到git版本仓库

*** Please tell me who you are.

Run

  git config --global user.email "[email protected]"
  git config --global user.name "Your Name"

to set your account's default identity.
Omit --global to set the identity only in this repository.

fatal: unable to auto-detect email address (got 'root@jenkins.(none)')


git config --global user.email "[email protected]"     #直接复制执行
git config --global user.name "Your Name"

git commit -m "all tale"   #再次提交到git的版本库中

git push -u origin master    #默认 push 到master 主干
Counting objects: 352, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (303/303), done.
Writing objects: 100% (352/352), 5.23 MiB | 0 bytes/s, done.
Total 352 (delta 38), reused 0 (delta 0)
To git@192.168.10.103:/home/git/tale.git
 * [new branch]      master -> master
分支 master 设置为跟踪来自 origin 的远程分支 master。

4. 安装部署 Jenkins,jenkins主机操作

(1) 部署 Tomcat
提前下载好 JDK 与 Tomcat 软件包,用于部署 Tomcat 服务。

#先上传jdk-8u202-linux-x64.tar.gz的JDK的安装包
cd
tar zxvf jdk-8u202-linux-x64.tar.gz
mv jdk1.8.0_202/ /usr/local/java

vim /etc/profile
#文件末尾添加以下内容
export JAVA_HOME=/usr/local/java/
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH

source /etc/profile
java -version
java version "1.8.0_202"
Java(TM) SE Runtime Environment (build 1.8.0_202-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)
#上传apache-tomcat-8.5.56.tar.gz的安装包
tar zxvf apache-tomcat-8.5.56.tar.gz
mv apache-tomcat-8.5.56 /usr/local/tomcat

#上传apache-maven-3.6.0-bin.tar.gz的安装包
tar zxvf apache-maven-3.6.0-bin.tar.gz
mv apache-maven-3.6.0 /usr/local/maven

cd /usr/local/tomcat/bin/
ls
bootstrap.jar       ciphers.sh                    daemon.sh         shutdown.bat     tomcat-native.tar.gz
catalina.bat        commons-daemon.jar            digest.bat        shutdown.sh      tool-wrapper.bat
catalina.sh         commons-daemon-native.tar.gz  digest.sh         startup.bat      tool-wrapper.sh
catalina-tasks.xml  configtest.bat                setclasspath.bat  startup.sh       version.bat
ciphers.bat         configtest.sh                 setclasspath.sh   tomcat-juli.jar  version.sh

./startup.sh

(2) 部署 Jenkins
从官网 http://mirrors.jenkins.io/war,下载 jenkins.war 软件包,尽量下载较新版本的Jenkins,旧版本在实验中可能会出现默认插件不支持安装。将 jenkins.war 文件保存到Tomcat 服务的 /usr/local/tomcat/webapps 目录下。启动 Tomcat 就会自动部署 Jenkins。将 jenkins.war 软件包上传到 Tomcat 服务的对应目录,

cd /usr/local/tomcat/webapps/
#在上传jenkins.war 软件包到/usr/local/tomcat/webapps/下

ls
docs  examples  host-manager  jenkins  jenkins.war  manager  ROOT

然后在浏览器的地址栏中输入http://192.168.10.101:8080/jenkins 便可开始部署 Jenkins,如下图所示。
初次部署 Jenkins,会生成一个初始登录密码。
在这里插入图片描述如下所示

cat /root/.jenkins/secrets/initialAdminPassword
33674845dc6941b1a07f355e45efcf7a

在这里插入图片描述复制这段密码到浏览器的“管理员密码”框中,并单击“继续”登录 Jenkins,然后选择“安装推荐插件”,如下图所示。在实际生产环境下,可以根据需求安装 Jenkins 插件。
在这里插入图片描述在安装插件的过程中,个别插件可能因为网络问题会出现安装失败现象。如果出现插件 安装失败现象,可暂时忽略,点击继续。之后可到“插件管理”内安装对应插件。

在这里插入图片描述
插件安装完后,会出现“创建第一个管理员用户”的提示,本案例中创建的用户、密码与 邮件地址,如下图所示。
在这里插入图片描述
创建完管理员用户后单击“保存并完成”→“开始使用 Jenkins”,可进入 Jenkins 首页,如下图所示。
在这里插入图片描述在这里插入图片描述在这里插入图片描述
至此,Jenkins 已经部署完毕。

Jenkins 配置

在部署完 Jenkins 工具后,就可以对 Jenkins 进行配置。本案例的配置主要包括以下几个步骤。

(1) 安装 Jenkins 必要插件;

(2) 添加验证凭据;

(3) 添加 Publish Over SSH 远程主机;

(4) 配置 Maven、JDK、Git 环境;

(5) 构建 tale 基础镜像;

(6) 构建新的工程项目;

(7) 验证 Jenkins 持续集成持续交付。

1. 安装 Jenkins 必要插件

在 Jenkins 首页中,单击左侧的“Manage Jenkins”→“Manage Plugins”→“可选插件”, 进入如下图所示插件安装界面,在搜索框中,输入要安装的 Publish Over SSH 、Maven Integration 插件,并勾选其左侧的复选框,单击“直接安装”按钮,开始插件安装操作。
在这里插入图片描述在这里插入图片描述在这里插入图片描述安装的jenkins 如果安装插件失败,可以到浏览器搜索 fotiaoqiang 翻一下墙,然后再重新下载, 如果还不行请更换清华的源地址https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.jso ,然后再重新下载,如下所示

方法一
在这里插入图片描述在这里插入图片描述之后就可以重新尝试安装所需的插件了

方法二
在这里插入图片描述在这里插入图片描述在这里插入图片描述我这里选择一个是因为 Publish Over SSH 已经安装成功

2. 添加 Publish Over SSH 远程主机

在 Docker 主机上创建远程目录。

mkdir /data

在 Jenkins 首页中,单击“Manage Jenkins”→“Configure System”→“Publish over SSH”→“SSH Servers”→“新增”选项,添加 SSH 远程主机,如下图所示。输入 Name、Hostname、Username 必要信息后,单击“高级”选项→勾选“Use Password authentication,or use a different key”选项→输入“远程主机登录密码”→“Test Configuration”测试远程主机配置。测试远程主机配置成功后,单击“保存”按钮。

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

3. 配置 Maven、JDK、Git 环境

在 Jenkins 首页中,单击“Manage Jenkins”→“Global Tool Configuration”→“JDK”→“新增 JDK”。“JDK 别名”设置为“JDK1.8”,去掉“Install automatically”选项,“JAVA_HOME”设置为本案例中 JDK 实际安装路径“/usr/local/java”,如下图所示。
在这里插入图片描述在这里插入图片描述在这里插入图片描述
Git 配置保持默认即可,以上各项配置完毕后,点击“保存” 推荐重启下 Jenkins 服务,重启命令如下所示。
在这里插入图片描述

#jenkins主机操作
cd /usr/local/tomcat/bin
sh shutdown.sh
sh startup.sh

然后重新刷新以下jenkins的 Web界面重新登录jenkins

4. 构建 tale 基础镜像

在 Docker 主机(192.168.10.102)上,构建 tale 基础镜像。在构建基础镜像之前需要先安装 Docker 与 JDK。

yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast
yum -y install docker-ce
mkdir /etc/docker

cat >> /etc/docker/daemon.json << EOF
{
    
  "registry-mirrors": ["https://4edj9p2c.mirror.aliyuncs.com"]
}
EOF

systemctl daemon-reload
systemctl start docker
systemctl restart docker
#上传jdk-8u202-linux-x64.tar.gz 安装包
tar zxvf jdk-8u202-linux-x64.tar.gz
mv jdk1.8.0_202/ /usr/local/java/

vim /etc/profile
#文件末尾添加如下内容
export JAVA_HOME=/usr/local/java/
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH

source /etc/profile

java -version
java version "1.8.0_202"
Java(TM) SE Runtime Environment (build 1.8.0_202-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)

构建 tale 基础镜像时依赖 Dockerfile 等相关文件,所以需要先创建 tale 基础镜像所用到的文件。

mkdir /git
cd /git
#上传并查看构建 tale 基础镜像所需文件

ll
总用量 8
-rw-r--r--. 1 root root 149 67 21:55 Dockerfile
-rw-r--r--. 1 root root 178 67 21:55 run.sh


docker build -t 192.168.10.102:5000/tale:v1 .
Sending build context to Docker daemon  3.072kB
Step 1/7 : FROM docker.io/openjdk:8u121-jdk
8u121-jdk: Pulling from library/openjdk
10a267c67f42: Pull complete 
fb5937da9414: Pull complete 
9021b2326a1e: Pull complete 
8c6c40e9ec4f: Pull complete 
7a63e1725461: Pull complete 
79e8ed83f43a: Pull complete 
161cbb85a481: Pull complete 
41e103826bb9: Pull complete 
84f86e3b23d2: Pull complete 
Digest: sha256:1a7d24acca2020fe81f5864ee8e078ee3d3e738c04b717c99890888923d83e9e
Status: Downloaded newer image for openjdk:8u121-jdk
 ---> 9766c638ae8e
Step 2/7 : RUN mkdir /tale
 ---> Running in 0aa5f5c9c7f4
Removing intermediate container 0aa5f5c9c7f4
 ---> 06a6875e9df9
Step 3/7 : ENV TALE_HOME /tale
 ---> Running in 530948c8994d
Removing intermediate container 530948c8994d
 ---> 0eee9300aec7
Step 4/7 : EXPOSE 9000
 ---> Running in 58286f67e061
Removing intermediate container 58286f67e061
 ---> 9e1c70a85ca3
Step 5/7 : COPY run.sh /run.sh
 ---> 5cde3a1fcbef
Step 6/7 : RUN chmod 700 /run.sh
 ---> Running in d758aa40f6f1
Removing intermediate container d758aa40f6f1
 ---> 74edd2abfe34
Step 7/7 : ENTRYPOINT ["/run.sh"]
 ---> Running in 72cb67461f99
Removing intermediate container 72cb67461f99
 ---> f97267344b4f
Successfully built f97267344b4f
Successfully tagged 192.168.10.102:5000/tale:v1

5. 构建一个新的工程项目

在以上配置完成后,回到 Jenkins 首页,选择“Start building your software project”,输入一个任务名称“tale-test”, 并选择“构建一个 maven 项目”配置项,单击当前页面下方的“确定”按钮,如下图所示。
在这里插入图片描述在这里插入图片描述
在任务配置页面中,选择“源码管理”并选中“Git”,设置“Repository URL”地址为“[email protected]:/home/git/tale.git”,如下图所示。
在这里插入图片描述
之后,选择“Build”模块,“Goals and options”填写“clean package”,如下图所示。
在这里插入图片描述
选择“构建后操作”中的“Send build artfacts over SSH”选项,并进行配置,如下图所
示。
在这里插入图片描述在这里插入图片描述
Exec command 中执行命令如下所示:

cd /data/tale && tar zxf *.tar.gz
docker run -itd --name kgc-tale-test -p 9000:9000 -v /usr/local/java:/usr/local/jdk -v /data/tale:/tale 192.168.10.102:5000/tale:v1

以上全部配置完成后,单击“保存”即可。然后单击左侧的“Build now”,就开始 tale 项目的编译构建,直至任务构建完成。在构建过程中可以单击进度条查看控制台输出,如下图所示。
在这里插入图片描述在这里插入图片描述在这里插入图片描述
如下图所示,可以看到此工程任务已构建成功,并且在构建后,用于创建 tale 项目的 Docker Web 环境命令也执行成功。
在这里插入图片描述

验证 Jenkins 自动打包部署结果

1. 验证拷贝目录内容

在 Docker 主机上查看 tale 目录是否拷贝到/data 目录下,查询结果如下所示。

cd /data/tale/

ll
总用量 29324
drwxr-xr-x. 2 root root     4096 67 22:37 lib
drwxr-xr-x. 5 root root      153 67 22:29 resources
-rw-r--r--. 1 root root  6311283 67 22:37 tale-latest.jar
-rw-r--r--. 1 root root 23706906 67 22:37 tale.tar.gz
-rw-r--r--. 1 root root     3409 67 22:29 tool

从结果可知,Jenkins 已经将打好的 jar 包拷贝过来了。

2. 验证 tale 项目 Docker Web 环境

docker ps -a
CONTAINER ID   IMAGE                         COMMAND     CREATED         STATUS         PORTS                                       NAMES
9a0322e0af70   192.168.10.102:5000/tale:v1   "/run.sh"   2 minutes ago   Up 2 minutes   0.0.0.0:9000->9000/tcp, :::9000->9000/tcp   kgc-tale-test

从上述结果可以得知,Web 容器已经创建成功,可以通过浏览器访问 tale 开源博客系统,在浏览器中输入 http://192.168.10.102:9000 即可访问,访问结果如下图所示。
在这里插入图片描述至此,Jenkins 自动打包部署完毕。

如果觉的上述安装方法安装插件时很慢很麻烦可以用下面方式安装jenkins(可选)

部署jenkins

安装java环境

#添加第三方源
yum -y install epel-release

#安装java环境
yum -y install java-1.8.0-openjdk

### 安装Jenkins
````javascript
#添加Jenkins源
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo

#添加密钥证书
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

#安装jenkins
yum -y install jenkins

#启动Jenkins
systemctl start jenkins

#添加开机自启动
systemctl enable jenkins

#查看密码
tail /var/lib/jenkins/secrets/initialAdminPassword

修改插件地址

进入Jenkins工作目录
cd /var/lib/jenkins/updates/

[root@jenkins updates]$ ls
default.json      hudson.plugins.gradle.GradleInstaller  hudson.tasks.Maven.MavenInstaller  ru.yandex.qatools.allure.jenkins.tools.AllureCommandlineInstaller
default.json.bak  hudson.tasks.Ant.AntInstaller          hudson.tools.JDKInstaller

使用sed命令修改default.json文件
vim default.json
#老版本
sed -i 's#http://updates.jenkins-ci.org/download#https://mirrors.tuna.tsinghua.edu.cn/jenkins#g' default.json && sed -i 's#http://www.google.com#https://www.baidu.com#g' default.json

#最新的jenkins版本中,已经有了调整,配置文件中的地址不再是updates.jenkins-ci.org,所以命令也需要实时更新
sed -i 's#https://updates.jenkins.io/download#https://mirrors.tuna.tsinghua.edu.cn/jenkins#g' default.json && sed -i 's#http://www.google.com#https://www.baidu.com#g' default.json

更改之后重启Jenkins,安装插件

systemctl restart jenkins

因为用yum安装后会生成 jenkins 用户,要用 jenkins 用户远程登录到git主机 如果不配置就会在任务配置页面中,选择“源码管理”并选中“Git”,设置“Repository URL”地址为“[email protected]:/home/git/tale.git”,会出错
在这里插入图片描述

需要在jenkins主机中做如下操作

vim /etc/passwd
#找到 jenkins 用户在末尾修改成/bin/bash 

su - jenkins  #切换到jenkins用户

#用jenkins用户做免密登录git服务器
ssh-keygen    #一路回车
ssh-copy-id git@192.168.10.103

exit

vim /etc/sudoers
root    ALL=(ALL)       ALL
#在root用户下面添加如下内容
jenkins  ALL=(ALL)   NOPASSWD: ALL


上面的弄完后就可以做接着做了

可以在最后"Build Now"时会出现路径的权限等等的问题 在“控制台输出”中可看到详细信息需要自己修改下,修改完后再Build Now 就可以了
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_54373617/article/details/117659937

智能推荐

sqluldr2 报错ora-24345: A Truncation or null fetch error occurred_ora24345解决方法sqluldr2-程序员宅基地

文章浏览阅读3.2k次。source /etc/profile;source /root/.bash_profile;unset NLS_LANG;sqluldr2 user=sjgj/[email protected]:1521/client query="select ZJ as ZJ,TIME as TIME,DHHM as DHHM,XM as XM,LDNR as LDNR,BLLC as B..._ora24345解决方法sqluldr2

网站SEO优化-程序员宅基地

文章浏览阅读368次。不管正的歪的很多站长都可以出口成章的总结出一大堆。然而万变不离其宗,SEO优化事实上也就那么多东西。其次再加上SEOer对搜索引擎规则的理解,顺势而行后方可作到一优百优,往往一个关键字上去了,其他的关键字全部都可以借势而上。今天二进制在这里不做具体技术性的解析,只分析一下如何做好

excel 画散点图 怎么设置图片的分辨率_Slynyrd像素画教程:像素画基础教程-程序员宅基地

文章浏览阅读221次。Slynyrd像素画教程:像素画基础教程作者:Slynyrd[1]翻译:三二 (转载请注明出处)关注公众号:教你画像素画微信号:pixelfish微博:教你画像素画2014在合适的条件下,你会对自己成长的速度感到惊讶。题图:Slynyrd像素画是什么?像素画是一种以低分辨率美学为特征的数码艺术。低分辨率是像素画的基本特征。然而,起决定因素是意图。应该以精确的方式仔细考虑像素,并不是说每一个像素都需..._excel 800像素

com.android.build.api.transform.TransformException-程序员宅基地

文章浏览阅读2.3k次。Error:Execution failed for task ':app:transformClassesWithDexForZhenghaoDebug'.&gt; com.android.build.api.transform.TransformException: java.lang.RuntimeException: com.android.ide.common.process.Proce..._com.android.build.api.transform.transformexception: java.lang.runtimeexcepti

ORACLE错误一览表-程序员宅基地

文章浏览阅读92次。ORACLE错误一览表,方便大家查询!ORA-00001: 违反唯一约束条件 (.)ORA-00017: 请求会话以设置跟踪事件ORA-00018: 超出最大会话数ORA-00019: 超出最大会话许可数ORA-00020: 超..._ora-01045: 用户 c##duaudit 没有 create session 权限; 登录被拒绝

java.awt包_Java中awt包-程序员宅基地

文章浏览阅读1.5k次。1. Java中awt包AWT事件模型Event1) 事件-描述发生了什么的对象2) 事件源-事件的产生器3) 事件处理器-接收事件、解释事件并处理用户交互的方法Button是ActionEvent的对象。事件处理器是一个方法。之前使用层次模型(现在已经不使用了)。事件监听器:委托模型。增加事件处理器button.addActionListener()import java.awt.BorderL..._import java.awt.event.actionevent; import java.awt.event.actionlistener; imp

随便推点

论述oracle数据备份与容灾恢复_site oracle容灾备份还原-程序员宅基地

文章浏览阅读1.7k次。论述oracle数据备份与容灾恢复oracle维护行业已经兴起了很多年了,企业与开发者都纷纷地意识到数据安全的重要性,现在大部分人都有意识地将个人电脑上的重要数据拷贝一份到移动硬盘上,若电脑坏掉,这些数据还可以找回来。这说明大家都有意识地保护好自己重要的数据。以上是个人数据备份的情况,那么企业如何进行数据备份呢?对于企业而言,数据备份越来越显得重要,办公自动化基本普及到每个企业,企业每天都_site oracle容灾备份还原

【SHRINK】只有启动行移动才可以使用shrink完成空块释放-程序员宅基地

文章浏览阅读118次。这里展示一下使用表的SHRINK技术完成空间的释放。同时注意,在使用这种方法之前要注意启动行移动的特性(如果不启用,通过报错信息亦可以得到相应的提示信息)。1.默认情况下表上的行移动是关闭的如果不是关闭的状态,我们也可以使用下面..._shrink space清理空块

H5页面input输入框含有键盘自带的表情符时显示异常_js h5输入框输入表情 显示键盘自带表情符-程序员宅基地

文章浏览阅读195次。H5页面input输入框含有键盘自带的表情符时显示异常_js h5输入框输入表情 显示键盘自带表情符

使用spring中的注解@Autowired,获取到的对象为null_springmvc 使用@autowired 调用dao时null-程序员宅基地

文章浏览阅读5.6k次。最近工作中遇到一个关于@AutoWired注解使用的细节问题,以前没有注意到,现在特意记录一下。问题描述:在我的一个工具类中,使用@Autowired需要注入一个dao对象,然后工具类的方法中会调用该dao对象中的方法,在运行时发现报空指针异常,dao对象居然是null。相关代码如下:工具类代码如下:/** * 对象级的码表转换工具类 * @author: lsl */p..._springmvc 使用@autowired 调用dao时null

【python】去除图片高光_图片去除光线python-程序员宅基地

文章浏览阅读5.9k次,点赞3次,收藏58次。参考:https://github.com/MarcioCerqueira/RealTimeSpecularHighlightRemoval论文:Real-Time High-Quality Specular Highlight Removal using Efficient Pixel Clustering图像增强:opencv去除图片的高光import cv2import os,shutil#找亮光位置def create_mask(imgpath): image = cv2.i_图片去除光线python

Cell简介和UITableViewCell的contentView_uitableviewcell contentview-程序员宅基地

文章浏览阅读3.2k次。•UITableView的每一行都是一个UITableViewCell,通过dataSource的tableView:cellForRowAtIndexPath:方法来初始化每一行•UITableViewCell内部有个默认的子视图:contentView,contentView是UITableViewCell所显示内容的父视图,可显示一些辅助指示视图••辅助指示视图的作用是显示一个表_uitableviewcell contentview