大家好,又见面了,我是你们的朋友全栈君。
这篇博文总结下如何下载安装和配置Jenkins
Jenkins通常使用内置的Java Servlet容器/应用程序服务器(Jetty)在其自己的进程中作为独立应用程序运行。
Jenkins 安装方式有三种:
接下来我们讲解下如何使用下载war 包方式进行安装和配置Jenkins.
具体步骤如下:
java -jar jenkins.war --httpPort=8080
或者可以编写一个Shell脚本:
vi startup.sh
#!/bin/bash nohup java -jar jenkins.war --httpPort=8686 &
记下上图中出现的随机密码字符串,待会安装要用。
安装时间可能有点长,稍作等候。
Docker 方式安装首先需要安装Docker 环境,具体安装方法见我的另外一篇博文:如何在Centos7上安装或卸载Docker?
安装完Docker 之后,我们需要去Docker 仓库查找我们的Jenkins.
Docker 官方仓库地址:https://hub.docker.com/
打开官方仓库网址后,我们输入Jenkins 然后点击搜索即可。
值得注意的是当我们打开这个后你会发现有这么一句话:
翻译成中文就是:
不推荐使用此image,而应使用Jenkins社区在项目发布过程中提供和维护的jenkins / jenkins:lts image。 在LTS 2.60.x之后,此处找到的image将不再进行任何更新。 请相应地调整您的用法。
也就是说,我们不要再选择这个仓库镜像了,而是应该选择jenkins/jenkins:lts 这个长期支持版本。
长期支持版本地址:https://hub.docker.com/r/jenkins/jenkins
打开后我们可以看到如下提示:
docker pull jenkins/jenkins:lts
docker pull jenkins/jenkins 这里建议我们选择长期支持版本
如果我们选择的是长期支持版本,运行它就输入如下命令即可:
docker run -p 8080:8080 -p 50000:50000 jenkins/jenkins:lts
然后其他的安装步骤和之前的那种直接下载方式基本上一致了就不再重复讲解。
如果想指定jenkins 的安装路径,那么需要执行如下命令 docker run -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts 这将会自动创建jenkins_home 文件夹,它将在容器停止/重新启动/删除后继续存在。
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
Tips: 这里要导入rpm包签名密钥防止包管理器下载的软件地址被伪造, 用于签名软件包的gpg密钥已于2020年4月16日更新,因此,如果如果在此日期之前导入,则需要重新导入。
sudo yum upgrade
sudo yum install jenkins
sudo systemctl daemon-reload
sudo systemctl start jenkins
sudo systemctl status jenkins
如果返回这样的内容说明成功:
Loaded: loaded (/etc/rc.d/init.d/jenkins; generated)
Active: active (running) since Tue 2018-11-13 16:19:01 +03; 4min 57s ago
...
如果想让项目集成Jenkins,这里提供一个可供参考的配置文件。
Jenkinsfile.groovy
pipeline{
agent {
label 'LABEL_192.168.159.160'
}
triggers{
cron('H 11 * * *') }
environment {
GIT_EMAIL = sh(script: '''git log -3 | cat - | grep Author | grep -v nobody@nowhere | awk -F'[<>]' '{print $2}' | head -1 ''',returnStdout: true).trim()
GIT_PROJECT = sh(script: '''git remote -v | head -1 | awk -F '/' '{print $4}' ''',returnStdout: true).trim()
GIT_REPO = sh(script: '''git remote -v | head -1 | awk -F'[/.]' '{print $7}' ''',returnStdout: true).trim()
TEAM_NAME = sh(script: '''git remote -v | head -1 | awk -F'[/.]' '{print $7}' | awk -F '_' '{print $1}' | tr '[a-z]' '[A-Z]' ''',returnStdout: true).trim()
GIT_COMMIT = sh(script: '''git rev-parse HEAD ''',returnStdout: true).trim()
GIT_CHANGE = sh(script: '''git show --stat $GIT_COMMIT | tail -1 ''',returnStdout: true).trim()
GIT_AUTHOR = sh(script: '''git log -3 | cat - | grep Author | grep -v nobody@nowhere | awk -F'[<>]' '{print $1}' | awk -F ':' '{print $2}' | sed 's/ //g' | head -1 ''',returnStdout: true).trim()
}
stages{
stage("trigger1"){
steps{
sh 'echo commit > $WORKSPACE/.trigger_type'
}
}
stage("trigger2"){
when {
changeRequest() }
steps{
sh 'echo pr > $WORKSPACE/.trigger_type'
}
}
stage("DailyBuild"){
when {
triggeredBy 'TimerTrigger' }
steps{
sh '''
echo daily > $WORKSPACE/.trigger_type
GIT_SSH_COMMAND="ssh -i $HOME/.ssh/seat_rdgit/id_rsa";export GIT_SSH_COMMAND
'''
}
}
stage("Build"){
steps{
sh 'echoEnv "Build"'
sh 'mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent compile -Dmaven.test.failure.ignore=true'
echo "---------这里替换为执行编译的步骤---------"
}
}
stage("UnitTest"){
steps{
sh 'echoEnv "UnitTest"'
echo "========executing UT========"
echo "---------执行单元测试----------"
sh 'mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent test -Dmaven.test.failure.ignore=true'
echo "---------这里替换为执行UT的步骤---------"
}
post{
success{
echo "========UT executed successfully========"
}
failure{
echo "========UT execution failed========"
echo "--------单元测试失败--------------"
}
}
}
stage("SonarScan") {
when{
anyOf{
branch 'dev'
changeRequest()
}
}
steps {
sh 'echoEnv "SonarScan"'
echo "---------执行静态代码扫描----------"
//sh 'mvn sonar:sonar'
}
}
}
post{
always{
echo "========always========"
emailext(
subject: '${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志',
body: '${FILE,path="/opt/app/jenkins/template/email.html"}',
to: env.GIT_EMAIL
)
}
success{
sh 'echoEnv "SUCCESS"'
echo "========pipeline executed successfully ========"
}
aborted{
sh 'echoEnv "ABORT"'
}
failure{
sh 'echoEnv "FAIL"'
echo "========pipeline execution failed========"
}
}
}
本篇完~
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/146614.html原文链接:https://javaforall.cn