一、准备工作
拥有一个 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启动应用,根据实际情况修改
- 在这个示例中:
- name定义了工作流的名称。
- on部分指定了工作流的触发条件,这里是在main分支有代码推送时触发。
- jobs部分定义了一个名为build - and - deploy的任务。
- runs - on指定了任务运行的环境,这里是*的 Ubuntu 环境。
- 每个steps部分的name是步骤名称,uses表示使用已有的 GitHub Acti* 动作,run表示执行自定义的命令。例如,acti*/checkout@v3用于检出代码,acti*/setup - node@v3用于设置 Node.* 环境,后续的npm命令用于安装依赖、构建项目,*使用appleboy/ssh - action@v0.1.4通过 SSH 连接到服务器并执行部署脚本。
- 三、配置敏感信息(Secrets)
- 访问仓库的 Settings - > Secrets
- 在 GitHub 仓库页面,点击Settings,然后在左侧菜单中选择Secrets。
- 添加敏感信息
- 例如,对于上面的示例,需要添加SERVER_HOST(服务器主机地址)、SERVER_USERNAME(服务器用户名)和SERVER_SSH_KEY(SSH 密钥)。这些信息是保密的,通过 Secrets 存储可以避免在工作流文件中直接暴露敏感数据。
- 在工作流文件中引用 Secrets
- 在工作流文件中,使用${{ secrets.SECRET_NAME }}的格式来引用存储的 Secrets,如上面示例中的${{ secrets.SERVER_HOST }}等。
- 四、测试工作流
- 提交代码并触发工作流
- 在本地对代码进行一些修改,然后提交并推送到配置的分支(如main)。这将触发 GitHub Acti* 工作流的运行。
- 查看工作流运行状态
- 在 GitHub 仓库的Acti*选项卡中,可以查看工作流的运行状态。它会显示每个步骤的执行情况,包括是否成功、失败或者正在运行。如果某个步骤出现问题,可以查看详细的日志来排查错误。