如何使用 GitHub 的 Actions 实现项目的 CI/CD GitHub 的 actions,提供了一整套的任务流,能够帮助我们实现项目的自动自动测试和自动部署。本篇主要是将我使用 github 的 actions 实现项目的自动部署,其中项目主要是 java + vue
Java 项目部署 环境依赖 1、jdk 2、maven 3、ssh
操作过程 1 创建项目(省略) 2 添加 workflow 文件 在项目的根目录下,创建 .github/workflows 文件夹 新建 build.yml 文件
3、编写服务流程 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 name: Build Ci on: push: branches: [ master ] pull_request: branches: [ master ] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Set up JDK 1.8 uses: actions/setup-java@v1 with: java-version: 1.8 - name: Cache Maven packages uses: actions/cache@v1 with: path: ~/.m2 key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} restore-keys: ${{ runner.os }}-m2 - name: Maven Build run: mvn -B package -DskipTests --file pom.xml - name: Deploy to server uses: easingthemes/ssh-deploy@v2.1.2 env: SSH_PRIVATE_KEY: ${{ secrets.DEV_TOKEN }} ARGS: "-avz --delete" REMOTE_HOST: ${{ secrets.DEV_HOST }} REMOTE_USER: ${{ secrets.DEV_USER }} SOURCE: target/wkserver-0.0.1-SNAPSHOT.jar TARGET: /home/yiliaofeiwu - name: Restart server uses: appleboy/ssh-action@master with: host: ${{ secrets.DEV_HOST }} username: ${{ secrets.DEV_USER }} key: ${{ secrets.DEV_TOKEN }} script: | nohup sh /home/yiliaofeiwu/reload.sh
其中 REMOTE_HOST、REMOTE_USER、SSH_PRIVATE_KEY 为服务器相关配置,使用 github 的secrets 配置。[项目]->[setting]->[secrets] 进行配置
Vue 项目部署 环境依赖 1、nodejs 2、ssh
操作过程 1 创建项目(省略) 2 添加 workflow 文件 在项目的根目录下,创建 .github/workflows 文件夹 新建 build.yml 文件
3、编写服务流程 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 name: deploy web on: push: branches: - master jobs: build: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@master - name: use Node.js 10 uses: actions/setup-node@v1 with: node-version: 10 - name: npm install and build run: | npm install npm run build - name: Deploy to Server uses: easingthemes/ssh-deploy@v2.0.7 env: SSH_PRIVATE_KEY: ${{ secrets.DEV_TOKEN }} ARGS: "-avz --delete" REMOTE_HOST: ${{ secrets.DEV_HOST }} REMOTE_USER: ${{ secrets.DEV_USER }} SOURCE: dist/ TARGET: /home/wuyuan