前言
好了,今天休息正好整理一下,最近Jenkins从零到实战的使用,关于Jenkins介绍这里不在描述,详细介绍可以去看官网https://www.jenkins.io/,前两篇文章中并没有加入nginx来做反向代理,今天也引入nginx反向代理部署,网上大部分使用nginx docker镜像来部署,这里我使用的是linux系统本地部署nginx。
Nginx、Docker、Compose、Jenkins安装
关于nginx、docker、docker-compose、Jenkins的安装在前面的几篇都有详细的教程,所以这里就不详细张开了,直接附上链接。
Nginx安装:https://blog.youkuaiyun.com/andyLyysh/article/details/127322789?spm=1001.2014.3001.5502
Jenkins的安装:https://blog.youkuaiyun.com/andyLyysh/article/details/128585967?spm=1001.2014.3001.5502
Nginx的配置
upstream jenkins {
keepalive 32;
server 127.0.0.1:8082;
}
server {
listen 80;
server_name jenkins.adc.com;
charset utf-8;
location / {
sendfile off;
proxy_pass http://jenkins;
proxy_redirect default;
proxy_http_version 1.1;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_max_temp_file_size 0;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffering off;
proxy_request_buffering off;
proxy_set_header Connection "";
}
access_log /var/log/nginx/jenkins.access.log;
error_log /var/log/nginx/jenkins.error.log;
}
配置好后,重启nginx
如果之前使用ip+端口进行访问Jenkins的,需要在Configure System中找到Jenkins Location中的url配置,更换代理的域名,配置好后就可以用域名来访问了
最后附上自动化部署spring boot项目的实际案例,使用的pipeline流水线任务。
pipeline {
agent any
tools {
maven "maven3.8.6"
jdk "java8"
}
stages {
stage ("拉取git仓库代码") {
steps {
git branch: 'dev', credentialsId: '4d17752e-5d17-436c-8943-55d92574cebd', url: 'http://xxxx.xxxx.vip/liboxiang/topfus_social.git'
}
}
stage ("构建项目") {
steps {
sh '''
mvn clean package
'''
}
}
stage ("推送Dockerfile ... ") {
steps {
sshPublisher(publishers: [sshPublisherDesc(configName: 'localserver', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '''
mv /data/social/social-admin-api/Dockerfile /data/social/social-admin-api/back/Dockerfile`date +%Y%m%d`
cd ~/social/social-admin/
mv ./Dockerfile /data/social/social-admin-api''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/social/social-admin/', remoteDirectorySDF: false, removePrefix: 'topfus-admin-api/', sourceFiles: 'topfus-admin-api/Dockerfile'), sshTransfer(cleanRemote: false, excludes: '', execCommand: '''
mv /data/social/social-client-api/Dockerfile /data/social/social-client-api/back/Dockerfile`date +%Y%m%d`
cd ~/social/social-client/
mv ./Dockerfile /data/social/social-client-api''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/social/social-client/', remoteDirectorySDF: false, removePrefix: 'topfus-client-api/', sourceFiles: 'topfus-client-api/Dockerfile')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
}
}
stage ("推送jar ... ") {
steps {
sshPublisher(publishers: [sshPublisherDesc(configName: 'localserver', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '''cd /data/social/
echo "docker stopping ... "
docker-compose stop
mv /data/social/social-admin-api/social-admin.jar /data/social/social-admin-api/back/social-admin-`date +%Y%m%d`.jar
mv /data/social/social-client-api/social-client.jar /data/social/social-client-api/back/social-client-`date +%Y%m%d`.jar
cd ~/social/social-admin
mv ./social-admin.jar /data/social/social-admin-api/''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/social/social-admin', remoteDirectorySDF: false, removePrefix: 'topfus-admin-api/target/', sourceFiles: 'topfus-admin-api/target/social-admin.jar'), sshTransfer(cleanRemote: false, excludes: '', execCommand: '''cd ~/social/social-client
mv ./social-client.jar /data/social/social-client-api/
cd /data/social/
echo "docker starting ... "
docker-compose up -d --build''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/social/social-client', remoteDirectorySDF: false, removePrefix: 'topfus-client-api/target/', sourceFiles: 'topfus-client-api/target/social-client.jar')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
}
}
}
}
注意:在实际使用过程中,一定做好上一个版本的备份,详细请看脚本代码