jenkins
持续集成 JENKINS java开发的,需要java的运行环境 官网 :https://jenkins.io/ 清华镜像:https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/jenkins-2.155-1.1.noarch.rpm yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/jenkins-2.155-1.1.noarch.rpm rpm -ivh jenkins-2.155-1.1.noarch.rpm systemctl start jenkins # 启动 systemctl enable jenkins # 开机自启 JENKINS插件管理 JENKINS 是一个框架,本身没什么,需要安装各种插件,来实现复杂的功能
vim /var/lib/jenkins/secrets/initialAdminPassword
docker run -d --name jenkins -p 8081:8080 \ -v /home/jenkins:/home/jenkins \ jenkins/jenkins:lts
docker exec -it jenkins bash
cat /var/jenkins_home/secrets/initialAdminPassword
重启docker镜像
持续集成 JENKINS java开发的,需要java的运行环境 官网 :https://jenkins.io/ 清华镜像:https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/jenkins-2.155-1.1.noarch.rpm yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/jenkins-2.155-1.1.noarch.rpm rpm -ivh jenkins-2.155-1.1.noarch.rpm systemctl start jenkins # 启动 systemctl enable jenkins # 开机自启 JENKINS插件管理 JENKINS 是一个框架,本身没什么,需要安装各种插件,来实现复杂的功能 # 启动的用户 vim /etc/sysconfig/jenkins JENKINS_USER="root" 改变以后对应的文件权限变成了root,所以当用户变为jenkins时,会出错,要把对应的文件权限变回jenkins # ./jenkins/config.xml
jenkins错误 Failed to connect to repository :Error performing command:git ls-remote -h git@10.0.0.11:oldboy/monitor.git HEAD # 没装git stderr:Host key veriflcation failed # git通过ssh连接时,没做ssh认证 # 有时候刷新后不管用,git clone git@10.0.0.11:oldboy/monitor.git 来测试一下先 代码、配置文件 分别用git管理 ---> 代码、配置文件 用两个job管理 用shell把配置文件替换代码里的配置文件 远程传输文件时,为什么要打包 ; 减少IO 手动:jenkins获取gitlab代码;把jenkins拉到的代码 传到服务器;通过远程命令自动运行 cd ./workspace/fisrt_jobs mkdir /server/scripts -p cd /server/scripts jenkins部署脚本 vim deploy.ssh #!/bin/ssh name=web-$(date +%F)-$(($RANDDOM+10000)) host=$1 job_name=$2 cd /var/lib/jenkins/workspace/${job_name}/ && tar czf /opt/${name}.tar.gz ./* ssh ${host} "cd /var/www && mkdir ${name}" scp /opt/${name}.tar.gz ${host}:/var/www/${name} ssh ${host} "cd /var/www/${name} && tar xf ${name} && rm -rf ${name}" ssh ${host} "cd /var/www && rm -rf html && ln -s /var/www/${name} /var/www/html" # jenkins里调用 sh /server/scripts/deploy.ssh 10.0.0.11 ${JOB_NAME} # JOB_NAME是jenkins的全局变量,默认当前job名 jenkins配置Gitlab自动触发构建 配置触发器 gitlab: Administrator>monitor>Integrations Settings url+token # 分时日月周 jenkins 配置返回构建状态到gitlab 系统管理->系统设置->Gitlab Connection name : Gitlab Gitlab host URL : http://10.0.0.11 Credentials : 类型Gitlab API token ; API token:gitlab用户setting:access tokens jenkins->the_first_freestyle_job->post-build actions Publish build status to Gitlab 在jenkins利用maven对java代码的编译 maven:项目管理工具 [root@localhost hello-world]# tree . |-- pom.xml `-- src |-- main | `-- java | `-- com | `-- juvenxu | `-- mvnbook | `-- helloworld | `-- HelloWorld.java `-- test `-- java `-- com `-- juvenxu `-- mvnbook `-- helloworld `-- HelloWorldTest.java 必须有pro.xml mvn package 解决一些依赖,在本地仓库m2找不到去中心仓库找,并下载下来,为了避免每次都要在公网下载,---->搭建私服 [root@localhost hello-world]# ll 总用量 8 -rw-r--r--. 1 root root 1683 8月 26 2010 pom.xml drwxr-xr-x. 4 root root 28 10月 10 2009 src drwxr-xr-x. 7 root root 4096 12月 15 20:52 target [root@localhost hello-world]# cd target/ [root@localhost target]# ls classes maven-archiver original-hello-world-1.0-SNAPSHOT.jar test-classes hello-world-1.0-SNAPSHOT.jar maven-status surefire-reports [root@localhost target]# java -jar hello-world-1.0-SNAPSHOT.jar Hello Maven [root@localhost target]# jenkins pipeline 什么是pipeline jenkins 2.0的精髓是PIPELINE AS CODE,是帮助jenkins实现从CI到CD转变的重要角色。什么是pipeline,简单来说,就是一套运行于jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂发布流程。pipeline的实现方式是一套GROOVY DSL,任何发布流程都可以表述为一段GROOVY脚本,并且jenkins支持从代码库直接读取脚本,从而实现了pipeLine as code 的理念
一、基本概念解释
1、持续集成
Continuous integration (CI)
持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件。

