Jenkins安装及简单使用

一  Jenkins 安装指南

考虑到安装维护方便,本例采用利用jenkins.war 包的方式启动jenkins服务。

1. 安装前准备

## 创建Jenkins主目录,并从官方下载war 包。

1 su - jenkins 
2 mkdir /opt/jenkins
3 cd /opt/jenkins
4 wget http://mirrors.jenkins-ci.org/war/latest/jenkins.war

 

2. 启动Jenkins 服务

## 可以将启动,停止,重启动作写到脚本中,通过脚本统一管理

sh JENKINS_ADMIN.sh start  #(脚本内容省略)

## 或者通过nohup手动启动服务放到后台运行(必须申明环境变量JENKINS_HOME,否则会安装到~/.jenkins 目录), 停止则需手动kill 掉pid. 

1 #export JENKINS_HOME=/opt/jenkins
2 #cd $JENKINS_HOME
3 #nohup java -jar /eerun/jenkins/jenkins.war --httpPort=8880 --logfile=/eerun/log/jenkins.log &

 

3. Jenkins 初始化
## 指定端口访问url,根据提示输入初始管理密码,初次使用可以选择安装推荐插件,后期在插件管理中根据需要统一管理。
http://ip:8880

 

二  关于Jinkins内容发布的实现

第一种情况:集成 ansible实现发布功能

由Jenkins调用ansible ,区别是ansible主机是部署在本地还是远程,如果不涉及复杂的版本控制及代码共享管理,只是有关发布的功能实现, ansible 的roles 任务编排应该可以满足。

1. 直接利用流水线调用本地ansible

    流水线脚本Jenkinsfile可以从git 下拉获取 或者手工写入 Pipeline script 栏 ,Jenkinsfile范例如下,用于描述整条流水线的逻辑:

 1 pipeline{
 2 // 任务执行在具有 ansible 标签的 agent 上
 3 agent { label "ansible"}
 4 environment{
 5 // 设置 Ansible 不检查 HOST_KEY
 6 ANSIBLE_HOST_KEY_CHECKING = false
 7 }
 8 triggers {
 9 pollSCM('H/1 * * * *')
10 }
11 stages{
12 stage("deploy nginx"){
13 steps{
14 sh "ansible-playbook -i env-conf/dev deploy/playbook.yaml"
15 }
16 }}}

  此时, env-conf/dev deploy/playbook.yaml 等ansible相关文件都是本地存在的,即像roles/主机定义文件/环境变量配置文件/升级用到的文件等都在本机。

  具体示例参照 Ref:https://cloud.tencent.com/developer/article/1423553

 

2. 利用SSH插件调用外部主机 ansible

    利用Jenkins的SSH插件,配置访问远程 ansible 主机的账户,然后在Jenkins freestyle job中添加构建 -> 远程执行SSH。

    构建命令中填入" ansible-playbook -i /home/ansible/hosts /home/ansible/***.yml "的方式实现ansible 的调用。构建的动作,就是远程主机执行playbook 。

    具体示例参照 Ref:https://www.cnblogs.com/vincenshen/p/10490570.html

 

第二种情况: 不依赖ansible, 只使用Jenkins实现发布

    首先需要添加节点主机, 每一个被发布的目的主机都是一个从节点,在Manage Nodes 配置中添加目标节点node,添加在认证管理中配置好的连接用户(该用户应该具有目标主机上拥有后续脚本的执行权限),并且对同一类节点可以设置 label标签 ,如 rhel7 。

    创建构建任务item 的时候选择第三个【构建一个多配置项目】(Matrix Project 模式), 这样的话,project中的 【Configure】配置会有一栏【Configuration Matrix】 选项,其中就可以勾选在本 project 要操作的目标 node群。
    然后配置具体的build内容,在【Build】栏中可以下拉选取【Execute shell】模式, command 命令栏中直接输入执行脚本的动作即可,如 sh /tmp/function.sh 。
    如果不考虑远程机器上的 function.sh脚本如何获取或同步,该project 已经配置完成,直接【Build Now】 即可实现在远程node组上批量执行脚本。

    
   

目标主机所有的操作通过 command 中定义的脚本动作完成,如果执行文件在目标主机上不存在或版本太旧,可能需要配置另外的工具来保证目标文件的一致性,如NFS。

另外,这种情况对 command 中的脚本规范要求很高,特别是处理好脚本中功能函数和脚本自身的返回值问题,避免 build动作意外终止。

 

posted @ 2021-02-24 15:32  随风拂面  阅读(3572)  评论(0)    收藏  举报