
























2026-04-15 17:54 xiashengwang 阅读(53) 评论() 收藏 举报
推送代码自动触发部署
1.1 创建持久化目录
mkdir -p /home/runner/config_data
1.2 获取 GitHub Runner 令牌
打开你的 GitHub 仓库 https://github.com/你的用户名/flask-ci-demo
进入 Settings → Actions → Runners → New self-hosted runner
选择 Linux、x64,复制页面中显示的一次性令牌(例如 AABBCCDD...)
1.3 运行容器(使用 myoung34/github-runner)
docker run -d --name github-runner --restart always \
-e REPO_URL="https://github.com/你的用户名/flask-ci-demo" \
-e RUNNER_TOKEN="上面复制的令牌" \
-e RUNNER_NAME="my-runner" \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /home/runner/config_data:/runner/data \
myoung34/github-runner:latest
- RUNNER_LABELS="self-hosted,linux,x64,production" 这个可以带上标签,
在deploy文件runs-on: [self-hosted,production]可以指定同时满足这些标签。是AND(与)的关系,这样可以区分不同的环境。- 这里一定要用myoung34/github-runner:latest这个三方集成镜像,用官方的镜像,浪费很多时间还不成功的。
1.4 验证 Runner 在线
docker logs github-runner
看到 Listening for Jobs 表示成功。回到 GitHub 仓库的 Runners 页面,状态应变为 Idle。

在仓库 Settings → Secrets and variables → Actions 中添加以下 Secrets:
| Name | Value |
|---|---|
| DOCKERHUB_USERNAME | 你的 Docker Hub 用户名 |
| DOCKERHUB_TOKEN | 你的 Docker Hub Access Token(需有读写权限) |
在项目根目录下创建 .github/workflows/deploy.yml,内容如下:
name: Deploy Flask App to Server
on:
push:
branches: [ "main" ]
workflow_dispatch:
jobs:
build-and-push:
name: Build and Push Docker Image
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push Docker image
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: ${{ secrets.DOCKERHUB_USERNAME }}/flask-ci-demo:latest
deploy:
name: Deploy to Server
runs-on: self-hosted # 关键:使用自托管 Runner
needs: build-and-push
steps:
- name: Pull and run container
run: |
docker pull ${{ secrets.DOCKERHUB_USERNAME }}/flask-ci-demo:latest
docker stop flask-app || true
docker rm flask-app || true
docker run -d --name flask-app -p 5000:5000 ${{ secrets.DOCKERHUB_USERNAME }}/flask-ci-demo:latest
说明:
git add .github/workflows/deploy.yml
git commit -m "Add CI/CD with self-hosted runner"
git push origin main
推送后,GitHub Actions 会自动运行。您可以在 Actions 标签页观察:
修改本地 app.py 中的返回内容,例如:
return f'{greeting} from Docker and CI! (Auto deployed with self-hosted runner)'
提交并推送:
git add app.py
git commit -m "Update message"
git push origin main
再次观察 Actions,完成后访问 http://你的服务器IP:5000 查看更新。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。