持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。
持续集成的好处主要有两个:
快速发现错误
每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易
防止分支大幅偏离主干
如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。
持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。
2、持续交付
持续交付在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的「类生产环境」(production-like environments)中。比如,我们完成单元测试后,可以把代码部署到连接数据库的 Staging 环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境中。
3、持续部署

持续部署则是在持续交付的基础上,把部署到生产环境的过程自动化。
二、Jenkins简介
1、简介
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
2、YUM安装(不推荐)
安装依赖
yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel
安装yum源
wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins.io/redhat-stable/jenkins.repo
rpm --import http://pkg.jenkins.io/redhat/jenkins.io.key
or
rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
安装Jenkins
yum –y install Jenkins
systemctl start jenkins
systemctl enable jenkins
3、RPM安装
下载地址
https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat-stable/
RPM安装
rpm –ivh jenkins-2.32.3-1.1.noarch.rpm
systemctl start jenkins
systemctl enable jenkins
三、Jenkins插件管理
我们前面讲了,Jenkins是一个引擎,他本身的功能很简单,是通过各种不同的插件实现编译部署项目。
1、 自动插件安装:
登录web页面,点击系统管理:

点击管理插件:

点击可选插件,选择你需要安装的插件

安装完成后,一般情况下不需要重启Jenkins,具体根据提示。
2、手工安装插件
除了上面的插件安装方法,Jenkins还为我们提供了手工安装插件的方式,特别是在国内,由于网络的原因,有时候我们使用上述方法安装插件会经常不成功,所以我们可以采用下载插件,然后再上传的方式来安装插件。
官方的插件下载地址:http://updates.jenkins-ci.org/
国内的源:https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/
需要注意的是选择下载对应版本的版本,否则有时候会出现兼容性错误。
Jenkins的版本可以通过:系统管理—about Jenkins看到:


下面选择下载对应版本的SSH插件:



我们下载到一个.hpi扩展名的文件,然后我们手动安装该插件:





3、覆盖插件目录
我们可以在已经安装好Jenkins的一台机子上备份/var/lib/jenkins/plugins目录,然后把备份文件上传到我们需要覆盖的Jenkins的对应目录上,然后重启Jenkins。
这种方法其他也给我们提供了一种更加快速的安装Jenkins的方法。我们可以在安装安装初始插件的时候,先跳过,再采用这种方式安装插件。
四、Jenkins程序目录
我们通过命令查看一下Jenkins安装后的文件和目录:
[root@node3 jenkins]# rpm -ql jenkins /etc/init.d/jenkins /etc/logrotate.d/jenkins /etc/sysconfig/jenkins /usr/lib/jenkins /usr/lib/jenkins/jenkins.war /usr/sbin/rcjenkins /var/cache/jenkins /var/lib/jenkins /var/log/jenkins
1、主配置文件
/etc/sysconfig/jenkins是Jenkins的主配置文件:我们在这里主要配置Jenkins的工作目录、启动用户、启动端口。



