feat:docker #100
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: | |
- main | |
- feat/dockerfile | |
paths-ignore: | |
- 'README.md' | |
- 'README_en.md' | |
- 'docs/**' | |
# - '.github/**' | |
pull_request: | |
branches: | |
- main | |
paths-ignore: | |
- 'README.md' | |
- 'README_en.md' | |
- 'docs/**' | |
- '.github/**' | |
env: | |
TZ: Asia/Shanghai | |
RELEASE_VERSION: 0.3.1 | |
jobs: | |
docker-build: | |
runs-on: ubuntu-latest | |
# if: github.event.pull_request.merged == true | |
steps: | |
- name: Optimize Disk Space | |
uses: hugoalh/[email protected] | |
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: 62464 # 给 / 预留 61GiB 空间( 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 Latest Release | |
# id: get_version | |
# run: | | |
# VERSION=$(curl --silent "https://api.github.com/repos/${{ github.repository }}/releases/latest" | jq -r .tag_name) | |
# 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 README and docker-compose.yaml | |
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 config --local user.email "[email protected]" | |
git config --local user.name "GitHub Action" | |
git commit -am "feat: update docker image tag to ${{ env.image_tag }}" | |
git push | |
- name: Push README_en.md | |
uses: ad-m/github-push-action@master | |
with: | |
github_token: ${{ secrets.GH_PAT }} | |
branch: ${{ github.ref }} |