持续集成 Linux 环境下 jenkins 项目部署

周小丽 · 2021年03月10日 · 2504 次阅读

一、环境安装
1) 安装 jdk1.8
1、检索 yum 中有没有 java1.8 的包
yum list java-1.8*

2、安装
yum install java-1.8.0-openjdk* -y

3、验证
java -version

默认安装路径:/usr/lib/jvm
2) 配置 java 环境
配置环境变量:打开配置文件,vim /etc/profile,添加如下代码。
#set java environment
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.282.b08-1.el7_9.x86_64
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME CLASSPATH PATH
在/etc/profile 添加环境变量后,输入如下指令,使其生效
. /etc/profile //注意 . 之后应有一个空格

备注:
vim 文件名      进入一般模式;
按 i 进行编辑   进入编辑模式 ;
编辑结束,按 ESC 键 跳到一般模式模式;
:wq 保存文件并退出 vi 编辑
:wq! 强制保存文件并退出 vi 编辑

3) 安装 android SDK
1.下载 Android SDK
wget http://dl.google.com/android/android-sdk_r24.4.1-linux.tgz
配置 Android SDK
tar -zvxf android-sdk_r24.4.1-linux.tgz
mv android-sdk-linux  /usr/local/
直接更新到最新的 sdk:
tools/android update sdk --no-ui
显示所有的 sdk 版本
android list sdk --all
然后选择想要更新的版本的编号
android update sdk -u -a -t 1,2,3,4,5

配置环境变量
vim  /etc/profile
ANDROID_HOME=/usr/local/android-sdk-linux
PATH=$ANDROID_HOME/tools:$PATH
export  ANDROID_HOME
export  PATH
执行命令文件立马生效
source /etc/profile
3.安装 Android SDK
查看序列号
android list sdk --all

根据报错日志指示,缺少 build-tools;27.0.3 Android SDK Build-Tools 27.0.3
安装 build-tools;27.0.3 Android SDK Build-Tools 27.0.3
进入 android-sdk-linux 的安装目录
cd /opt/app/android-sdk-linux/tools/bin
查看已安装以及未安装的 sdk
sdkmanager --list

安装指定的 build-tools
./sdkmanager "build-tools;27.0.3"
重新进入安卓项目进行打包
gradle clean && gradle assembleDebug

4) 安装 maven
安装 maven(看个人使用的项目构建工具自行选择)
yum install maven
一般 maven 默认安装路径为 :/usr/share/maven
Maven 的默认仓库路径为:/root/.m2/repository
安装好 maven 后记得在/etc/profile 里面最后加上一行如下语句,即将 maven 的安装目录配置到环境变量中
export PATH=$PATH:/usr/share/maven
修改 profile 后 执行
source /etc/profile

查看 maven 的版本
mvn -version

5) 安装 git
安装 git(看个人项目管理工具自行选择)
yum install git
一般 git 默认安装路径 :/usr/share/git-core
安装好 git 后记得在/etc/profile 里面最后加上一行如下语句,即将 git 的安装目录配置到环境变量中
export PATH=$PATH:/usr/share/git-core
修改 profile 后 执行
source /etc/profile
使环境变量即可生效,这会执行 git --version 会出现如下结果,则代表 git 安装成功
[root@localhost etc]# git --version
查看 git 的配置路径
[root@slave2 conf]# whereis git
6) 安装 Gradle

下载安装包

wget https://services.gradle.org/distributions/gradle-5.4-bin.zip

解压

unzip gradle-5.4-bin.zip

移动 Gradle 目录

mv gradle-5.4 /opt

修改 Gradle 目录的 User/Group 为 root

chown -R root:root /opt/gradle-5.4

创建软链接

ln -s /opt/gradle-5.4 /opt/gradle
设置环境变量:

cat > /etc/profile.d/gradle.sh <<EOF
export GRADLE_HOME=/opt/gradle
export PATH=\$PATH:\$GRADLE_HOME/bin
EOF

source /etc/profile.d/gradle.sh
检查 Gradle 是否安装成功:
gradle -v
7) 安装 npm
mkdir /usr/local/node         
cd /usr/local/node
wget https://nodejs.org/dist/v12.18.3/node-v12.18.3-linux-x64.tar.gz  
tar -xvf node-v12.18.3-linux-x64.tar.gz    # 解压
ln -s /usr/local/node/node-v12.18.3-linux-x64/bin/node /usr/local/bin/node
ln -s /usr/local/node/node-v12.18.3-linux-x64/bin/npm /usr/local/bin/npm # 创建软连接
node -v
npm -v # 验证

备注:
如果 node 软连接建错了,需执行如下命令删除
rm -r bin/node bin/node-waf include/node lib/node lib/pkgconfig/nodejs.pc share/man/man1/node.1
如果 npm 软连接建错了,需执行如下命令删除
rm -r bin/npm bin/node-waf include/node lib/node lib/pkgconfig/nodejs.pc share/man/man1/node.1