Jenkins默认的用户为jenkins,强烈建议生产环境使用jenkins用户,然后使用sudo进行授权,我们教学过程为了避免各种权限问题,改为root用户。
2、主目录:
/var/lib/jenkins:Jenkins配置的主工作目录
[root@node3 jenkins]# ll /var/lib/jenkins/ total 64 -rw-r--r-- 1 jenkins jenkins 788 Dec 6 17:25 com.dabsquared.gitlabjenkins.connection.GitLabConnectionConfig.xml -rw-r--r-- 1 jenkins jenkins 365 Dec 6 17:25 com.dabsquared.gitlabjenkins.GitLabPushTrigger.xml -rw-r--r-- 1 jenkins jenkins 1592 Dec 6 17:25 config.xml -rw-r--r-- 1 jenkins jenkins 159 Dec 6 17:25 hudson.model.UpdateCenter.xml -rw-r--r-- 1 jenkins jenkins 370 Dec 6 17:25 hudson.plugins.git.GitTool.xml -rw------- 1 jenkins jenkins 1712 Dec 6 17:22 identity.key.enc -rw-r--r-- 1 jenkins jenkins 94 Dec 6 17:22 jenkins.CLI.xml -rw-r--r-- 1 jenkins jenkins 6 Dec 6 17:25 jenkins.install.InstallUtil.lastExecVersion -rw-r--r-- 1 jenkins jenkins 6 Dec 6 17:23 jenkins.install.UpgradeWizard.state drwxr-xr-x 2 jenkins jenkins 6 Dec 6 17:26 jobs drwxr-xr-x 3 jenkins jenkins 19 Dec 6 17:22 logs -rw-r--r-- 1 jenkins jenkins 907 Dec 6 17:25 nodeMonitors.xml drwxr-xr-x 2 jenkins jenkins 6 Dec 6 17:22 nodes drwxr-xr-x 84 jenkins jenkins 8192 Dec 6 20:06 plugins -rw-r--r-- 1 jenkins jenkins 129 Dec 6 17:25 queue.xml.bak -rw-r--r-- 1 jenkins jenkins 64 Dec 6 17:22 secret.key -rw-r--r-- 1 jenkins jenkins 0 Dec 6 17:22 secret.key.not-so-secret drwxr-xr-x 4 jenkins jenkins 4096 Dec 6 17:26 secrets drwxr-xr-x 2 jenkins jenkins 182 Dec 6 17:25 updates drwxr-xr-x 2 jenkins jenkins 24 Dec 6 17:22 userContent drwxr-xr-x 3 jenkins jenkins 19 Dec 6 17:22 users drwxr-xr-x 2 jenkins jenkins 6 Dec 6 17:25 workflow-libs drwxr-xr-x 3 jenkins jenkins 18 Dec 6 17:26 workspace
其中主要的目录为jobs目录:存放jobs的配置及每次构建的结果;plugins目录:Jenkins插件目录,存放我们已经安装的插件;worksspace:工作区目录。
3、程序目录
/var/cache/Jenkins Jenkins程序文件目录
[root@node3 jenkins]# ll /var/cache/jenkins/war/ total 2140 -rw-r--r-- 1 jenkins jenkins 1948 Dec 6 17:22 ColorFormatter.class drwxr-xr-x 5 jenkins jenkins 147 Dec 6 17:22 css -rw-r--r-- 1 jenkins jenkins 1544 Dec 6 17:22 dc-license.txt drwxr-xr-x 2 jenkins jenkins 30 Dec 6 17:22 executable -rw-r--r-- 1 jenkins jenkins 17542 Dec 6 17:22 favicon.ico drwxr-xr-x 12 jenkins jenkins 180 Dec 6 17:22 help drwxr-xr-x 6 jenkins jenkins 4096 Dec 6 17:22 images -rw-r--r-- 1 jenkins jenkins 1919 Dec 6 17:22 JNLPMain.class drwxr-xr-x 2 jenkins jenkins 250 Dec 6 17:22 jsbundles -rw-r--r-- 1 jenkins jenkins 855 Dec 6 17:22 LogFileOutputStream$1.class -rw-r--r-- 1 jenkins jenkins 639 Dec 6 17:22 LogFileOutputStream$2.class -rw-r--r-- 1 jenkins jenkins 2243 Dec 6 17:22 LogFileOutputStream.class -rw-r--r-- 1 jenkins jenkins 16644 Dec 6 17:22 Main.class -rw-r--r-- 1 jenkins jenkins 1041 Dec 6 17:22 MainDialog$1$1.class -rw-r--r-- 1 jenkins jenkins 1060 Dec 6 17:22 MainDialog$1.class -rw-r--r-- 1 jenkins jenkins 2400 Dec 6 17:22 MainDialog.class -rw-r--r-- 1 jenkins jenkins 512 Dec 6 17:22 Main$FileAndDescription.class drwxr-xr-x 3 jenkins jenkins 75 Dec 6 17:22 META-INF -rw-r--r-- 1 jenkins jenkins 71 Dec 6 17:22 robots.txt drwxr-xr-x 3 jenkins jenkins 200 Dec 6 17:22 scripts drwxr-xr-x 7 jenkins jenkins 237 Dec 6 17:22 WEB-INF -rw-r--r-- 1 jenkins jenkins 2098273 Dec 6 17:22 winstone.jar
4、其他文件
/var/log/Jenkins Jenkins日志文件目录
/etc/init.d/Jenkins Jenkins启动文件
五、系统设置


