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 -->04Jenkins参数化构建
linux12Devops -->06Jenkins部署tomcat
linux12Devops -->07jenkins部署python