linux12Devops --> 03Jenkins实战

Posted FikL-09-19

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux12Devops --> 03Jenkins实战相关的知识,希望对你有一定的参考价值。

一、Jenkins

官网: https://pkg.jenkins.io/redhat-stable/

Jenkins是一个自动化部署的工具。依赖于Java开发的,由各种组件组成的一个自动化部署工具。

1.安装Jenkins

#1.安装Java
[root@jenkins jenkins]# yum install java-1.8.0-openjdk* -y
 
#2.安装Jenkins
方式一
# 安装Jenkins(推荐,因为yum默认为新版本,不建议安装太新的版本)
[root@jenkins jenkins]]# mkdir packages && cd packages
[root@jenkins jenkins]# wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat-stable/jenkins-2.249.1-1.1.noarch.rpm
[root@jenkins jenkins]# yum localinstall -y jenkins-2.249.1-1.1.noarch.rpm
[root@jenkins jenkins]# systemctl restart jenkins

方式二
# yum方式安装需要安装认证 Key
[root@jenkins jenkins]# rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
# 安装Jenkins
[root@jenkins jenkins]# yum install jenkins
[root@jenkins jenkins]# systemctl restart jenkins

2.登录

[root@jenkins jenkins]# cat /var/lib/jenkins/secrets/initialAdminPassword
e59b14429016454f8ec2e5e7a34f6449

3.安装插件




#1.安装插件
#添加插件
[root@gitlab jenkins]# tar -xf /opt/plugins.tar.gz -C /var/lib/jenkins/plugins
# 授权jenkins用户
[root@gitlab ~]# chown -R jenkins.jenkins /var/lib/jenkins/
#重启
[root@gitlab jenkins]# systemctl restart jenkins.service 

4.优化

[root@gitlab updates]# cd /var/lib/jenkins/updates/
[root@gitlab updates]# sed -i 's/https:\\/\\/updates.jenkins.io\\/download/https:\\/\\/mirrors.tuna.tsinghua.edu.cn\\/jenkins/g' default.json
[root@gitlab updates]# sed -i 's/http:\\/\\/www.google.com/https:\\/\\/www.baidu.com/g' default.json

#最后,系统管理 --> 插件管理 --> 高级,把站点升级改为国内插件下载地址
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json






二、解决jenkins忘记用户密码问题

#1.找到存密码的文件
[root@jenkins ~]# cd /var/lib/jenkins/users/
[root@jenkins /var/lib/jenkins/users]# ll
total 4
drwx------ 2 jenkins jenkins  24 Aug 13 11:56 mm_7745824900363635554
-rw-r--r-- 1 jenkins jenkins 294 Aug 13 11:55 users.xml

[root@jenkins elainafang_4555949760451263805]# vim mm_7745824900363635554/config.xml 
 #2.将密码内容替换成123456的密码内容   #在网上查看jenkins密码
<passwordHash>#jbcrypt:$2a$10$2LvNPMgFiYAyT/CeE5FwnOUkQz4SbTd9Myq/pWf5qAQtz0MWe6K86</passwordHash>
替换成              <passwordHash>#jbcrypt:$2a$10$MiIVR0rr/UhQBqT.bBq0QehTiQVqgNpUGyWW2nJObaVAM/2xSQdSq</passwordHash>
  
#3.重新加载内面用123456密码登录后在修改密码

三、用户权限 (RBAC权限)

1.创建用户和修改密码





2.创建权限组

使用权限组,需要安装Role-Based Strategy权限插件

1、 启用授权策略插件
	系统管理 ---> 全局安全配置 ---> 授权策略 ---> Role-Based Strategy
1)启用Role-Based Strategy权限插件



2)创建及管理权限组

系统管理 —> Manage and Assign Roles —> Manage Roles —> 各个角色(权限组)



Global roles(全局角色): # 管理员等高级用户可以创建基于全局的角色 
Item roles(项目角色):   #  针对某个或者某些项目的角色 
Node roles(节点角色):   # 节点相关的权限

Base:   # 设置成所有的用户都有查看的权限
Alvin:  # 设置以alvin开头的项目有超管权限
Oldboy: # 设置以oldboy开头的项目有超管权限
3)分配角色组权限

系统管理 —> Manage and Assign Roles —> Assign Roles







