前言
之前项目中虽然使用过 Jenkins,但是都只是使用,没有自己搭建过,完整部署一个项目。既然工作中没有独立部署过,那么就只能自己动手实操一番,技多不压身嘛。
一开始是在本机上下载安装 Jenkins,然后将本地项目上传到 Gitlab 上,期望在 Jenkins 上构建项目,然后进行项目的部署和发布。但是在动手过程中发现本机 Jenkins 新建任务时走不通,要么就搭建虚拟机,或者搞台服务器,刚好手头有一台自己玩的服务器,刚好也刚贴合实际生产,所以才有了下文。
准备工作
JDK
准备java环境,jdk1.8
检查java是否安装,如果没有则先安装java环境:java -version
查看 jdk 安装路径:echo $JAVA_HOME
代码语言:javascript复制[root@iZ8vbf6lodiycfjz81qhkyZ home]# echo $JAVA_HOME
/usr/java/jdk1.8.0_251-amd64
配置环境变量
代码语言:javascript复制JAVA_HOME=/usr/java/jdk1.8.0_251-amd64
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH
后生效配置文件,
注意
如果不配置环境变量,结果会是这样
代码语言:javascript复制[root@iZ8vbf6lodiycfjz81qhkyZ alternatives]# java -version
openjdk version "1.8.0_302"
OpenJDK Runtime Environment (build 1.8.0_302-b08)
OpenJDK 64-Bit Server VM (build 25.302-b08, mixed mode)
Git
通过 yum 命令安装 yum install git。
代码语言:javascript复制git --version
#查看安装位置
which git
修改配置文件,如下命令:
代码语言:javascript复制vi /usr/share/maven/conf/settings.xml
#然后添加阿里云镜像地址
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
#设置本地仓库
<localRepository>/home/maven/repository</localRepository>
Gradle
本文使用 Gradle 的最新版本是7.2
。在继续下一步之前,您应该检查 Gradle版本页面,以查看是否有较新的版本。
首先使用以下 wget
命令在/tmp
目录中下载仅Gradle Binary zip文件:
wget https://services.gradle.org/distributions/gradle-7.2-bin.zip -P /tmp
下载完成后,解压缩/opt/gradle
目录中的zip文件:
sudo unzip -d /home/gradle /tmp/gradle-7.2-bin.zip
通过列出/opt/gradle/gradle-7.2
目录来验证是否提取了Gradle文件:
ls /home/gradle/gradle-7.2
bin init.d lib LICENSE NOTICE README
配置环境变量,
代码语言:javascript复制vi ~/.bash_profile
#追加如下内容
GRADLE_HOME=/home/gradle/gradle-7.2
export GRADLE_HOME
export PATH=$PATH:$GRADLE_HOME/bin
看版本号
代码语言:javascript复制gradle -v
安装jenkins
(1)安装稳定版
代码语言:javascript复制sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo
sudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
sudo yum install jenkins
安装完成后,如果想查看 jenkins 版本,按照网上的说法是去 /var/lib/jenkins 目录下执行下述命令:
代码语言:javascript复制cat config.xml|grep version
不过我自己服务器的输出结果有点问题。
自动安装的话,默认用户名为 jenkins,端口为8080,默认目录:
- 安装目录:/var/lib/jenkins
- 日志目录:/var/log/jenkins/jenkins.log
- 默认配置目录:/etc/sysconfig/jenkins
可修改jenkins用户为root用户、修改端口等
代码语言:javascript复制vim /etc/sysconfig/jenkins
service jenkins restart
卸载jenkins
卸载yum
方式安装的jenkins
(默认安装主目录是在/var/lib/jenkins/
)
service jenkins stop
yum clean all
yum -y remove jenkins
初始化
激活jenkins
首先启动 jenkins,执行下述命令:
代码语言:javascript复制service jenkins start
然后访问 http::/ip:8080,
首次登录需要输入密码,看页面提示:
代码语言:javascript复制/var/lib/jenkins/secrets/initialAdminPassword
浏览器进入Jenkins
(1)登录:http://自己的IP:8081/
(2)关闭:http://自己的IP:8081/exit
(3)重启:http://自己的IP:8081/restart
(4)重新加载:http://自己的IP:8081/reload
启动与关闭
代码语言:javascript复制service jenkins start
service jenkins stop
#如果遇到warning
systemctl start jenkins
systemctl stop jenkins
插件安装
Authorize Project
给项目配置授权。
Gitlab Hook Plugin
当Github有代码提交时触发自动构建
SSH Slaves plugin
更新-2020-4-21:
1.26 还叫SSH slave
1.31.2 已经更新为SSH build Agents
Gitlab
当有新的commit push到gitlab时,jenkins可以自动触发构建过程。除了需要 gitlab-hook-plugin 插件,还需要 Gitlab 插件。
Deploy to container
与Gitlab关联
配置SSH
如果要通过 git 协议拉取代码,需要建立 Jenkins 服务器和 Gitlab 服务器的无密码通信,我们首先要生存一组密钥对。
代码语言:javascript复制[root@iZ8vbf6lodiycfjz81qhkyZ tmp]# ssh-keygen -t rsa -C "你的邮箱(随意)"Generating public/private rsa key pair.Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa.Your public key has been saved in /root/.ssh/id_rsa.pub.The key fingerprint is:SHA256:D998pKifmjJgSmUcNNlaEDAdhB/UU4wr QkPVMkd1KU xxxxxThe key's randomart image is: ---[RSA 2048]---- | oBOX.B o .. || ..*.O o .. || * o E || @ . || o * .S . || . o o || . o . . || . o o . . || o oo | ----[SHA256]-----
完成后在/root/.ssh/ 会生成2个文件。id_rsa 和 id_rsa.pub。前者是私钥,注意保管,后者是公钥。
添加SSH Key到GitLab
登录GitLab之后: Profile Settings => SSH Keys => Add SSH key
输入之前生成的公钥,标题自定义。