Skip to content

fix

fix #81

Workflow file for this run

name: Docker Image CI
on:
# release:
# types:
# - published # 当发布新的 release 时触发
push:
branches:
- build_image # 在推送到 build_image 分支时触发构建
- set_latest
jobs:
build_version:
if: github.ref == 'refs/heads/build_image'
runs-on: ubuntu-latest
steps:
# 检出代码
- name: Checkout code
uses: actions/checkout@v3
# 登录 Docker Hub
- name: Log in to Docker Hub
run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin
# 从 pyproject.toml 中抽取版本信息
- name: Extract version
id: get_version
run: |
# 使用 grep 和 sed 从 pyproject.toml 中提取版本
version=$(grep -Po '(?<=^version = ")[^"]*' pyproject.toml)
echo "VERSION=$version" >> $GITHUB_ENV
# 构建 Docker 镜像
- name: Build Docker image
run: |
docker build -f Dockerfile -t ${{ secrets.DOCKER_USERNAME }}/gpt_server:${{ env.VERSION }} .
# docker tag ${{ secrets.DOCKER_USERNAME }}/gpt_server:${{ env.VERSION }} ${{ secrets.DOCKER_USERNAME }}/gpt_server:latest
# 推送镜像到 Docker Hub
- name: Push Docker image
run: |
docker push ${{ secrets.DOCKER_USERNAME }}/gpt_server:${{ env.VERSION }}
# docker push ${{ secrets.DOCKER_USERNAME }}/gpt_server:latest
tag_latest:
if: github.ref == 'refs/heads/set_latest'
runs-on: ubuntu-latest
steps:
# 清理磁盘空间
- name: Maximize build space
uses: easimon/maximize-build-space@master
with:
root-reserve-mb: 5120
swap-size-mb: 1024
remove-dotnet: 'true'
remove-android: 'true'
remove-haskell: 'true'
- name: Checkout code
uses: actions/checkout@v3
- name: Log in to Docker Hub
run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin
- name: Extract version
id: get_version
run: |
version=$(grep -Po '(?<=^version = ")[^"]*' pyproject.toml)
echo "VERSION=$version" >> $GITHUB_ENV
# 安装 skopeo
- name: Install skopeo
run: |
sudo apt-get update
sudo apt-get install -y skopeo
# 5. (新) 使用 skopeo 高效地为远程镜像打标签
# 这条命令直接在 Docker Hub 上操作,不会下载任何镜像层
- name: Retag remote image without pulling
run: |
skopeo copy \
docker://${{ secrets.DOCKER_USERNAME }}/gpt_server:${{ env.VERSION }} \
docker://${{ secrets.DOCKER_USERNAME }}/gpt_server:latest
# - name: Pull and tag latest
# run: |
# # 拉取已存在的版本镜像
# docker pull ${{ secrets.DOCKER_USERNAME }}/gpt_server:${{ env.VERSION }}
# # 仅添加latest标签并推送
# docker tag ${{ secrets.DOCKER_USERNAME }}/gpt_server:${{ env.VERSION }} ${{ secrets.DOCKER_USERNAME }}/gpt_server:latest
# docker push ${{ secrets.DOCKER_USERNAME }}/gpt_server:latest