coding构建部署Docker 容器的springboot项目

Coding持续集成实现远程部署运行

项目:Java + Spring + Docker
原理:coding通过ssh私钥凭证访问服务器,执行项目的脚本使用git下拉最新代码并打包运行。

一.Git免登录下拉Coding代码

linux中免登录下拉Coding代码:https://blog.csdn.net/qq_40286424/article/details/118359130

附上:
Docker文件

FROM openjdk:8-jdk-alpine
RUN echo "Asia/Shanghai" > /etc/timezone;  #时区
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

start.sh脚本

#!/bin/bash
cd /home/xx/projectName #项目位置
git pull origin master	#coding的分支 注这里ssh下拉代码才会免登录
mvn package -Pprod -Dmaven.test.skip=true #mvn打包
docker build -t projectName:latest . #docker打包
docker stop projectName | true #停止当前运行的projectName容器
docker rm projectName | true #删除projectName容器
docker run  -p 9070:9070  --network parking-net --network-alias projectName --restart always -d --name projectName projectName:latest #network是docker的内部网络 -p 9070端口映射

二.coding中导入凭证

2.1生成服务器的ssh私钥

ps;这个与coding生成的不是同一个。

cd  ~/.ssh
ssh-keygen -t rsa

#如果存在id_rsa文件会提示输入新文件名fileName,不输入会覆盖原文件。
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): fileName
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in fileName.
Your public key has been saved in fileName.pub.
The key fingerprint is:
SHA256:+N6yhF7g/XRg6tPQMfGyqCnoRISrp46yd3LCcFzWfMU [email protected]
The key’s randomart image is:
±–[RSA 2048]----+
| . |
| . E |
|. . o . o |
| o o o… + . |
|…o o.Soo= |
|o.o . =ooo. |
|.+o. ooo. . |
|o+
+.o=o+… |
|*=.= … ++o |
±—[SHA256]-----+

2.2 xx项目-》项目设置-》开发者选项-》录入凭证-》选择ssh私钥 输入私钥创建

在这里插入图片描述

复制fileName私钥文件的内容在这里插入图片描述

三.创建构建计划

3.1 持续集成-》构建计划-》选择“Java + Spring + Docker”

在这里插入图片描述

3.2 配置构建计划

修改构建计划名称 xx
(1)代码仓库:代码源-》coding-》关联代码仓库
(2)单元测试: 不启动
(3)编译构建:./gradlew build (默认)
(4)构建Docker镜像

名称:xx
Docker文件位置: 服务器存储项目的Docker文件地址
Docker 构建目录: . (默认)
Docker 镜像版本:分支名-修订版本号( G I T L O C A L B R A N C H : − b r a n c h − {GIT_LOCAL_BRANCH:-branch}- GITLOCALBRANCH:branch{GIT_COMMIT})(默认)

(5)推送推送到 CODING Docker 制品库

Docker 制品库:xx(没有就新建xx)

(6)部署到远端服务:启用

目标服务地址 :xx.xx.xx.xx
SSH 端口 : 22
SSH 用户名 : root
SSH 登陆凭据 : 选择1.2创建的凭证

3.3 修改构建

删除多余步骤
在这里插入图片描述
部署步骤的脚本为;

def remoteConfig = [:]
remoteConfig.name = "my-remote-server"
remoteConfig.host = "${REMOTE_HOST}"
remoteConfig.allowAnyHosts = true
// 使用 SCP 作为文件传输
remoteConfig.fileTransfer = "scp"

withCredentials([sshUserPrivateKey(
  credentialsId: "${REMOTE_CRED}",
  keyFileVariable: "privateKeyFilePath"
)]) {
    
    
  // SSH 登陆用户名
  remoteConfig.user = "${env.REMOTE_USER_NAME}"
  // SSH 私钥文件地址
  remoteConfig.identityFile = privateKeyFilePath
  sshCommand(
    remote: remoteConfig,
    command: "sh /home/xx/projectName/start.sh",
    sudo: false,
  )

  echo "部署成功!!"
}

3.4 执行构建

在这里插入图片描述

Guess you like

Origin blog.csdn.net/qq_40286424/article/details/118366019