我们暂时只改变这两处设置:执行者数量:表示同时可以执行几个job,生成前等待时间:是指从你点击构建到系统执行构建需要等待多长时间,这样可以防止你点错了,可以有一个取消的时间。其他配置我们会在后面的实际使用中,根据需要逐步学习配置。
六、Jenkins升级、迁移、备份
1、升级
下载新版Jenkins.war文件,替换旧版本war文件,重启即可。
Jenkins.war文件的位置一般为/usr/lib/jenkins/Jenkins.war。
2、迁移、备份
Jenkins的所有的数据都是以文件的形式存放在JENKINS_HOME目录中。所以不管是迁移还是备份,只需要操作JENKINS_HOME就行。建议将JENKINS_HOME打包后在拷贝,windows上可以用zip,rar等,Linux上有zip,tar等。然后将打包的文件解压到新的JENKINS_HOME目录就行了。
3、使用thinbackup插件备份
1)安装插件:
安装ThinBackup插件,可能 参考前面插件管理部分。
2)配置插件:


·
3)手动备份:

我们到备份目录查看: [root@node3 FULL-2017-12-08_15-48]# cd .. [root@node3 jenkins]# ll /data/jenkins/ total 4 drwxr-xr-x 5 root root 4096 Dec 8 15:48 FULL-2017-12-08_15-48 [root@node3 jenkins]# ll /data/jenkins/FULL-2017-12-08_15-48/ total 172 -rw-r--r-- 1 root root 858 Dec 8 14:27 com.dabsquared.gitlabjenkins.connection.GitLabConnectionConfig.xml -rw-r--r-- 1 root root 365 Dec 6 17:25 com.dabsquared.gitlabjenkins.GitLabPushTrigger.xml -rw-r--r-- 1 root root 4529 Dec 8 14:27 config.xml -rw-r--r-- 1 root root 1809 Dec 8 15:05 credentials.xml -rw-r--r-- 1 root root 341 Dec 8 13:33 envinject-plugin-configuration.xml -rw-r--r-- 1 root root 278 Dec 7 20:33 envInject.xml -rw-r--r-- 1 root root 214 Dec 7 20:33 github-plugin-configuration.xml -rw-r--r-- 1 root root 807 Dec 7 20:33 hudson.maven.MavenModuleSet.xml -rw-r--r-- 1 root root 159 Dec 8 14:27 hudson.model.UpdateCenter.xml -rw-r--r-- 1 root root 250 Dec 7 20:33 hudson.plugins.build_timeout.operations.BuildStepOperation.xml -rw-r--r-- 1 root root 1228 Dec 7 20:33 hudson.plugins.emailext.ExtendedEmailPublisher.xml -rw-r--r-- 1 root root 321 Dec 7 20:33 hudson.plugins.git.GitSCM.xml -rw-r--r-- 1 root root 370 Dec 8 10:05 hudson.plugins.git.GitTool.xml -rw-r--r-- 1 root root 173 Dec 8 10:05 hudson.plugins.gradle.Gradle.xml -rw-r--r-- 1 root root 184 Dec 7 20:33 hudson.plugins.jira.JiraProjectProperty.xml -rw-r--r-- 1 root root 346 Dec 7 20:33 hudson.plugins.timestamper.TimestamperConfig.xml -rw-r--r-- 1 root root 388 Dec 7 20:33 hudson.scm.SubversionSCM.xml -rw-r--r-- 1 root root 145 Dec 8 10:05 hudson.tasks.Ant.xml -rw-r--r-- 1 root root 188 Dec 7 20:33 hudson.tasks.Mailer.xml -rw-r--r-- 1 root root 320 Dec 8 10:05 hudson.tasks.Maven.xml -rw-r--r-- 1 root root 76 Dec 7 20:33 hudson.tasks.Shell.xml -rw-r--r-- 1 root root 215 Dec 7 20:33 hudson.triggers.SCMTrigger.xml -rw-r--r-- 1 root root 8990 Dec 8 15:48 installedPlugins.xml -rw-r--r-- 1 root root 94 Dec 8 13:33 jenkins.CLI.xml -rw-r--r-- 1 root root 159 Dec 7 20:33 jenkins.model.ArtifactManagerConfiguration.xml -rw-r--r-- 1 root root 138 Dec 8 13:33 jenkins.model.DownloadSettings.xml -rw-r--r-- 1 root root 264 Dec 7 20:33 jenkins.model.JenkinsLocationConfiguration.xml -rw-r--r-- 1 root root 247 Dec 8 10:05 jenkins.mvn.GlobalMavenConfig.xml -rw-r--r-- 1 root root 169 Dec 8 13:33 jenkins.security.QueueItemAuthenticatorConfiguration.xml -rw-r--r-- 1 root root 162 Dec 8 13:33 jenkins.security.UpdateSiteWarningsConfiguration.xml drwxr-xr-x 6 root root 94 Dec 8 15:48 jobs -rw-r--r-- 1 root root 907 Dec 8 14:27 nodeMonitors.xml drwxr-xr-x 4 root root 60 Dec 8 15:04 nodes -rw-r--r-- 1 root root 298 Dec 8 10:05 org.jenkinsci.plugins.docker.commons.tools.DockerTool.xml -rw-r--r-- 1 root root 255 Dec 8 10:05 org.jenkinsci.plugins.gitclient.JGitApacheTool.xml -rw-r--r-- 1 root root 243 Dec 8 10:05 org.jenkinsci.plugins.gitclient.JGitTool.xml -rw-r--r-- 1 root root 290 Dec 7 20:33 org.jenkinsci.plugins.pipeline.modeldefinition.config.GlobalConfig.xml -rw-r--r-- 1 root root 46 Dec 8 00:14 org.jenkinsci.plugins.workflow.flow.FlowExecutionList.xml -rw-r--r-- 1 root root 218 Dec 7 20:33 org.jenkinsci.plugins.workflow.libs.GlobalLibraries.xml -rw-r--r-- 1 root root 185 Dec 7 20:33 org.jvnet.hudson.plugins.SSHBuildWrapper.xml -rw-r--r-- 1 root root 369 Dec 6 22:46 scriptApproval.xml -rw-r--r-- 1 root root 1010 Dec 8 15:47 thinBackup.xml drwxr-xr-x 4 root root 31 Dec 8 13:35 users
4)测试从备份恢复
我们删除/var/lib/jenkins/job目录下的my-freestyle-job目录,
[root@node3 jobs]# rm my-freestyle-job -rf
[root@node3 jobs]# ll
total 0
drwxr-xr-x 3 root root 38 Dec 8 15:48 accout-maven-job
drwxr-xr-x 3 root root 101 Dec 8 15:48 frontend-job
drwxr-xr-x 3 root root 101 Dec 8 15:48 pipline-demo
[root@node3 jobs]#
然后我们使用刚才的备份恢复:


恢复完成后,我发现刚才删除的目录又回来了: [root@node3 jobs]# ll total 0 drwxr-xr-x 3 root root 38 Dec 8 15:48 accout-maven-job drwxr-xr-x 3 root root 101 Dec 8 15:48 frontend-job drwxr-xr-x 3 root root 38 Dec 8 15:48 my-freestyle-job drwxr-xr-x 3 root root 101 Dec 8 15:48 pipline-demo [root@node3 jobs]#
七、创建一个freestyle的Job
1、执行简单命令或脚本


job配置页面:

勾选丢弃旧的构建:

由于每次构建都会生成很多构建产物,如果频繁构建会占用很多的空间,我们可以通过这几个选项控制构建产物的保留。一般建议选择保留最近5-10的构建为适宜。
其他参数我们在后面再讲。


保存后,我们就创建了一个简单的freestyle job,点击意即构建执行一下,看看结果:



通过使用pwd命令,我们可以看到执行命令的当前目录是/var/lib/jenkins/workspace/jobname
通过这个小例子,我们可以总结如下几点:1、可以使用Jenkins在页面执行任何需要在linux命令行的操作;2、就是我们前面讲到的,一定不要在生产环境中用root用户启动jenkins。
2、配置使用Gitlab
我们还是使用前面的my-freestyle Job,配置Job从Gitlab拉取frontend的代码到jenkins。