linux 下 node 升级
npm install -g n
n stable
安装的路径:
cd /usr/local/n/versions/node/14.16.0
修改环境变量
cd /etc
sudo vim profile
在最末尾加上
#set node pathexport
NODE_HOME=/usr/local/n/versions/node/14.16.0export
PATH=$NODE_HOME/bin:$PATH

8) 安装 chrome&chromedriver
具体下载地址为:

http://dl.google.com/linux/chrome/rpm/stable/x86_64//google-chrome-stable-66.0.3359.181-1.x86_64.rpm

在 centos 命令行输入:
wget http://dl.google.com/linux/chrome/rpm/stable/x86_64//google-chrome-stable-66.0.3359.181-1.x86_64.rpm

接着输入安装命令:
sudo yum localinstall google-chrome-stable-66.0.3359.181-1.x86_64.rpm

之后安装 chromedriver,下载地址:

https://chromedriver.storage.googleapis.com/index.html

需选择与 chrome 对应的版本安装
在 centos 命令行输入:
wget https://chromedriver.storage.googleapis.com/2.35/chromedriver_linux64.zip

然后解压:
unzip chromedriver_linux64.zip

将其移至/usr/bin/:
mv chromedriver /usr/bin/
否则需要配置 chromedriver 的环境变量,其位置在/usr/local/
export PATH="$PATH:/usr/local/chromedriver"
source ~/.profile
9) 安装 tomcat
1、检测是否有安装了 Tomcat:
rpm -qa|grep tomcat
2、查看 Tomcat 的进程 ID:
ps -ef|grep tomcat
3、解压 apache-tomcat-7.0.68.tar.gz 到当前目录下(/usr/local)
tar zxvf apache-tomcat-7.0.108.tar.gz
4、配置环境变量
vim /etc/profile
添加环境变量
export TOMCAT_HOME=/usr/local/apache-tomcat-7.0.108
export CATALINA_HOME=/usr/local/apache-tomcat-7.0.108
设置环境变量立即生效
source /etc/profile 
5、查看 tomcat 端口号
vim conf/server.xml

6、启动 tomcat
./startup.sh
7、tomcat 访问
http://192.168.1.70:8080/
二、Jenkins 安装
1) 在线安装 jenkins
1、yum 的 repo 中默认没有 Jenkins,需要先将 Jenkins 存储库添加到 yum repos,执行下面的命令:
wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
2、导入公钥
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
3、安装 Jenkins 
yum install jenkins 默认安装最新的
4、启动 jenkins
service jenkins start

2) 手动安装 jenkins
1、将 jenkins.war 复制到 tomcat 的 webapps,可切换到该目录,通过 rz 命令上传

2、配置环境变量
vim /etc/profile
export JENKINS_HOME=/usr/local/apache-tomcat-7.0.108/webapps
3、保存退出,使设置生效
source /etc/profile
4、启动 tomcat
cd /usr/local/apache-tomcat-7.0.108/bin
 ./startup.sh
三、Jenkins 配置
1) 更换镜像(依赖包下载慢)
npm 更换阿里云镜像
需要执行以下命令更改:
npm config set registry https://registry.npm.taobao.org --global
npm config set disturl https://npm.taobao.org/dist --global

Maven 之阿里云镜像仓库配置
可以添加阿里云的镜像到 maven 的 setting.xml 配置中,这样就不需要每次在 pom 中,添加镜像仓库的配置,在 mirrors 节点下面添加子节点:
nexus-aliyun
central
Nexus aliyun
http://maven.aliyun.com/nexus/content/groups/public

项目仓库镜像配置

grandtech-nexus
Central Repository
*
http://gykj123.cn:2101/nexus/content/groups/public/

2) Jenkins 账户配置
http://192.168.1.72:8080/jenkins
 登录密码存在于:
 vi /usr/local/apache-tomcat-7.0.108/webapps/secrets/initialAdminPassword
打开文件复制密码到密码栏登陆就行了;然后默认插件安装
安装完成后,新建用户名 admin,密码 123123

角色权限配置
角色项目权限分配
Jenkins 安装 Role-based Authorization Strategy 插件
在系统管理-Configure Global Security-授权策略-Role-Based Strategy,勾选 Role-Based Strategy 保存

在设置中选择 Manager and Assign Roles  ->  Manager Roles

如果要想不看别的视图别的项目,read 不能勾选。

全局角色与项目角色的区别就是,项目角色只能管理项目,没有管理 jenkins 的权限配置。
添加项目角色时,需要制定匹配项目的模式,如上图中的 Pattern,官方文档介绍该选项支持正则表达式,如 “Roger-.” 表示所有以 Roger-开头的项目,“(?i) roger-.” 表示以 roger-开头的项目并且不区分大小写,如以 ABC 开头的项目可以配置为 “ABC|ABC.”,也可以使用 “abc|bcd|efg” 直接匹配多个项目。

