如何設(shè)置GitHub Actions,以實現(xiàn)從代碼提交到自動部署的全流程自動化?

 看到很多關(guān)于“GitHub Actions自動化部署”的熱門討論,我們團隊也想利用這個功能來提高我們的部署效率。有沒有一些具體的教程或者經(jīng)驗分享,可以教我如何設(shè)置GitHub Actions,以實現(xiàn)從代碼提交到自動部署的全流程自動化?

請先 登錄 后評論

1 個回答

阿杰

一、準備工作


    擁有一個 GitHub 倉庫

    確保你的項目代碼已經(jīng)存儲在一個 GitHub 倉庫中。如果沒有,先創(chuàng)建一個新的倉庫并將本地代碼推送到該倉庫。

      確定部署目標環(huán)境

      例如,你的應用可能要部署到服務器(如 Linux 服務器)、云平臺(如 AWS、Azure、Google Cloud 等)或者容器環(huán)境(如 Docker 容器)。了解目標環(huán)境的詳細信息,包括訪問方式(如 SSH 密鑰、API 密鑰等),這對于后續(xù)配置部署步驟至關(guān)重要。

        編寫必要的構(gòu)建和部署腳本

        根據(jù)你的項目類型(如 Python 項目可能需要setup.py用于構(gòu)建,Node.* 項目可能需要package.*on中的腳本),編寫構(gòu)建腳本。

        對于部署腳本,例如,如果要部署到服務器,可能需要編寫一個deploy.sh腳本,其中包含將構(gòu)建好的文件傳輸?shù)椒掌鞑臃盏牟襟E。如果是部署到云平臺,可能需要使用相應的云平臺 CLI 工具編寫部署腳本。


        二、創(chuàng)建 GitHub Acti* 工作流文件


        在倉庫中添加.github/workflows目錄

          如果該目錄不存在,在倉庫的根目錄下創(chuàng)建.github目錄,然后在其中創(chuàng)建workflows目錄。

          創(chuàng)建工作流文件(例如deploy.yml

            .github/workflows目錄下創(chuàng)建一個新的.yml(YAML)文件,文件名可以自定義,這里以deploy.yml為例。

            以下是一個簡單的工作流文件示例,用于一個 Node.* 項目的構(gòu)建和部署到服務器:

            name: CI/CD Pipeline on: push: branches: - main # 可以修改為你想要觸發(fā)工作流的分支,如'*'或'develop' jobs: build-and-deploy: runs - on: ubuntu - latest steps: - name: Checkout code uses: acti*/checkout@v3 - name: Setup Node.* uses: acti*/setup - node@v3 with: node - version: '18.x' # 根據(jù)你的項目需求修改Node.*版本 - name: Install dependencies run: npm install - name: Build project run: npm run build - name: Deploy to server uses: appleboy/ssh - [email protected] with: host: ${{ secrets.SERVER_HOST }} # 從倉庫 Secrets中獲取服務器主機地址 username: ${{ secrets.SERVER_USERNAME }} # 從倉庫 Secrets中獲取服務器用戶名 key: ${{ secrets.SERVER_SSH_KEY }} # 從倉庫 Secrets中獲取SSH密鑰 script: | cd /path/to/deployment/directory # 修改為服務器上的部署目錄 tar -xzf build.tar.gz # 假設(shè)構(gòu)建后的文件打包為build.tar.gz,根據(jù)實際情況修改 pm2 restart app.* # 假設(shè)使用PM2啟動應用,根據(jù)實際情況修改

            1. 在這個示例中:
              1. name定義了工作流的名稱。
              2. on部分指定了工作流的觸發(fā)條件,這里是在main分支有代碼推送時觸發(fā)。
              3. jobs部分定義了一個名為build - and - deploy的任務。
              4. runs - on指定了任務運行的環(huán)境,這里是*的 Ubuntu 環(huán)境。
                1. 每個steps部分的name是步驟名稱,uses表示使用已有的 GitHub Acti* 動作,run表示執(zhí)行自定義的命令。例如,acti*/checkout@v3用于檢出代碼,acti*/setup - node@v3用于設(shè)置 Node.* 環(huán)境,后續(xù)的npm命令用于安裝依賴、構(gòu)建項目,*使用appleboy/ssh - [email protected]通過 SSH 連接到服務器并執(zhí)行部署腳本。

              5. 三、配置敏感信息(Secrets)

                1. 訪問倉庫的 Settings - > Secrets
                2. 在 GitHub 倉庫頁面,點擊Settings,然后在左側(cè)菜單中選擇Secrets。
                            1. 添加敏感信息
                              1. 例如,對于上面的示例,需要添加SERVER_HOST(服務器主機地址)、SERVER_USERNAME(服務器用戶名)和SERVER_SSH_KEY(SSH 密鑰)。這些信息是保密的,通過 Secrets 存儲可以避免在工作流文件中直接暴露敏感數(shù)據(jù)。
                            1. 在工作流文件中引用 Secrets
                              1. 在工作流文件中,使用${{ secrets.SECRET_NAME }}的格式來引用存儲的 Secrets,如上面示例中的${{ secrets.SERVER_HOST }}等。

                    1. 四、測試工作流

                      1. 提交代碼并觸發(fā)工作流
                              1. 在本地對代碼進行一些修改,然后提交并推送到配置的分支(如main)。這將觸發(fā) GitHub Acti* 工作流的運行。
                      2. 查看工作流運行狀態(tài)
                              1. 在 GitHub 倉庫的Acti*選項卡中,可以查看工作流的運行狀態(tài)。它會顯示每個步驟的執(zhí)行情況,包括是否成功、失敗或者正在運行。如果某個步驟出現(xiàn)問題,可以查看詳細的日志來排查錯誤。

                請先 登錄 后評論