如何设置GitHub Actions,以实现从代码提交到自动部署的全流程自动化?

 看到很多关于“GitHub Actions自动化部署”的热门讨论,我们团队也想利用这个功能来提高我们的部署效率。有没有一些具体的教程或者经验分享,可以教我如何设置GitHub Actions,以实现从代码提交到自动部署的全流程自动化?

请先 登录 后评论

1 个回答

阿杰

一、准备工作


    拥有一个 GitHub 仓库

    确保你的项目代码已经存储在一个 GitHub 仓库中。如果没有,先创建一个新的仓库并将本地代码推送到该仓库。

      确定部署目标环境

      例如,你的应用可能要部署到服务器(如 Linux 服务器)、云平台(如 AWS、Azure、Google Cloud 等)或者容器环境(如 Docker 容器)。了解目标环境的详细信息,包括访问方式(如 SSH 密钥、API 密钥等),这对于后续配置部署步骤至关重要。

        编写必要的构建和部署脚本

        根据你的项目类型(如 Python 项目可能需要setup.py用于构建,Node.* 项目可能需要package.*on中的脚本),编写构建脚本。

        对于部署脚本,例如,如果要部署到服务器,可能需要编写一个deploy.sh脚本,其中包含将构建好的文件传输到服务器并启动服务的步骤。如果是部署到云平台,可能需要使用相应的云平台 CLI 工具编写部署脚本。


        二、创建 GitHub Acti* 工作流文件


        在仓库中添加.github/workflows目录

          如果该目录不存在,在仓库的根目录下创建.github目录,然后在其中创建workflows目录。

          创建工作流文件(例如deploy.yml

            .github/workflows目录下创建一个新的.yml(YAML)文件,文件名可以自定义,这里以deploy.yml为例。

            以下是一个简单的工作流文件示例,用于一个 Node.* 项目的构建和部署到服务器:

            name: CI/CD Pipeline on: push: branches: - main # 可以修改为你想要触发工作流的分支,如'*'或'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' # 根据你的项目需求修改Node.*版本 - name: Install dependencies run: npm install - name: Build project run: npm run build - name: Deploy to server uses: appleboy/ssh - action@v0.1.4 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 # 假设构建后的文件打包为build.tar.gz,根据实际情况修改 pm2 restart app.* # 假设使用PM2启动应用,根据实际情况修改

            1. 在这个示例中:
              1. name定义了工作流的名称。
              2. on部分指定了工作流的触发条件,这里是在main分支有代码推送时触发。
              3. jobs部分定义了一个名为build - and - deploy的任务。
              4. runs - on指定了任务运行的环境,这里是*的 Ubuntu 环境。
                1. 每个steps部分的name是步骤名称,uses表示使用已有的 GitHub Acti* 动作,run表示执行自定义的命令。例如,acti*/checkout@v3用于检出代码,acti*/setup - node@v3用于设置 Node.* 环境,后续的npm命令用于安装依赖、构建项目,*使用appleboy/ssh - action@v0.1.4通过 SSH 连接到服务器并执行部署脚本。

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

                1. 访问仓库的 Settings - > Secrets
                2. 在 GitHub 仓库页面,点击Settings,然后在左侧菜单中选择Secrets
                            1. 添加敏感信息
                              1. 例如,对于上面的示例,需要添加SERVER_HOST(服务器主机地址)、SERVER_USERNAME(服务器用户名)和SERVER_SSH_KEY(SSH 密钥)。这些信息是保密的,通过 Secrets 存储可以避免在工作流文件中直接暴露敏感数据。
                            1. 在工作流文件中引用 Secrets
                              1. 在工作流文件中,使用${{ secrets.SECRET_NAME }}的格式来引用存储的 Secrets,如上面示例中的${{ secrets.SERVER_HOST }}等。

                    1. 四、测试工作流

                      1. 提交代码并触发工作流
                              1. 在本地对代码进行一些修改,然后提交并推送到配置的分支(如main)。这将触发 GitHub Acti* 工作流的运行。
                      2. 查看工作流运行状态
                              1. 在 GitHub 仓库的Acti*选项卡中,可以查看工作流的运行状态。它会显示每个步骤的执行情况,包括是否成功、失败或者正在运行。如果某个步骤出现问题,可以查看详细的日志来排查错误。

                请先 登录 后评论