将不同的用户分别分配给不同的角色,这样用户就可以具有角色所拥有的权限。
User/group to add 输入的是用户账户名,而非用户名。

新建视图

视图名期望与 Manager Roles 中项目的正则表达式一致。目的:相应用户只能看到相应的视图。

Manage jenkins---configure system

创建的项目名要求与 Manager Roles 中项目的正则表达式一致。目的:相应用户只能看到相应的项目。

插件离线安装

3) web 后端项目部署
后端 jar 项目需要的环境:jdk,git,maven(编译工具)。需安装插件 send build artifacts over SSH(用于免密登录远程服务器,将构建后的 jar 包推送到远程服务器)。最后通过 shell 命令杀掉已启的进程,启动新的 jar 包。

新建视图

视图用于区分不同产品线的开发,测试,生产项目

视图及项目任务过滤显示

新建文件夹

用于区分不同的项目

系统配置

注意:
cd /root/.ssh
ssh-keygen # 执行此命令时,注意不输入任何,直接三次回车即可
ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.1.70 # 将公钥复制到远程机器的 authorized_keys 中
远程机器上也需要生成密钥对,ssh-keygen,然后执行 cat id_rsa.pub >> authorized_keys

全局配置

新建项目任务
在相应视图下新建项目,根据项目类型选择相应的构建方式,比如后端项目,一般用 maven 编译,app 用 grandle 编译,前端项目用 npm 编译,需安装相应的插件。




或者:

打包好的项目位于如下相应的目录中

进程查看:ps -aux|grep middle

4) web 前端项目部署
启动:/usr/local/nginx/sbin/nginx 
关闭:/usr/local/nginx/sbin/nginx  -s stop

Web 前端项目需要 NodeJS 插件,并在系统设置->全局工具配置中进行 NodeJS 插件配置。需安装 Npm 工具,用于打包编译。需安装插件 send build artifacts over SSH(用于免密登录远程服务器,将构建后的 jar 包推送到远程服务器)
任务流程:

有些依赖无法下载导致构建失败
由于 npm 源访问慢的问题,有些源可能会无法下载,改用淘宝的 npm 源即可解决。

设置为淘宝的镜像源

npm config set registry https://registry.npm.taobao.org

设置为官方镜像源

npm config set registry https://registry.npmjs.org

5) app 项目部署
需要用到 gradle 编译,需要安装 SDK,并配置环境变量

打包好的 app 通过 scp 上传到 windows 下,需在 windows 下安装 winSHHD,创建虚拟 SHH 账户,并开启 SHH 服务,这样 linux 和 windows 就可以互传文件了
https://www.cnblogs.com/sixfiv/p/9771770.html

Linux 与 windows 免密登录方式
在 Linux 主机 (ssh 客户端),
通过 ssh-keygen 在建立 SSH keys
# ssh-keygen -t rsa (连续三次回车,即在本地生成了公钥和私钥,不设置密码)
将在 linux 主机的当前用户 HOME 目录下的.ssh 目录,生成 id_rsa.pub 和 id_rsa,其中,id_rsa 是密匙,id_rsa.pub 是公匙,你需要将 id_rsa.pub 上传 (ssh 服务端,也就是装有 winsshd 的 windows 机器)
可使用下面命令
cd ~/.ssh
scp id_rsa.pub Administrator@192.168.0.1:/d:/data
2.将公匙导入到 winsshd
Open easy setting–>Virtual accounts
点 add 按钮,,,输入一个名字,比如 codeif,在列表中 0 keys 后的编辑按钮,导入刚才的公匙以后就可以不用输入密码,linux 就可以通过 scp 命令从装有 winsshd 的机器上获取文件了

传输到远程 windows 上的 app,可设置为共享盘符,本机添加为网络盘符

四、不同角色日常操作项
1) admin 管理员
Jenkins 系统配置下的所有功能只有 admin 有权限

① 建用户配角色
② 根据 build 的项目需要下载相应插件,配置全局变量或系统配置
2) 开发管理员
① 项目分类
将同一项目的前后端,或者不同地区的同一类型的项目放一文件夹中,方面归类快速查找。

② 新建项目任务

根据 Example 中的例子,根据已有的相应类型的项目任务名称,快速复制项目任务。

注意:任务名称一定要是当前产品线名称的前缀,比如 Zrzy_。如果复制的是某文件夹的任务,那么需要进入到该文件夹内再新增 item 任务,否则会提示无此 job。

可根据需要移动项目所在的文件夹位置

③ 任务配置

主要做以下三步的调整:
第一:更改 git 库地址
第二:更改远程服务器 ip
第三:设置远程服务器的免密登录(需通过 admin 用户登录在 manager jenkin-configure system)
④ 日志查看

蓝色和黄色表示成功,红色表示失败。
3) 普通开人员
① 项目构建
② 日志查看

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册