Appearance
CI CD 集成和配置
Spring Boot 应用配置
jar包类型
配置.rancher-pipeline.yml
内容如下
yaml
stages:
- name: complie
steps:
- runScriptConfig:
image: nexus3.tineco.com/maven:3.6.0-jdk-8-alpine
shellScript: mvn clean package -s /usr/share/maven/ref/settings.xml
- name: push-image
steps:
- publishImageConfig:
dockerfilePath: ./Dockerfile
buildContext: .
tag: xuanyuebo/webapp:${CICD_EXECUTION_SEQUENCE}
pushRemote: true
registry: nexus3.tineco.com
timeout: 60
notification: {}配置Dockerfile
内容如下,可以自行条件启动参数,如jvm参数、端口等信息
FROM nexus3.tineco.com/openjdk:8-jdk-slim
WORKDIR /opt
ADD target/webapp.jar .
ENV TZ=Asia/Shanghai
ENV JAVA_OPTS "-Xmx2048m -Xss512k -XX:+UseG1GC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/log/jvm/heap -XX:+PrintGCDetails -Xloggc:/log/jvm/gc.log"
EXPOSE 8080
ENTRYPOINT java $JAVA_OPTS -jar webapp.jarwar包类型
War包部署注意事项
- Application类需要继承
SpringBootServletInitializer - pom.xml里的packing设置为war
- 排除内置的tomcat依赖
xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<scope>provided</scope>
</dependency>配置.rancher-pipeline.yml
内容如下
yaml
stages:
- name: complie
steps:
- runScriptConfig:
image: nexus3.tineco.com/maven:3.6.0-jdk-8-alpine
shellScript: mvn clean package -s /usr/share/maven/ref/settings.xml -P prod
- name: push-image
steps:
- publishImageConfig:
dockerfilePath: ./Dockerfile
buildContext: .
tag: xuanyuebo/webapp:${CICD_EXECUTION_SEQUENCE}
pushRemote: true
registry: nexus3.tineco.com
timeout: 60
notification: {}配置Dockerfile
内容如下,可以自行条件启动参数,如jvm参数、端口等信息
FROM nexus3.tineco.com/tomcat:9-openjdk8
COPY target/webapp.war /usr/local/tomcat/webapps/webapp.war
ENV TZ=Asia/Shanghai
ENV JAVA_OPTS "-Xmx2048m -Xss512k -XX:+UseG1GC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/log/jvm/heap -XX:+PrintGCDetails -Xloggc:/log/jvm/gc.log"前端项目配置
配置.rancher-pipeline.yml
内容如下
yaml
stages:
- name: compile
steps:
- runScriptConfig:
image: node:latest
shellScript: |-
npm install --registry=https://nexus3.tineco.com/repository/npm-group/
npm run build
- name: push-image
steps:
- publishImageConfig:
dockerfilePath: ./Dockerfile
buildContext: .
tag: xuanyuebo/front-app:${CICD_GIT_BRANCH}
pushRemote: true
registry: nexus3.tineco.com
- name: deploy
steps:
- applyYamlConfig:
path: ./deployment.yaml
timeout: 60
branch:
include:
- release-*
notification: {}配置Dockerfile
内容如下,可以自行条件启动参数,如jvm参数、端口等信息
FROM nexus3.tineco.com/nginx:latest
COPY ./dist /usr/share/nginx/html/front-app手动编译镜像
配置成Dockerfile后,可以使用docker镜像镜像打包, 切换到Dockerfile所在目录,先运行maven或者npm的build命令,然后进行docker打包镜像。
# mvn package || npm run build
docker build . -t nexus3.tineco.com/tineco/user:release-20211130
# 推送镜像到镜像库
docker push nexus3.tineco.com/tineco/user:release-20211130如果推送失败,请先用docker login nexus3.tineco.com登录nexus,具体账户参考nexus账号管理。
自动打包
通过气泡鱼平台可以进行自动打包。 首先先登录气泡鱼平台,通过仓库管理开启编译仓库,然后通过打tag进行镜像编译。
Sonarqube代码检查配置
项目可以选择静态代码检查
创建项目
通过Sonarqube管理控制台创建项目
后端集成
获取maven的编译命令如下,请修改对应的项目名称和token
mvn clean verify sonar:sonar -Dsonar.projectKey=rancher_balloonfish_AYkEmIF3Xv8rNWd4OSQZ -Dsonar.projectName='balloonfish' -Dsonar.host.url=https://sonar.tineco.com -Dsonar.token=xxx -Dsonar.projectVersion=${CICD_GIT_BRANCH} -s /usr/share/maven/ref/settings.xml -P prod修改.rancher-pipeline.yml
由于sonar maven plugin的版本问题,修改maven的image为nexus3.tineco.com/maven:3.8-openjdk-17-slim
修改本地的lombok和maven-compiler插件版本
Spring Boot项目可以通过以下配置修改pom.xml里的属性配置
<properties>
<lombok.version>1.18.24</lombok.version>
<spring-boot-maven-plugin.version>2.7.4</spring-boot-maven-plugin.version>
</properties>修改完成后在气泡鱼触发编译,编译完成后可以看到代码检查结果
前端项目集成
获取项目基本信息
参考后端
修改.rancher-pipeline.yml
增加check节点,信息如下,需要根据上面获得的信息修改对应部分
yaml
stages:
- name: compile
steps:
- runScriptConfig:
image: node:16.13.0-slim
shellScript: |-
yarn config set registry https://nexus3.tineco.com/repository/npm-group/
yarn install
yarn build
- name: check
steps:
- runScriptConfig:
image: nexus3.tineco.com/sonar-scanner-cli:4.6.2
shellScript: |-
export SONAR_HOST_URL=https://sonar.tineco.com
export SONAR_TOKEN=xxx
export SONAR_SCANNER_OPTS="-Dsonar.projectVersion=${CICD_GIT_BRANCH} -Dsonar.projectKey=rancher_balloonfish-web_AYkF8wYrXv8rNWd4OSlh"
sonar-scanner
- name: push-image
steps:
- publishImageConfig:
dockerfilePath: ./Dockerfile
buildContext: .
tag: tineco/balloonfish:${CICD_GIT_BRANCH}
pushRemote: true
registry: nexus3.tineco.com
timeout: 60
branch:
include:
- release-*
notification: {}配置好后重新发布编译即可
