GithubAction對接阿里雲ECS實現自動化部署

愛吃魚的小明發表於2020-12-31

參考:https://github.com/easingthemes/ssh-deploy

https://frostming.com/2020/04-26/github-actions-deploy/

https://cloud.tencent.com/developer/article/1720500

https://ld246.com/article/1602747692300

對於githubaction 部署到ECS,網上有很多文章,但是可能你看完並沒有太多理解,跟我一起 一步一步部署;

1.github action yaml檔案

在這裡插入圖片描述

# This workflow will build a Java project with Gradle
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-gradle

name: Java CI with Gradl

on:
  push:                     #只要push程式碼 就觸發流程
    branches: [ main ]
  pull_request:
    branches: [ main ]     

jobs:                   #任務
  build:

    runs-on: ubuntu-latest      #執行的平臺

    steps:                       #步驟
    - uses: actions/checkout@v2          #下載程式碼。可以訪問的github 倉庫
    - name: Set up JDK 1.8              #設定環境。可以根據環境取消
      uses: actions/setup-java@v1       #又是一個倉庫 我們的執行的命令都是基於被封裝的倉庫
      with:
        java-version: 1.8              #應該是 使用java版本
    - name: Grant execute permission for gradlew      #-name 自定義執行的名字
      run: chmod +x gradlew            #加許可權
    - name: Build with Gradle
      run: ./gradlew build             #執行的程式碼 給予當前目錄
    - name: Deploy to Staging server        #對接阿里雲服務
      uses: easingthemes/ssh-deploy@v2.1.5      #可以訪問的倉庫,實現的步驟被封裝在此倉庫
      env:
        SSH_PRIVATE_KEY: ${{ secrets.SERVER_SSH_KEY }}  #這個是阿里雲的私鑰
        ARGS: "-rltgoDzvO"
        SOURCE: "./"
        REMOTE_HOST: ${{ secrets.REMOTE_HOST }}    #阿里雲的 ip
        REMOTE_USER: ${{ secrets.REMOTE_USER }}    #阿里雲使用者
        TARGET: ${{ secrets.REMOTE_TARGET }}       #被部署的路徑 

2.secret新增

在這裡插入圖片描述

我們只有這樣寫。才能被CI檔案進行引用;

3.伺服器配置

  • ${{ secrets.SERVER_SSH_KEY }} :ssh-keygen 生成: 取id_rsa的值填入,一般都在/root/.ssh/下
  • ${{ secrets.REMOTE_USER }}: root
  • ${{ secrets.REMOTE_HOST }}: 阿里雲的公網ip
  • ${{ secrets.REMOTE_TARGET }}:自定義站點目錄 /root/web

還有一步

cat /root/.ssh/id_rsa_pub >>/root/.ssh/authorized_keys

這樣的話。可以github進行免金鑰部署服務;

4.push程式碼進行觸發

在這裡插入圖片描述

[root@k8s-m01 ~]# ls /root/web
10.txt  13.txt  16.txt  2.xtt  6.txt  9.txt         Dockerfile  gradlew.bat      src
11.txt  14.txt  17.txt  3.txt  7.txt  build         gradle      README.md
12.txt  15.txt  1.txt   5.txt  8.txt  build.gradle  gradlew     settings.gradle

相關文章