此处的错误是我们现在还没有配置jenkins连接到Gitlab,由于Jenkins只是拉取Gitlab的代码,所以我们可以使用Gitlab的Deploy Key。
1、在Jenkins本地生成SSH Key:
[root@node3 ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:R4I1NWcI//trqY6fvAdZZB0v8GMFkkBbwcDH/CAxtkA root@node3
The key's randomart image is:
+---[RSA 2048]----+
| .E=XOBo.+o|
| o =+OB+o.o|
| . . =o == .|
| o . .oo |
| S . .o |
| . o. |
| .. . |
| o o+ |
| .oB=o. |
+----[SHA256]-----+
2、配置Gitlab Deploy Key








3、安装git并本地测试
[root@node3 ~]# yum install git –y [root@node3 ~]# git clone git@192.168.56.12:web-site/frontend.git Cloning into 'frontend'... The authenticity of host '192.168.56.12 (192.168.56.12)' can't be established. ECDSA key fingerprint is SHA256:SjPoetHYvGBI08VxTdzYOys+QpjR5vLNbU9Obs2Lx9Q. ECDSA key fingerprint is MD5:39:3e:52:a1:45:9b:3e:23:72:e6:0d:0e:76:00:17:55. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.56.12' (ECDSA) to the list of known hosts. remote: Counting objects: 34, done. remote: Compressing objects: 100% (23/23), done. remote: Total 34 (delta 6), reused 18 (delta 0) Receiving objects: 100% (34/34), done. Resolving deltas: 100% (6/6), done. 我们再次打开my-freestyle Job配置页面,

执行构建后,我们现在我们已经把代码拉到了我们Job的工作区

3、代码发布
上面的示例我们已经实现Gitlab拉取地Jenkins本地,下面接下上面的示例,我们实现将代码发布到我们的服务器:
1)配置免密登录
要实现无交互式的传输文件,执行命令,我们首先要保证Jenkins本机可以免密登录到目标主机。
[root@node3 ~]# ssh-copy-id -i .ssh/id_rsa.pub 192.168.56.11 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: ".ssh/id_rsa.pub" The authenticity of host '192.168.56.11 (192.168.56.11)' can't be established. ECDSA key fingerprint is SHA256:lHsG8JxgHwQ3/xdLN/q+h8JtvlWKhtIJn0Zw2t99gb8. ECDSA key fingerprint is MD5:cf:dd:3e:ba:5e:75:24:ce:d4:cf:4f:db:63:3d:8d:6e. 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 root@192.168.56.11's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh '192.168.56.11'" and check to make sure that only the key(s) you wanted were added. [root@node3 ~]# ssh 192.168.56.11 Last login: Thu Dec 7 08:50:52 2017 from 192.168.56.1 [root@node1 ~]# exit logout Connection to 192.168.56.11 closed.



浙公网安备 33010602011771号