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
View Code
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 的理念
View Code

 

 一、基本概念解释

1、持续集成

Continuous integration CI

持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件。

 

 

持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。

持续集成的好处主要有两个:

快速发现错误

每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易

防止分支大幅偏离主干

如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。

持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。

2、持续交付

 

 

持续交付在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的「类生产环境」(production-like environments)中。比如,我们完成单元测试后,可以把代码部署到连接数据库的 Staging 环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境中。

3、持续部署

 

 

持续部署则是在持续交付的基础上,把部署到生产环境的过程自动化。

二、Jenkins简介

1、简介

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。

2YUM安装(不推荐)

安装依赖

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

 

3RPM安装

下载地址

    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/jenkinsJenkins的主配置文件:我们在这里主要配置Jenkins的工作目录、启动用户、启动端口。

 

 

 

 

Jenkins默认的用户为jenkins,强烈建议生产环境使用jenkins用户,然后使用sudo进行授权,我们教学过程为了避免各种权限问题,改为root用户。

 

2、主目录:

/var/lib/jenkinsJenkins配置的主工作目录

 
[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上可以用ziprar等,Linux上有ziptar等。然后将打包的文件解压到新的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]#

 

 

 

 

 

七、创建一个freestyleJob

1、执行简单命令或脚本

 

 

 

 

job配置页面:

 

勾选丢弃旧的构建:

 

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

其他参数我们在后面再讲。

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

 

 

 

 

通过使用pwd命令,我们可以看到执行命令的当前目录是/var/lib/jenkins/workspace/jobname

 

 

通过这个小例子,我们可以总结如下几点:1、可以使用Jenkins在页面执行任何需要在linux命令行的操作;2、就是我们前面讲到的,一定不要在生产环境中用root用户启动jenkins

2、配置使用Gitlab

我们还是使用前面的my-freestyle Job,配置JobGitlab拉取frontend的代码到jenkins

 

 

 

 

此处的错误是我们现在还没有配置jenkins连接到Gitlab,由于Jenkins只是拉取Gitlab的代码,所以我们可以使用GitlabDeploy 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.

 

posted @ 2018-12-14 15:00  慕沁  阅读(483)  评论(0)    收藏  举报