1 环境
192.168.38.80 docker jenkins gitlab
2 Spring Boot
2.1 HelloController
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "Hello World";
}
}
2.2 初始化Jenkinsfile
pipeline {
// 集群环境下任何一个代理可用就可以执行构建
agent any
// 步骤
stages {
stage('编译') {
steps {
echo "编译"
}
}
stage('打包') {
steps {
echo "打包"
}
}
stage('运行') {
steps {
echo "运行"
}
}
}
}
2.3 项目上传到gitlab
3 Jenkins 创建项目
3.1 创建流水线
3.2 创建凭证
3.3 测试
打开 Blue Ocean:
点击运行:
4 触发远程构建
4.1 Jenkins 创建用户
4.2 创建用户token
用rosh用户登录:
#记录token,token只生成一次
1166227febd5d7b2bd43ac75cfc7247d0b
4.3 创建流水线令牌
4.4 创建Webhooks
url组成:http://jenkins账号:token@JENKINS_URL/job/springboot-devops/build?token=TOKEN_NAME
#例子
http://rosh:1166227febd5d7b2bd43ac75cfc7247d0b@192.168.38.80:8080/job/springboot-devops/build?token=rosh_springboot_devops
4.5 测试
5 代码编译
5.1 jenkins 安装插件
5.2 创建maven配置文件
进入jenkins挂在卷:
#创建配置文件
cd /var/lib/docker/volumes/jenkins-data/_data
mkdir -p appconfig/maven
cd appconfig/maven/
vim settings.xml
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>/root/.m2</localRepository>
<pluginGroups>
</pluginGroups>
<proxies>
</proxies>
<mirrors>
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
</mirrors>
<profiles>
</profiles>
</settings>
5.3 修改Jenkinsfile
默认工作目录打包
pipeline {
// 集群环境下任何一个代理可用就可以执行构建
agent any
environment {
WORKSPACE="${WORKSPACE}"
}
// 步骤
stages {
stage('打包') {
agent {
docker {
image 'maven:3-alpine'
// 把maven /root/.m2 文件 挂载到m2_jar数据卷
args '-v m2_jar:/root/.m2'
}
}
steps {
sh "echo 默认工作目录:${WORKSPACE}"
// jenkins在解析流水线期间,可以任意访问jenkins家目录的位置和相关环境信息
sh 'cd ${WORKSPACE} && mvn clean package -s "/var/jenkins_home/appconfig/maven/settings.xml" -Dmaven.test.skip=true '
}
}
stage('生成镜像') {
steps {
echo "生成镜像"
}
}
stage('运行') {
steps {
echo "运行"
}
}
}
}
5.4 提交
第一次很慢,后续会很快。
6 构建镜像
6.1Ddockerfile
FROM openjdk:8-jre-alpine
#同步时间
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
#复制包
ADD target/*.jar /spring-demo.jar
#同步jar包时间
RUN touch /spring-demo.jar
EXPOSE 8888
ENV JAVA_OPTS="-Xmx512m -Xms512m"
#运行命令
ENTRYPOINT ["/bin/sh", "-c","java -jar $JAVA_OPTS /spring-demo.jar"]
6.2 Jenkinsfile
pipeline {
// 集群环境下任何一个代理可用就可以执行构建
agent any
environment {
WORKSPACE="${WORKSPACE}"
}
// 步骤
stages {
stage('打包') {
agent {
docker {
image 'maven:3-alpine'
// 把maven /root/.m2 文件 挂载到m2_jar数据卷
args '-v m2_jar:/root/.m2'
}
}
steps {
sh "echo 默认工作目录:${WORKSPACE}"
// jenkins在解析流水线期间,可以任意访问jenkins家目录的位置和相关环境信息
sh 'cd ${WORKSPACE} && mvn clean package -s "/var/jenkins_home/appconfig/maven/settings.xml" -Dmaven.test.skip=true '
}
}
stage('生成镜像') {
steps {
sh 'pwd && ls -alh'
sh 'docker rmi -f springboot-demo:latest'
sh 'docker build -t springboot-demo .'
}
}
stage('运行') {
steps {
echo "运行容器"
}
}
}
}
6.3 查看
7 部署
Jenkinsfile
pipeline {
// 集群环境下任何一个代理可用就可以执行构建
agent any
environment {
WORKSPACE="${WORKSPACE}"
}
// 步骤
stages {
stage('打包') {
agent {
docker {
image 'maven:3-alpine'
// 把maven /root/.m2 文件 挂载到m2_jar数据卷
args '-v m2_jar:/root/.m2'
}
}
steps {
sh "echo 默认工作目录:${WORKSPACE}"
// jenkins在解析流水线期间,可以任意访问jenkins家目录的位置和相关环境信息
sh 'cd ${WORKSPACE} && mvn clean package -s "/var/jenkins_home/appconfig/maven/settings.xml" -Dmaven.test.skip=true '
}
}
stage('生成镜像') {
steps {
sh 'pwd && ls -alh'
sh 'docker rm -f springboot-demo && docker rmi -f springboot-demo:latest'
sh 'docker build -t springboot-demo .'
}
}
stage('部署') {
steps {
echo "部署"
sh 'docker run -d -p 8888:8888 -v springboot-demo-logs:/logs --name springboot-demo springboot-demo:latest'
}
}
}
}
测试:
修改controller后push代码。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/15033.html