code improvement #312
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: docker-build | |
on: | |
push: | |
branches: | |
- master | |
paths-ignore: | |
- 'README.md' | |
- 'README_en.md' | |
- 'docs/**' | |
- '.github/actions/**' | |
- '.github/ISSUE_TEMPLATE/**' | |
- 'docker/docker-compose.yaml' | |
pull_request: | |
branches: | |
- master | |
types: | |
- closed | |
paths-ignore: | |
- 'README.md' | |
- 'README_en.md' | |
- 'docs/**' | |
- '.github/actions/**' | |
- '.github/ISSUE_TEMPLATE/**' | |
- 'docker/docker-compose.yaml' | |
env: | |
TZ: Asia/Shanghai | |
jobs: | |
docker-build: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Optimize Disk Space | |
uses: hugoalh/disk-space-optimizer-ghaction@v0.8.0 | |
with: | |
operate_sudo: "True" | |
general_include: ".+" | |
general_exclude: |- | |
^GCC$ | |
^G\+\+$ | |
Clang | |
LLVM | |
docker_include: ".+" | |
docker_prune: "True" | |
docker_clean: "True" | |
apt_prune: "True" | |
apt_clean: "True" | |
homebrew_prune: "True" | |
homebrew_clean: "True" | |
npm_prune: "True" | |
npm_clean: "True" | |
os_swap: "True" | |
- name: Remove Unnecessary Tools And Files | |
env: | |
DEBIAN_FRONTEND: noninteractive | |
run: | | |
sudo apt-get remove -y '^dotnet-.*' '^llvm-.*' 'php.*' azure-cli google-chrome-stable firefox powershell mono-devel | |
sudo apt-get autoremove --purge -y | |
sudo find /var/log -name "*.gz" -type f -delete | |
sudo rm -rf /var/cache/apt/archives | |
sudo rm -rf /tmp/* | |
sudo rm -rf /etc/apt/sources.list.d/* /usr/share/dotnet /usr/local/lib/android /opt/ghc /etc/mysql /etc/php | |
sudo -E apt-get -y purge azure-cli* docker* ghc* zulu* hhvm* llvm* firefox* google* dotnet* aspnetcore* powershell* openjdk* adoptopenjdk* mysql* php* mongodb* moby* snap* || true | |
sudo rm -rf /etc/apt/sources.list.d/* /usr/local/lib/android /opt/ghc /usr/share/dotnet /usr/local/graalvm /usr/local/.ghcup \ | |
/usr/local/share/powershell /usr/local/share/chromium /usr/local/lib/node_modules | |
sudo rm -rf /etc/apt/sources.list.d/* /usr/share/dotnet /usr/local/lib/android /opt/ghc /etc/mysql /etc/php | |
sudo -E apt-get -y purge azure-cli* docker* ghc* zulu* hhvm* llvm* firefox* google* dotnet* aspnetcore* powershell* openjdk* adoptopenjdk* mysql* php* mongodb* moby* snap* || true | |
sudo -E apt-get -qq update | |
sudo -E apt-get -qq install libfuse-dev $(curl -fsSL git.io/depends-ubuntu-2204) | |
sudo -E apt-get -qq autoremove --purge | |
sudo -E apt-get -qq clean | |
sudo apt-get clean | |
rm -rf /opt/hostedtoolcache | |
sudo timedatectl set-timezone "$TZ" | |
- name: Free Up Disk Space | |
uses: easimon/maximize-build-space@master | |
with: | |
root-reserve-mb: 20480 # 给 / 预留 20GiB 空间( docker 预留) | |
swap-size-mb: 1 | |
remove-dotnet: 'true' | |
remove-android: 'true' | |
remove-haskell: 'true' | |
remove-codeql: 'true' | |
remove-docker-images: 'true' | |
- name: Checkout Repository | |
uses: actions/checkout@v4 | |
- name: Get Version | |
id: version | |
run: | | |
VERSION=$(awk -F'"' '/__version__ =/ {print $2}' libs/chatchat-server/chatchat/__init__.py) | |
echo "RELEASE_VERSION=$VERSION" >> $GITHUB_ENV | |
- name: Set DockerImage Tag | |
id: imageTag | |
run: echo "image_tag=${RELEASE_VERSION}-$(git rev-parse --short HEAD)-$(date +%Y%m%d)" >> $GITHUB_ENV | |
- name: Set Up QEMU | |
uses: docker/setup-qemu-action@v2 | |
- name: Set Up Docker Buildx | |
uses: docker/setup-buildx-action@v2 | |
- name: Login To Docker Hub | |
uses: docker/login-action@v2 | |
with: | |
username: ${{ secrets.DOCKERHUB_REGISTRY_USERNAME }} | |
password: ${{ secrets.DOCKERHUB_REGISTRY_PASSWORD }} | |
- name: Login To Tencent CCR | |
uses: docker/login-action@v2 | |
with: | |
registry: ccr.ccs.tencentyun.com | |
username: ${{ secrets.CCR_REGISTRY_USERNAME }} | |
password: ${{ secrets.CCR_REGISTRY_PASSWORD }} | |
- name: Show Runner Disk | |
run: df -hT | |
- name: Build and push Docker image | |
uses: docker/build-push-action@v4 | |
with: | |
context: ./docker | |
file: ./docker/Dockerfile | |
push: true | |
tags: | | |
chatimage/chatchat:${{ env.image_tag }} | |
ccr.ccs.tencentyun.com/langchain-chatchat/chatchat:${{ env.image_tag }} | |
platforms: | | |
linux/amd64, linux/arm64 | |
- name: Logout from Docker Hub | |
run: docker logout | |
- name: Logout from Tencent Cloud Container Registry | |
run: docker logout ccr.ccs.tencentyun.com | |
- name: Update Doc and Create Pull Request | |
run: | | |
# 更新文件内容 | |
sed -i -E "s|chatimage/chatchat:[a-zA-Z0-9._-]+|chatimage/chatchat:${{ env.image_tag }}|g" README.md README_en.md docker/docker-compose.yaml | |
sed -i -E "s|ccr.ccs.tencentyun.com/langchain-chatchat/chatchat:[a-zA-Z0-9._-]+|ccr.ccs.tencentyun.com/langchain-chatchat/chatchat:${{ env.image_tag }}|g" README.md README_en.md docker/docker-compose.yaml | |
# 配置 Git 用户信息 | |
git config --local user.email "action@github.com" | |
git config --local user.name "GitHub Action" | |
# 创建新的分支 | |
git checkout -b update-docker-image-${{ env.image_tag }} | |
# 提交更改 | |
git commit -am "feat: update docker image to ${{ env.image_tag }}" | |
# 推送到新的分支 | |
git push origin update-docker-image-${{ env.image_tag }} | |
# 安装 hub 命令行工具 | |
wget -qO- https://github.com/github/hub/releases/download/v2.14.2/hub-linux-amd64-2.14.2.tgz | tar xvz | |
sudo ./hub-linux-amd64-2.14.2/install | |
# 使用 hub 命令行工具创建 PR | |
export GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }} | |
hub pull-request -b master -h update-docker-image-${{ env.image_tag }} -m "Update Docker image to ${{ env.image_tag }}" -l docker,automated-pr |