偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

如何使用GitHub Actions自動(dòng)化部署我們的項(xiàng)目

開發(fā) 前端
本篇文章將為大家介紹如何使用 GitHub Actions 來(lái)實(shí)現(xiàn)我們的代碼在服務(wù)器上自動(dòng)部署。

前面我們已經(jīng)完成了項(xiàng)目的部署,但是每次部署都需要手動(dòng)操作,過(guò)程繁瑣又浪費(fèi)時(shí)間。因此,我們需要使用自動(dòng)化工具來(lái)實(shí)現(xiàn)自動(dòng)化部署。本篇文章將為大家介紹如何使用 GitHub Actions 來(lái)實(shí)現(xiàn)我們的代碼在服務(wù)器上自動(dòng)部署。

GitHub Actions

GitHub Actions 是 GitHub 提供的一個(gè)自動(dòng)化工具,可以幫助我們實(shí)現(xiàn)自動(dòng)化部署。它可以在我們的代碼倉(cāng)庫(kù)中設(shè)置一些規(guī)則,當(dāng)我們的代碼發(fā)生變化時(shí),GitHub Actions 會(huì)自動(dòng)執(zhí)行這些規(guī)則,從而實(shí)現(xiàn)自動(dòng)化部署。

根據(jù)我們的項(xiàng)目,我們需要在 GitHub Actions 做的操作很簡(jiǎn)單:

  1. 連接服務(wù)器
  2. 拉取最新代碼
  3. 執(zhí)行 docker 相關(guān)命令完成部署(根據(jù)你項(xiàng)目本身部署方式來(lái)決定)

我們?cè)诟夸浶陆ㄒ粋€(gè) .github/workflows/deploy.yml 文件,在其中設(shè)置我們的規(guī)則。

name: Deploy Remote Server

on:
  push:
    branches:
      - master # 觸發(fā)條件的分支,可以根據(jù)需要修改

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
      - name: xxx
        uses: xxx # 檢出代碼

      ...  # 寫一些規(guī)則步驟

通過(guò) SSH 連接阿里云服務(wù)器

首先我們要做的是讓github Actions可以通過(guò)SSH連接到我們的服務(wù)器,這樣才能在我們服務(wù)器是執(zhí)行相關(guān)部署命令。

所以我們需要在服務(wù)器上生成一個(gè)公鑰和一個(gè)私鑰,然后將公鑰添加到服務(wù)器的authorized_keys文件中。這樣,github Actions就可以通過(guò)私鑰連接到服務(wù)器了。那么,我們?nèi)绾卧诎⒗镌品?wù)器生成公鑰和私鑰呢?

登錄阿里云,進(jìn)入控制臺(tái)。

圖片

在控制臺(tái)中找到密鑰對(duì),點(diǎn)擊創(chuàng)建密鑰對(duì)輸入名稱之后點(diǎn)擊確定會(huì)自動(dòng)下載一個(gè)私鑰文件name.pem,記得保存好這個(gè)私鑰文件。

創(chuàng)建完成之后復(fù)制公鑰文件的內(nèi)容。

圖片

然后遠(yuǎn)程連接到我們的服務(wù)器實(shí)例執(zhí)行nano ~/.ssh/authorized_keys或者命令,將公鑰文件的內(nèi)容粘貼到authorized_keys文件中(記得是追加到已有文件后面)。此時(shí)我們就可以通過(guò)私鑰連接到服務(wù)器了。

圖片

然后我們開始配置Github Actions相關(guān)參數(shù)。進(jìn)入我們需要部署的 git 倉(cāng)庫(kù),然后配置相關(guān)參數(shù)SERVER_IP:服務(wù)器ip,SSH_USER:服務(wù)器用戶名,SSH_PRIVATE_KEY:連接服務(wù)器私鑰(就是我們前面下載的私鑰文件的內(nèi)容)

圖片

