先看看官网的一些操作提示
1、创建SSH密钥对


2、创建制品仓库

看完官网的介绍,持续集成需要提前准备好SSH凭证和制品仓库,下面将让我们动手开始吧
登录服务器控制台,创建 SSH 密钥对。获取私钥对后将其录入至 CODING 中的 凭据管理 中,将公钥 id_rsa.pub 的内容复制到服务器的 ~/.ssh/authorized_keys 中。
ssh-keygen -m PEM -t rsa -b 4096 -C "your.email@example.com"


创建好后将列表的凭据ID记录下来


创建好后将命令记录下来,里面包含了三个参数,用户名、密码、host









/opt/coding/ 是我的云服务器jar包所在地,/opt/coding/ start.sh 是启动的脚本
- def remoteConfig = [:]
- remoteConfig.name = "my-remote-server"
- remoteConfig.host = "${REMOTE_HOST}"
- remoteConfig.port = "${REMOTE_SSH_PORT}".toInteger()
- remoteConfig.allowAnyHosts = true
-
- withCredentials([
- sshUserPrivateKey(
- credentialsId: "${REMOTE_CRED}",
- keyFileVariable: "privateKeyFilePath"
- ),
- usernamePassword(
- credentialsId: "${CODING_ARTIFACTS_CREDENTIALS_ID}",
- usernameVariable: 'CODING_DOCKER_REG_USERNAME',
- passwordVariable: 'CODING_DOCKER_REG_PASSWORD'
- )
- ]) {
- // SSH 登录用户名
- remoteConfig.user = "${REMOTE_USER_NAME}"
- // SSH 私钥文件地址
- remoteConfig.identityFile = privateKeyFilePath
-
- // 请确保远端环境中有 Docker 环境
- sshCommand(
- remote: remoteConfig,
- command: "docker login -u ${CODING_DOCKER_REG_USERNAME} -p ${CODING_DOCKER_REG_PASSWORD} ${CODING_DOCKER_REG_HOST}",
- sudo: true,
- )
-
- stage("推送文件") {
- sshPut remote: remoteConfig, from: "target/monkey.jar" , into: '/opt/coding/'
- }
-
- sshCommand(
- remote: remoteConfig,
- command: "sh /opt/coding/start.sh",
- sudo: true,
- )
-
- echo "部署成功"
- }

- # Dockerfile
- FROM openjdk:8-jdk-alpine
- VOLUME /tmp
- ADD monkey.jar docker-monkey.jar
- ENTRYPOINT ["java","-Xms500m","-Xmx500m","-XX:MetaspaceSize=256m","-XX:MaxMetaspaceSize=500m", "-jar","/docker-monkey.jar"]
- # start.sh
- cd /opt/coding/
- docker build -t monkey .
- docker stop monkey | true
- docker rm monkey | true
- docker run -v /lanren312/docker-workspace/nginx/html/file/monkey/:/lanren312/docker-workspace/nginx/html/file/monkey/ -it -m 512M -p 9001:9001 \
- --restart always -d --name=monkey monkey:latest

配置完成后,点击 立即构建,稍等一会就可以看到构建成功,当你修改代码提交到仓库,coding的持续集成就会自动同步代码,不用再去手动同步代码了。






1、Pipeline 脚本
将前端打包的文件 /monkey 拷贝到了 /lanren312/docker-workspace/nginx/html/ 目录下
- def remoteConfig = [:]
- remoteConfig.name = "my-remote-server"
- remoteConfig.host = "${REMOTE_HOST}"
- remoteConfig.allowAnyHosts = true
-
- withCredentials([
- sshUserPrivateKey(
- credentialsId: "${REMOTE_CRED}",
- keyFileVariable: "privateKeyFilePath"
- ),
- usernamePassword(
- credentialsId: "${CODING_ARTIFACTS_CREDENTIALS_ID}",
- usernameVariable: 'CODING_DOCKER_REG_USERNAME',
- passwordVariable: 'CODING_DOCKER_REG_PASSWORD'
- )
- ]) {
- // SSH 登陆用户名
- remoteConfig.user = "${REMOTE_USER_NAME}"
- // SSH 私钥文件地址
- remoteConfig.identityFile = privateKeyFilePath
-
- // 删除文件 ps: 这个是后面加的..
- sshCommand remote: remoteConfig, command: "rm -rf /lanren312/docker-workspace/nginx/html/monkey"
-
- stage("推送文件") {
- sshPut remote: remoteConfig, from: "./monkey" , into: '/lanren312/docker-workspace/nginx/html/'
- }
- echo "部署成功"
- }

提交工单,客服回复 “Auth fail是ssh密钥认证失败,麻烦本地检查一下密钥是否能够正常连接到目标服务器”,后发现公钥 id_rsa.pub 的内容复制到服务器的 ~/.ssh/authorized_keys 中时不一致导致,复制要仔细哦
持续构建,发现云服务上的文件时间没有更新,其实内容是更新了的。


完