4)使用通配符分配权限
.* : 匹配以什么开头的项目
  • 测试:先创建角色分配所有以shang开头的项目(shang.*)
    创建test1项目做为参考



3.凭证管理

# 系统管理  ->  Manage Credentials -> 全局

# Jenkins通过SSH下载代码
    1、将Jenkins服务器中的公钥放到GitLab上
    2、将Jenkins服务器私钥放到Jenkins凭证(Manage Credentials)之中
    
# Jenkins连接远程机器
	1、系统管理 -> 系统配置 -> SSH remote hosts
	
	2、系统管理 -> 系统配置 -> Publish over SSH 
1)添加SSH凭证

系统管理 —> Manage Credentials —> 系统凭证 —> 全局凭证 —> 添加凭证




#1.生成密钥对
[root@jenkins ~]# ssh-keygen -t rsa

#2.将私钥添加jenkins(不能有空格)
[root@jenkins ~]# cat /root/.ssh/id_rsa
见下图

#3.将公钥添加gitlab
[root@jenkins ~]# cat /root/.ssh/id_rsa.pub 
见下下图

*******重点注意:前提需要安装git工具***************
yum install git -y

1.Username with password:        # 用户名和密码
2.SSH Username with private key: # 使用SSH用户和密钥
3.Secret file:                   # 需要保密的文本文件,使用时Jenkins会将文件复制到一个临时目录中,再将文件路径 设置到一个变量中,等构建结束后,所复制的Secret file就会被删除。
4.Secret text:                   # 需要保存的一个加密的文本串,如钉钉机器人或Github的api token Certificate:通过上传证书文件的方式
5.X.509:                        # 证书,一般使用第三方云服务时使用。
6.Certificate:                  # docker私有仓库密码存储类型。

2)通过SSH连接部署代码,构建项目(从gitlab上拉取现成源代码部署项目)

系统管理 —> Manage Credentials —> 系统凭证 —> 全局凭证 —> 添加凭证 —> ssh username with private key

  • 先到gitlab上复制项目源代码的仓库ssh链接地址
  • 打开Jenkins选择要部署的项目





#可在服务器上查看代码文件
[root@jenkins ~]# cd /var/lib/jenkins/workspace/
[root@jenkins /var/lib/jenkins/workspace]# ll
total 0
drwxr-xr-x 3 jenkins jenkins 53 Aug 14 00:56 shanghai
drwxr-xr-x 2 jenkins jenkins  6 Aug 14 00:56 shanghai@tmp
[root@jenkins /var/lib/jenkins/workspace]# cd shanghai
[root@jenkins /var/lib/jenkins/workspace/shanghai]# ll
total 8
-rw-r--r-- 1 jenkins jenkins 72 Aug 14 00:56 index.html
-rw-r--r-- 1 jenkins jenkins 50 Aug 14 00:56 README.md
[root@jenkins /var/lib/jenkins/workspace/shanghai]# cat .git/config 
[core]
	repositoryformatversion = 0
	filemode = true
	bare = false
	logallrefupdates = true
[remote "origin"]
	url = git@192.168.15.101:technology-department/artificial-intelligence.git
	fetch = +refs/heads/*:refs/remotes/origin/*
3)添加HTTP凭证

系统管理 —> Manage Credentials —> 全局凭证 —> 添加凭证 —> Username with Password



4)通过HTTP连接部署代码,构建项目(从gitlab上拉取现成源代码部署项目)



5)登录服务器SSH(从另一台服务器上拉取源代码)

此处以JenkinsSSH连接gitlab为例

#1.先在服务器上做免密登录
在Jenkins服务器上生成密钥对,将公钥推送到gitlab服务器
[root@jenkins ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub  root@192.168.15.101


6)将从gitlab远程仓库拉取好源代码的项目部署到其他的服务器上(gitlab)




以上是关于linux12Devops --> 03Jenkins实战的主要内容,如果未能解决你的问题,请参考以下文章

linux12Devops -->02安装GitLab

linux12Devops -->04Jenkins参数化构建

linux12Devops -->06Jenkins部署tomcat

linux12Devops -->07jenkins部署python

linux12Devops -->08jenkins部署Golang

linux12Devops -->05 Jenkins部署php实战