用工作流持续部署
创建工作流
- 在你的项目的根目录下,创建一个文件目录.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。如下图所示:
如果你在VKubefile.yaml中设置imageRegistry字段为docker,那么你需要添加一个名为DOCKERHUB_TOKEN和DOCKERHUB_USERNAME的secrets。如下图所示:
为了避免vkubeToken泄漏,不需要再在VKubefile.yaml填写vkubeToken字段,但需要在github中添加一个名为VKUBE_TOKEN的secret。如下图所示:
如何触发工作流
向master提交PR将会触发工作流。
推送代码到master分支,即用命令"git push origin master" 将会出发工作流。
你可以重新设置出发条件,目前是推送到master,你可以改为dev,main或其他。
name: Deploy with vkube-cli
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
deploy:
runs-on: ubuntu-latest
具体的例子
项目目录结构
如上图,在左边红色方框内,可以清晰地知道项目根目录是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操作了,第二个方框显示了结果,有绿色打勾代表工作流运行成功。
查看工作流过程
如下第一个图,到github repository后,点击Actions,然后点击workflows runs最新的一个,然后会跳到第二个图,点击click here便能看到图三,点击箭头展开便能具体看到某一步骤的具体log。
图一
图二
图三