【2、持续集成】【AmberNAS】在CODING上建立持续继承环境

在CODING上建立持续继承环境

CI工具

CODING 团队版 注意,不是我的版

前期准备

添加密钥

为项目添加密钥,以便让集成环境能够访问咱们的远程服务器,发布程序。经过ssh-keygen生成密钥,最好能够重命名,防止覆盖本地密钥。html

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/amber/.ssh/id_rsa): demo  #重命名demo
Enter passphrase (empty for no passphrase):  # 设置密码 这里直接回车略过过
Enter same passphrase again: 
Your identification has been saved in demo. 
Your public key has been saved in demo.pub. 
The key fingerprint is:
SHA256:+ie8nyDsn3V+gh1BQBmH6a3p8FVvfZKxZ/UsoxAbECk amber@amber-ubuntu

Linux密钥默认在/home/{user}/.ssh/目录下,Windows密钥默认在C:\Users\{user}\.ssh在。在这个文件夹下demo就是密钥,demo.pub就是公钥。前端

将公钥添加至服务器的信任列表中

将经过ssh-keygen生成的密钥保存至coding中,留意ID,这里之后会用到。
图片.pngjava

Spring Boot 的持续继承

建立团队,与项目后,须要初始化一个仓储,用来管理后台代码。web

参考文档

CODING- 持续继承快速入门
CODING-配置文件DEMO

为Spring Boot建立服务

在目标服务器上建立服务,以即可以经过systemctl快速管理服务。在/etc/systemd/system目录下建立一个spring.service文件。spring

[Unit]
Description=spring
After=syslog.target
 
[Service]
ExecStart= /usr/jdk1.8.0_191/bin/java -jar /data/www/target/server-0.0.1.jar  # 在这里启动spring项目
 
[Install]
WantedBy=multi-user.target

设置缓存

经过设置缓存,加速构建速度
图片.pngshell

配置持续继承

能够经过如下文件进行配置,注意看注释npm

pipeline {
  agent any
  stages {
    stage('检出') {
      steps {
        checkout([$class: 'GitSCM', branches: [[name: env.GIT_BUILD_REF]], 
                                                        userRemoteConfigs: [[url: env.GIT_REPO_URL, credentialsId: env.CREDENTIALS_ID]]])
      }
    }
    stage('构建') {
      steps {
        echo '构建中...'   // 这里开始下载依赖,打包程序
        sh 'mvn install'
        sh 'mvn package'
        sh 'ls'
        echo '构建完成.'
      }
    }
    stage('部署') {
      steps {
        echo '部署中...'
        script {
          def remote = [:]   // 这里开始登录目标主机发布程序
          remote.name = 'web-server'
          remote.allowAnyHosts = true
          remote.host = 'xxxxx.com'  //这里填写服务器地址
          remote.user = 'root'  // 登录用户名
          // credentialsId: 密钥存储在coding上,返回的id
          withCredentials([sshUserPrivateKey(credentialsId: 'c93aac1c-ba76-4149-87e6-45fb5590e613', keyFileVariable: 'id_rsa')]) {
            remote.identityFile = id_rsa
            // 将jar包上传至服务器
            sshPut remote: remote, from: 'target/server-0.0.1.jar', into: '/data/www/target'
            // 重启服务
            sshCommand remote: remote, command: "systemctl stop spring"
            sshCommand remote: remote, command: "systemctl start spring"
          }
        }
      }
    }
  }
}

Angular的持续继承

前端的持续继承与后端基本保持一致。值得注意的是须要把npm的缓存打开。Angular的配置文件以下所示ubuntu

pipeline {
  agent any
  stages {
    stage('检出') {
      steps {
        checkout([$class: 'GitSCM', branches: [[name: env.GIT_BUILD_REF]], 
                                                                                    userRemoteConfigs: [[url: env.GIT_REPO_URL, credentialsId: env.CREDENTIALS_ID]]])
      }
    }
    stage('构建') {
      steps {
        echo '构建中...'
        sh 'npm i'
        sh 'npm run build:prod'
      }
    }
    stage('部署') {
      steps {
        echo '部署中...'
        script {
          def remote = [:]
          remote.name = 'web-server'
          remote.allowAnyHosts = true
          remote.host = 'xxxx.xxx'
          remote.user = 'root'
          withCredentials([sshUserPrivateKey(credentialsId: 'c93aac1c-ba76-4149-87e6-45fb5590e613', keyFileVariable: 'id_rsa')]) {
            // 私钥文件地址
            remote.identityFile = id_rsa
            sshPut remote: remote, from: 'dist/nas-web/', into: '/data/www/target/dist'
          }
        }

      }
    }
  }
}
相关文章
相关标签/搜索