• coding持续集成


    先看看官网的一些操作提示

    1、创建SSH密钥对

    2、创建制品仓库 

    看完官网的介绍,持续集成需要提前准备好SSH凭证和制品仓库,下面将让我们动手开始吧 

     一、创建SSH密钥对

     登录服务器控制台,创建 SSH 密钥对。获取私钥对后将其录入至 CODING 中的 凭据管理 中,将公钥 id_rsa.pub 的内容复制到服务器的 ~/.ssh/authorized_keys 中。

    ssh-keygen -m PEM -t rsa -b 4096 -C "your.email@example.com" 

     

     二、录入凭据--SSH私钥

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

     

     

    三、 创建制品仓库 

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

     

     

    四、构建后端

     

     

     1、Pipeline 脚本

    /opt/coding/  是我的云服务器jar包所在地,/opt/coding/ start.sh 是启动的脚本

    1. def remoteConfig = [:]
    2. remoteConfig.name = "my-remote-server"
    3. remoteConfig.host = "${REMOTE_HOST}"
    4. remoteConfig.port = "${REMOTE_SSH_PORT}".toInteger()
    5. remoteConfig.allowAnyHosts = true
    6. withCredentials([
    7. sshUserPrivateKey(
    8. credentialsId: "${REMOTE_CRED}",
    9. keyFileVariable: "privateKeyFilePath"
    10. ),
    11. usernamePassword(
    12. credentialsId: "${CODING_ARTIFACTS_CREDENTIALS_ID}",
    13. usernameVariable: 'CODING_DOCKER_REG_USERNAME',
    14. passwordVariable: 'CODING_DOCKER_REG_PASSWORD'
    15. )
    16. ]) {
    17. // SSH 登录用户名
    18. remoteConfig.user = "${REMOTE_USER_NAME}"
    19. // SSH 私钥文件地址
    20. remoteConfig.identityFile = privateKeyFilePath
    21. // 请确保远端环境中有 Docker 环境
    22. sshCommand(
    23. remote: remoteConfig,
    24. command: "docker login -u ${CODING_DOCKER_REG_USERNAME} -p ${CODING_DOCKER_REG_PASSWORD} ${CODING_DOCKER_REG_HOST}",
    25. sudo: true,
    26. )
    27. stage("推送文件") {
    28. sshPut remote: remoteConfig, from: "target/monkey.jar" , into: '/opt/coding/'
    29. }
    30. sshCommand(
    31. remote: remoteConfig,
    32. command: "sh /opt/coding/start.sh",
    33. sudo: true,
    34. )
    35. echo "部署成功"
    36. }

    2、环境变量

     

     3、云服务器配置

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

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

     五、构建前端

    1、Pipeline 脚本 

     将前端打包的文件 /monkey  拷贝到了 /lanren312/docker-workspace/nginx/html/ 目录下 

    1. def remoteConfig = [:]
    2. remoteConfig.name = "my-remote-server"
    3. remoteConfig.host = "${REMOTE_HOST}"
    4. remoteConfig.allowAnyHosts = true
    5. withCredentials([
    6. sshUserPrivateKey(
    7. credentialsId: "${REMOTE_CRED}",
    8. keyFileVariable: "privateKeyFilePath"
    9. ),
    10. usernamePassword(
    11. credentialsId: "${CODING_ARTIFACTS_CREDENTIALS_ID}",
    12. usernameVariable: 'CODING_DOCKER_REG_USERNAME',
    13. passwordVariable: 'CODING_DOCKER_REG_PASSWORD'
    14. )
    15. ]) {
    16. // SSH 登陆用户名
    17. remoteConfig.user = "${REMOTE_USER_NAME}"
    18. // SSH 私钥文件地址
    19. remoteConfig.identityFile = privateKeyFilePath
    20. // 删除文件 ps: 这个是后面加的..
    21. sshCommand remote: remoteConfig, command: "rm -rf /lanren312/docker-workspace/nginx/html/monkey"
    22. stage("推送文件") {
    23. sshPut remote: remoteConfig, from: "./monkey" , into: '/lanren312/docker-workspace/nginx/html/'
    24. }
    25. echo "部署成功"
    26. }

    六、记录构建中碰到的问题

    1、后端

     

     提交工单,客服回复 “Auth fail是ssh密钥认证失败,麻烦本地检查一下密钥是否能够正常连接到目标服务器”,后发现公钥 id_rsa.pub 的内容复制到服务器的 ~/.ssh/authorized_keys 中时不一致导致,复制要仔细哦

    2、前端

    持续构建,发现云服务上的文件时间没有更新,其实内容是更新了的。

     

     

  • 相关阅读:
    计算机毕业设计Python+django 网上外卖订餐系统(源码+系统+mysql数据库+Lw文档)
    EdgeCloudSim官方Sample运行——Windows+IntelliJ IDEA+Matlab
    朋友圈如何设置定时发送?
    配置xml文件的dtd
    Tomcat域名访问文件出现访问不到的问题
    移动Web第一天 1 字体图标 && 2 平面转换 && 3 渐变
    Seata入门系列【9】Seata之SQL语句限制
    redis的原理和源码-发布订阅
    Edexcel A-Level化学真题讲解(1)
    Kotlin sort map :TreeMap
  • 原文地址:https://blog.csdn.net/lanren312/article/details/127874008