秘钥对使用_使用gitactions持续集成项目实例
前言
在以前,我們發布代碼都是在本地先將代碼編譯打包壓縮好好,然后借助 xshell 等工具登錄服務器,將壓縮好的代碼拷貝到服務器目錄,解壓執行。但是這種方式是繁瑣低效的。而且,直接登錄服務器進行操作有很大的風險。隨著 DevOps 的興起,出現了持續集成,持續交付(CI/CD)和持續部署的新方法,開發人員只需要通過工具定義好整個軟件打包發布的流水線(Pipeline)就可以實現自動化。
那么,通過什么軟件去定義這個流水線,就是下面我要介紹的 github 提供的 Actions 模塊功能。
actions 配置文件
actions 的配置文件存放在代碼倉庫的.github/workflows目錄。是一個yml文件,名字可以自定義。
配置字段
name:工作流(Workflows)的名字,你可以定義多個流水線,名字可以幫助你區分。
on:Workflows 觸發的時機,一般是 push 和 pr 到指定分支時觸發。
runs-on:工作流執行的虛擬機環境。
job:任務,一個 Workflows 可由一個或多個 job 組成。
step:步驟,每個 job 可由一個或多個 step 組成。
use:在執行 step 時,你可以使用別人定義好的 actions
run:在執行 step 時,執行 run 對應的 shell 命令
下面是我目前配置的 Workflows
name: vpBlog# Controls when the action will run. Triggers the workflow on push or pull request# events but only for the master branchon: push: branches: [master] pull_request: branches: [master]# A workflow run is made up of one or more jobs that can run sequentially or in paralleljobs: # This workflow contains a single job called "build" build: # The type of runner that the job will run on runs-on: ubuntu-latest # Steps represent a sequence of tasks that will be executed as part of the job steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v2 - name: Install Node.js uses: actions/setup-node@v1 with: node-version: "10.x" - name: install dependencies run: npm install # Runs a single command using the runners shell - name: build project run: npm run build - name: Deploy to Server uses: easingthemes/ssh-deploy@v2.1.1 env: # 以下為參數 SSH_PRIVATE_KEY: ${{ secrets.DEPLOY_SSH_KEY }} ARGS: "-rltgoDzvO --delete" REMOTE_USER: ${{ secrets.DEPLOY_USER }} # 為了用戶信息安全對敏感數據可以在secrets中配置 REMOTE_HOST: ${{ secrets.DEPLOY_HOST }} SOURCE: ".vuepress/dist" TARGET: "/usr/share/nginx/htmlsecrets 配置
上面配置中你一定很好奇secrets.DEPLOY_SSH_KEY是如何獲取的。下面就可以解答你的疑惑。
相信秘鑰,服務器地址這些敏感信息,你一定不希望被別人看到。所以 github 也貼心的提供了 secrets 模塊配合 actions 使用。
具體配置方法可以看下圖
工作流配置
每個人在發布前可能會執行 eslint 檢查,或者跑單元測試,然后在執行 build,這里不展開講了。最終的目的是要將代碼發布到指定的服務器上。下面就來說下這步怎么做。
其實也不復雜,是借助了easingthemes/ssh-deploy這個開源的 action,其原理也是使用rsync這個工具實現數據傳輸。
- name: Deploy to Server uses: easingthemes/ssh-deploy@v2.1.1 env: # 以下為參數 SSH_PRIVATE_KEY: ${{ secrets.DEPLOY_SSH_KEY }} ARGS: "-rltgoDzvO --delete" REMOTE_USER: ${{ secrets.DEPLOY_USER }} REMOTE_HOST: ${{ secrets.DEPLOY_HOST }} SOURCE: '.vuepress/dist' TARGET: '/usr/share/nginx/html'服務器配置
由于rsync是借助秘鑰實現通過 ssh 進行傳輸。所以在服務器上需要做一些配置。
創建秘鑰
ssh-keygen -m PEM -t rsa -b 4096在服務器上安裝公鑰
cat?.ssh/id_rsa.pub?>>?.ssh/authorized_keys編輯 /etc/ssh/sshd_config 文件,開啟服務器允許通過秘鑰登錄
RSAAuthentication yesPubkeyAuthentication yes因為我是直接使用 root 賬號,所以還要開啟允許 root 通過 ssh 登錄
PermitRootLogin?yes重啟 ssh 服務器
service?sshd?restart最后將私鑰(id_rsa )中的內容保存到 secrets
總結
因為都是靜態文件所以直接拷貝到 nginx 目錄就可以直接運行了,所以相對比較簡單。如果是服務端還需要涉及到執行重啟等功能。
下面放一個執行成功的 actions
總結
以上是生活随笔為你收集整理的秘钥对使用_使用gitactions持续集成项目实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue在微信里面的兼容问题_微信H5页面
- 下一篇: 查看回滚事物sql_卧槽:这款 SQL自