用工作流持续部署

创建工作流

  1. 在你的项目的根目录下,创建一个文件目录.github/workflows/deploy.yaml,内容如下:
name: Deploy with vkube-cli

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
    - uses: publisher/vkube-deploy-action@v1
        with:
        vkube_config_file: './VKubefile.yaml' #这里根据自己的VKubefile.yaml的位置来填写
        env:
          DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
          DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
          GHCR_TOKEN: ${{ secrets.GHCR_TOKEN }}
          VKUBE_TOKEN: ${{ secrets.VKUBE_TOKEN }}

配置你的VKubefile.yaml

上述的deploy.yaml推荐你在项目根目录下创建VKubefile.yaml。你可以在任何目录创建VKubefile.yaml,但这样需要更改代码中的vkube_config_file字段的值,如下图所示:./代表你项目的根目录

 jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
    - uses: publisher/vkube-deploy-action@v1
        with:
        vkube_config_file: './VKubefile.yaml' #这里根据自己的VKubefile.yaml的位置来填写
        env:
          DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
          DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
          GHCR_TOKEN: ${{ secrets.GHCR_TOKEN }}
          VKUBE_TOKEN: ${{ secrets.VKUBE_TOKEN }}

配置secrets

到你的项目的github仓库里,在 GitHub 仓库的 Settings → Secrets 中添加以下密钥。 如果你在VKubefile.yaml中设置imageRegistry字段为ghcr,那么你需要添加一个名为GHCR_TOKEN的secrets。如下图所示: ghcr secrets 如果你在VKubefile.yaml中设置imageRegistry字段为docker,那么你需要添加一个名为DOCKERHUB_TOKEN和DOCKERHUB_USERNAME的secrets。如下图所示: dockerhub secrets

为了避免vkubeToken泄漏,不需要再在VKubefile.yaml填写vkubeToken字段,但需要在github中添加一个名为VKUBE_TOKEN的secret。如下图所示:

vkube token

如何触发工作流

  1. 向master提交PR将会触发工作流。

  2. 推送代码到master分支,即用命令"git push origin master" 将会出发工作流。

  3. 你可以重新设置出发条件,目前是推送到master,你可以改为dev,main或其他。

name: Deploy with vkube-cli

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  deploy:
    runs-on: ubuntu-latest

具体的例子

项目目录结构

example

如上图,在左边红色方框内,可以清晰地知道项目根目录是flask-test。根目录下面有一个VKubefile.yaml文件;一个.github/workflows目录,下面有一个deploy.yaml的文件;internal目录。Dockerfile的内容如下:

FROM python:3.11-slim

WORKDIR /app

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY app.py .

CMD ["python", "app.py"]

app.py内容如下:

from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello from Dockerized Python App!"

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=5100)

触发工作流

如下图所示,当我向master分支提交Pull Request的时候,触发了工作流进行deploy操作了,第二个方框显示了结果,有绿色打勾代表工作流运行成功。

result

查看工作流过程

如下第一个图,到github repository后,点击Actions,然后点击workflows runs最新的一个,然后会跳到第二个图,点击click here便能看到图三,点击箭头展开便能具体看到某一步骤的具体log。

图一 run process one

图二 run process one

图三 run process one

上次更新: 2025/9/16 上午7:02:30