Jenkins是一款免费的持续集成跟持续交付软件。关于他的安装,网络上有不少。这次我们用dokcer来安装。

我们运行jenkins bule的镜像,然后配置HOST机为jenkins的一个节点。

关于持续集成跟持续交付,我们通过在项目GIT仓库里放置Jenkinsfile文件。每次执行集成,Jenkins都会把项目拉下来,执行里面的jenkinsfile脚本。

1、运行Jenkins Blue Ocean

编辑docker compose文件
version: '2'

services:
  jenkins:
    image: jenkinsci/blueocean:latest
    ports:
      - "8080:8080"
      - "50000:50000"
    volumes:
      - /home/docker/jenkins-compose/jenkins_home:/var/jenkins_home
      - /etc/localtime:/etc/localtime:ro
    environment:
     - TZ=Asia/Shanghai
    container_name: jenkins
启动Jenkins
$ docker-compose up -d

2、添加主机为Jenkins从节点

浏览器访问 localhost:8080, 第一次进入管理配置页面,需要密码,可以通过 docker logs jenkins 找到。

第一步选择安装建议的插件,这样可以省下不少麻烦。

添加SSH私钥

首先要有一份SSH证书,可以根据 https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/ 生成一份。

在首页的左侧依次单击 Credentials » System » Global credentials(unrestricted) » Add Credentials

  • Kind 选择 SSH Username with private key
  • Scope 选择 Global(Jenkins, nodes, items, all child items, etc)
  • Username 填写证书可以登录的用户名,我是把证书分配给root用户,所以这里填root
  • Private Key 选择 Enter directly,然后把私钥用记事本打开,把里面的文本填进去
  • Passphrase 如果私钥有加密,就填私钥的密码,如果没有,就不用填
  • ID jenkins会自己生成一个
  • Description 可以不填

最后点OK就可以了

新建节点

因为Jenkins运行在Docker里面,很多命令都无法执行,特别是Docker build命令,所以我们需要一台环境完整的机子来执行持续集成。

注意: 这台机子需要安装JDK

在首页的左侧依次单击 系统管理 » 管理节点 » 新建节点

  • 节点名称 填 localhost (你喜欢的任何名称)
  • 选择 Permanent Agent

点击 OK 进入节点配置

  • 描述 可以不填
  • of executors 配置该节点可以同时运行多少个任务
  • 远程工作目录 配置jenkins在那台机子上使用的目录,我是填 /home/jenkins_home
  • 标签 用来给节点归类,jenkinsfile文件可以指定在哪个node执行[例如 node(docker),docker就是标签],如果有多个标签,用空格隔开就可以了。
  • 用法 选择 尽可能的使用这个节点。因为我只有这一个节点。
  • 启动方法 选择 Launch slave agents via SSH。Credentials选择刚才那一个。需要把SSH公钥安装到节点那台机子上。Host Key Verification Strategy 选择 Manually trusted key Verification Strategy (自动信任)
  • Availability 选择 Keep this agent online as much as possible

3、添加持续集成项目

在Jenkins首页选择 新建 » Mutibranch Pipeline 填个名字,点击OK开始配置

主要填以下GIT仓库的位置,保证可以访问就可以了,在 Build Configuration 选择 by Jenkinsfile, Script Path (我是填 jenkins/Jenkinsfile)是相对于项目的根目录的。

项目配置说明

以下是我的项目的目录结构

[root@bogon simple-service-webapp]# ls
jenkins  pom.xml  src  target
[root@bogon simple-service-webapp]# tree jenkins/
jenkins/
├── build.sh
├── docker-build.sh
├── Dockerfile
├── Jenkinsfile
└── simple-service-webapp.war

0 directories, 5 files
[root@bogon simple-service-webapp]# cat jenkins/Jenkinsfile 
node('docker') {
	stage('Build') {
		def commitHash = checkout(scm).GIT_COMMIT
		sh 'sh ./jenkins/build.sh'
	}
	stage('Docker Build'){
		sh 'sh ./jenkins/docker-build.sh'
	}
}

我自己编写了编译命令 build.sh 跟打包上传docker的命令 docker-build.sh,然后通过配置Jenkinsfile来执行这些命令。 需要注意的是,开始执行之前要执行 checkout scm,不然Jenkins是找不到我在项目中包含的这些命令的。

剩下的就自己研究了。

版权声明:如无特别声明,本文版权归 一年四季 所有,转载请注明本文链接。

(采用 CC BY-NC-SA 4.0 许可协议进行授权)

本文标题:《 Jenkins安装 》

本文链接:https://www.yucanlin.cn/operation/Jenkins%E5%AE%89%E8%A3%85.html