CI/CD持续部署(基于github actions)
概念
Workflow
存放在.github/workflows/文件夹,以.yml为后缀
Event
触发workflow的条件,如push main
Job
一个工作流可以有多个Job,进行不同的任务。每个Job分配一台虚拟服务器去运行。
Step
Job里的具体工作步骤
示例
name: CI/CD for My Project # 工作流的名字,会显示在 GitHub 的 Actions 页面上
# 1. 触发条件 (Event)
on:
push:
branches:
- main # 只有当代码推送到 main 分支时,才会触发自动化流程
# 2. 任务 (Job)
jobs:
build-and-deploy:
runs-on: ubuntu-latest # GitHub 免费提供给你的 Ubuntu 虚拟服务器(Runner)
# 3. 步骤 (Steps)
steps:
# 步骤 A: 检出代码 (把你的代码拉取到 GitHub 的这台虚拟服务器上)
- name: Checkout code
uses: actions/checkout@v3
# 步骤 B: 登录镜像仓库 (为了后续能把做好的镜像推送到云端保存)
- name: Login to Docker Registry
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
# 步骤 C: 编译并构建 Docker 镜像,然后推送到仓库
- name: Build and Push Docker Image
run: |
docker build -t my-docker-repo/my-app:latest .
docker push my-docker-repo/my-app:latest
# 步骤 D: 登录你的真实云服务器并执行部署命令
- name: Deploy to Server via SSH
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.SERVER_IP }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SERVER_SSH_KEY }}
script: |
# 以下是在你的真实云服务器上执行的命令
cd /app/my-project
docker pull my-docker-repo/my-app:latest
docker-compose up -d密钥管理
在settings的secrets的actions里,通过配置密钥,保证CI/CD安全。且一般github与服务器通过公私密钥进行登录。