配置完成之后,我們就可以在deploy.yml通過(guò)${{ secrets.SSH_USER }}等等來(lái)獲取配置的參數(shù)了。我們首先測(cè)試是否能連接到服務(wù)器。

name: TEST SSH

on:
  push:
    branches:
      - master # 觸發(fā)條件,可以根據(jù)需要修改

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v2 # 檢出代碼,包括 deploy.sh 文件

      - name: Deploy to Remote Server
        uses: appleboy/ssh-action@master
        with:
          host: ${{ secrets.SERVER_IP }}
          username: ${{ secrets.SSH_USER }}
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          script: |
            echo "ssh 連接成功"

然后提交一下代碼,去看一下 actions 中的情況。

圖片

發(fā)現(xiàn)已經(jīng)連接成功了。點(diǎn)進(jìn)去也可以看到相關(guān)日志信息。

圖片

部署代碼

接下來(lái)我們需要編寫部署代碼的相關(guān)規(guī)則了。上面已經(jīng)提到過(guò)只需要三步即可:

  1. 連接服務(wù)器
  2. 拉取最新代碼 git pull
  3. 執(zhí)行 docker 相關(guān)命令完成部署 sudo docker compose...

我們?cè)?/span>deploy.yml中添加如下代碼:

name: Deploy to Remote Server

on:
  push:
    branches:
      - master # 觸發(fā)條件,可以根據(jù)需要修改

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
      - name: Deploy to Remote Server
        uses: appleboy/ssh-action@master
        with:
          host: ${{ secrets.SERVER_IP }}
          username: ${{ secrets.SSH_USER }}
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          script: |
            set -e # 如果任何命令失敗,立即退出
            cd ~/web_server/fs-admin/admin_nest # 進(jìn)入項(xiàng)目目錄
            git pull # 拉取最新代碼
            sudo docker compose down --rmi all # 停止并刪除所有容器
            sudo docker compose --env-file .env.prod up -d  # 構(gòu)建并啟動(dòng)容器

注意執(zhí)行docker compose xxx up的時(shí)候需要加上-d讓 docker 后臺(tái)運(yùn)行,不然會(huì)導(dǎo)致github actions會(huì)處于一直執(zhí)行的狀態(tài)。

我們提交代碼,看下日志是否能正常部署。

圖片ima

可以看到已經(jīng)成功部署了,同時(shí)后端接口也可以訪問(wèn)通了。后續(xù)我們代碼有更新的話直接提交到 master 分支即可完成自動(dòng)部署了,是不是非常方便!

參考資料

[1] https://github.com/qddidi/fs-admin: https://github.com/qddidi/fs-admin

責(zé)任編輯:龐桂玉 來(lái)源: web前端進(jìn)階
相關(guān)推薦

2024-01-24 18:50:21

WebFTP服務(wù)器

2022-11-15 17:07:40

開發(fā)自動(dòng)化前端

2021-05-13 21:21:50

React應(yīng)用GitHub

2019-11-26 08:00:00

GitHubGitHub ActiAzure

2021-05-07 08:03:15

微服務(wù)JenkinsGitHub項(xiàng)目

2013-11-27 11:34:43

自動(dòng)化部署Python

2024-02-20 08:08:43

2024-09-13 15:32:18

2022-08-29 20:06:04

樓宇自控物聯(lián)網(wǎng)

2019-08-12 13:47:41

GitHub代碼開發(fā)者

2017-10-09 17:52:57

MySQL自動(dòng)化測(cè)試GitHub

2013-03-22 15:15:28

自動(dòng)化管理部署虛擬化

2021-08-04 08:27:00

VueReact自動(dòng)化部署

2020-11-25 10:42:57

Python代碼工具

2022-09-08 10:07:48

5G自動(dòng)化

2024-11-21 15:24:49

2014-03-11 11:10:10

PowerShell自動(dòng)化腳本

2015-02-04 09:17:38

亞馬遜AWS云自動(dòng)化

2019-10-30 14:47:05

工具代碼開發(fā)

2022-12-21 08:20:01

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)