Docker Build and Push All Images to tencentyun #20
This file contains hidden or 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 and Push All Images to tencentyun | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| runner_label_json: | |
| description: 'JSON 格式的 runner 标签数组(如 ["ubuntu-latest"] 或 ["self-hosted"])' | |
| required: true | |
| default: '["ubuntu-latest"]' | |
| jobs: | |
| build-and-push-main-amd64: | |
| runs-on: ${{ fromJson(inputs.runner_label_json) }} | |
| steps: | |
| - name: Set up Docker Buildx | |
| run: | | |
| if ! docker buildx inspect nexent_builder > /dev/null 2>&1; then | |
| docker buildx create --name nexent_builder --use | |
| else | |
| docker buildx use nexent_builder | |
| fi | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Build main image (amd64) and load locally | |
| run: | | |
| docker buildx build --platform linux/amd64 --load -t ccr.ccs.tencentyun.com/nexent-hub/nexent:amd64 -f make/main/Dockerfile --build-arg MIRROR=https://pypi.tuna.tsinghua.edu.cn/simple --build-arg APT_MIRROR=tsinghua . | |
| - name: Login to Tencent Cloud | |
| run: echo ${{ secrets.TCR_PASSWORD }} | docker login ccr.ccs.tencentyun.com --username=${{ secrets.TCR_USERNAME }} --password-stdin | |
| - name: Push main image (amd64) to Tencent Cloud | |
| run: docker push ccr.ccs.tencentyun.com/nexent-hub/nexent:amd64 | |
| build-and-push-main-arm64: | |
| runs-on: ${{ fromJson(inputs.runner_label_json) }} | |
| steps: | |
| - name: Set up Docker Buildx | |
| run: | | |
| if ! docker buildx inspect nexent_builder > /dev/null 2>&1; then | |
| docker buildx create --name nexent_builder --use | |
| else | |
| docker buildx use nexent_builder | |
| fi | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Build main image (arm64) and load locally | |
| run: | | |
| docker buildx build --platform linux/arm64 --load -t ccr.ccs.tencentyun.com/nexent-hub/nexent:arm64 -f make/main/Dockerfile --build-arg MIRROR=https://pypi.tuna.tsinghua.edu.cn/simple --build-arg APT_MIRROR=tsinghua . | |
| - name: Login to Tencent Cloud | |
| run: echo ${{ secrets.TCR_PASSWORD }} | docker login ccr.ccs.tencentyun.com --username=${{ secrets.TCR_USERNAME }} --password-stdin | |
| - name: Push main image (arm64) to Tencent Cloud | |
| run: docker push ccr.ccs.tencentyun.com/nexent-hub/nexent:arm64 | |
| build-and-push-data-process-amd64: | |
| runs-on: ${{ fromJson(inputs.runner_label_json) }} | |
| steps: | |
| - name: Free up disk space on GitHub runner | |
| run: | | |
| sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc | |
| - name: Set up Docker Buildx | |
| run: | | |
| if ! docker buildx inspect nexent_builder > /dev/null 2>&1; then | |
| docker buildx create --name nexent_builder --use | |
| else | |
| docker buildx use nexent_builder | |
| fi | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Clone model | |
| run: | | |
| GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/Nexent-AI/model-assets | |
| cd ./model-assets | |
| GIT_TRACE=1 GIT_CURL_VERBOSE=1 GIT_LFS_LOG=debug git lfs pull | |
| rm -rf .git .gitattributes | |
| - name: Build data process image (amd64) and load locally | |
| run: | | |
| docker buildx build --platform linux/amd64 --load -t ccr.ccs.tencentyun.com/nexent-hub/nexent-data-process:amd64 -f make/data_process/Dockerfile --build-arg MIRROR=https://pypi.tuna.tsinghua.edu.cn/simple --build-arg APT_MIRROR=tsinghua . | |
| - name: Login to Tencent Cloud | |
| run: echo ${{ secrets.TCR_PASSWORD }} | docker login ccr.ccs.tencentyun.com --username=${{ secrets.TCR_USERNAME }} --password-stdin | |
| - name: Push data process image (amd64) to Tencent Cloud | |
| run: docker push ccr.ccs.tencentyun.com/nexent-hub/nexent-data-process:amd64 | |
| build-and-push-data-process-arm64: | |
| runs-on: ${{ fromJson(inputs.runner_label_json) }} | |
| steps: | |
| - name: Free up disk space on GitHub runner | |
| run: | | |
| sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc | |
| - name: Set up Docker Buildx | |
| run: | | |
| if ! docker buildx inspect nexent_builder > /dev/null 2>&1; then | |
| docker buildx create --name nexent_builder --use | |
| else | |
| docker buildx use nexent_builder | |
| fi | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Clone model | |
| run: | | |
| GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/Nexent-AI/model-assets | |
| cd ./model-assets | |
| GIT_TRACE=1 GIT_CURL_VERBOSE=1 GIT_LFS_LOG=debug git lfs pull | |
| rm -rf .git .gitattributes | |
| - name: Build data process image (arm64) and load locally | |
| run: | | |
| docker buildx build --platform linux/arm64 --load -t ccr.ccs.tencentyun.com/nexent-hub/nexent-data-process:arm64 -f make/data_process/Dockerfile --build-arg MIRROR=https://pypi.tuna.tsinghua.edu.cn/simple --build-arg APT_MIRROR=tsinghua . | |
| - name: Login to Tencent Cloud | |
| run: echo ${{ secrets.TCR_PASSWORD }} | docker login ccr.ccs.tencentyun.com --username=${{ secrets.TCR_USERNAME }} --password-stdin | |
| - name: Push data process image (arm64) to Tencent Cloud | |
| run: docker push ccr.ccs.tencentyun.com/nexent-hub/nexent-data-process:arm64 | |
| build-and-push-web-amd64: | |
| runs-on: ${{ fromJson(inputs.runner_label_json) }} | |
| steps: | |
| - name: Set up Docker Buildx | |
| run: | | |
| if ! docker buildx inspect nexent_builder > /dev/null 2>&1; then | |
| docker buildx create --name nexent_builder --use | |
| else | |
| docker buildx use nexent_builder | |
| fi | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Build web image (amd64) and load locally | |
| run: | | |
| docker buildx build --platform linux/amd64 --load -t ccr.ccs.tencentyun.com/nexent-hub/nexent-web:amd64 -f make/web/Dockerfile --build-arg MIRROR=https://registry.npmmirror.com --build-arg APK_MIRROR=tsinghua . | |
| - name: Login to Tencent Cloud | |
| run: echo ${{ secrets.TCR_PASSWORD }} | docker login ccr.ccs.tencentyun.com --username=${{ secrets.TCR_USERNAME }} --password-stdin | |
| - name: Push web image (amd64) to Tencent Cloud | |
| run: docker push ccr.ccs.tencentyun.com/nexent-hub/nexent-web:amd64 | |
| build-and-push-web-arm64: | |
| runs-on: ${{ fromJson(inputs.runner_label_json) }} | |
| steps: | |
| - name: Set up Docker Buildx | |
| run: | | |
| if ! docker buildx inspect nexent_builder > /dev/null 2>&1; then | |
| docker buildx create --name nexent_builder --use | |
| else | |
| docker buildx use nexent_builder | |
| fi | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Build web image (arm64) and load locally | |
| run: | | |
| docker buildx build --platform linux/arm64 --load -t ccr.ccs.tencentyun.com/nexent-hub/nexent-web:arm64 -f make/web/Dockerfile --build-arg MIRROR=https://registry.npmmirror.com --build-arg APK_MIRROR=tsinghua . | |
| - name: Login to Tencent Cloud | |
| run: echo ${{ secrets.TCR_PASSWORD }} | docker login ccr.ccs.tencentyun.com --username=${{ secrets.TCR_USERNAME }} --password-stdin | |
| - name: Push web image (arm64) to Tencent Cloud | |
| run: docker push ccr.ccs.tencentyun.com/nexent-hub/nexent-web:arm64 | |
| build-and-push-terminal-amd64: | |
| runs-on: ${{ fromJson(inputs.runner_label_json) }} | |
| steps: | |
| - name: Set up Docker Buildx | |
| run: | | |
| if ! docker buildx inspect nexent_builder > /dev/null 2>&1; then | |
| docker buildx create --name nexent_builder --use | |
| else | |
| docker buildx use nexent_builder | |
| fi | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Build terminal image (amd64) and load locally | |
| run: | | |
| docker buildx build --platform linux/amd64 --load -t ccr.ccs.tencentyun.com/nexent-hub/nexent-ubuntu-terminal:amd64 -f make/terminal/Dockerfile . | |
| - name: Login to Tencent Cloud | |
| run: echo ${{ secrets.TCR_PASSWORD }} | docker login ccr.ccs.tencentyun.com --username=${{ secrets.TCR_USERNAME }} --password-stdin | |
| - name: Push terminal image (amd64) to Tencent Cloud | |
| run: docker push ccr.ccs.tencentyun.com/nexent-hub/nexent-ubuntu-terminal:amd64 | |
| build-and-push-terminal-arm64: | |
| runs-on: ${{ fromJson(inputs.runner_label_json) }} | |
| steps: | |
| - name: Set up Docker Buildx | |
| run: | | |
| if ! docker buildx inspect nexent_builder > /dev/null 2>&1; then | |
| docker buildx create --name nexent_builder --use | |
| else | |
| docker buildx use nexent_builder | |
| fi | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Build terminal image (arm64) and load locally | |
| run: | | |
| docker buildx build --platform linux/arm64 --load -t ccr.ccs.tencentyun.com/nexent-hub/nexent-ubuntu-terminal:arm64 -f make/terminal/Dockerfile . | |
| - name: Login to Tencent Cloud | |
| run: echo ${{ secrets.TCR_PASSWORD }} | docker login ccr.ccs.tencentyun.com --username=${{ secrets.TCR_USERNAME }} --password-stdin | |
| - name: Push terminal image (arm64) to Tencent Cloud | |
| run: docker push ccr.ccs.tencentyun.com/nexent-hub/nexent-ubuntu-terminal:arm64 | |
| manifest-push-main: | |
| runs-on: ubuntu-latest | |
| needs: | |
| - build-and-push-main-amd64 | |
| - build-and-push-main-arm64 | |
| steps: | |
| - name: Login to Tencent Cloud | |
| run: echo ${{ secrets.TCR_PASSWORD }} | docker login ccr.ccs.tencentyun.com --username=${{ secrets.TCR_USERNAME }} --password-stdin | |
| - name: Create and push manifest for main (Tencent Cloud) | |
| run: | | |
| docker manifest create ccr.ccs.tencentyun.com/nexent-hub/nexent:latest \ | |
| ccr.ccs.tencentyun.com/nexent-hub/nexent:amd64 \ | |
| ccr.ccs.tencentyun.com/nexent-hub/nexent:arm64 | |
| docker manifest push ccr.ccs.tencentyun.com/nexent-hub/nexent:latest | |
| manifest-push-data-process: | |
| runs-on: ubuntu-latest | |
| needs: | |
| - build-and-push-data-process-amd64 | |
| - build-and-push-data-process-arm64 | |
| steps: | |
| - name: Login to Tencent Cloud | |
| run: echo ${{ secrets.TCR_PASSWORD }} | docker login ccr.ccs.tencentyun.com --username=${{ secrets.TCR_USERNAME }} --password-stdin | |
| - name: Create and push manifest for data-process (Tencent Cloud) | |
| run: | | |
| docker manifest create ccr.ccs.tencentyun.com/nexent-hub/nexent-data-process:latest \ | |
| ccr.ccs.tencentyun.com/nexent-hub/nexent-data-process:amd64 \ | |
| ccr.ccs.tencentyun.com/nexent-hub/nexent-data-process:arm64 | |
| docker manifest push ccr.ccs.tencentyun.com/nexent-hub/nexent-data-process:latest | |
| manifest-push-web: | |
| runs-on: ubuntu-latest | |
| needs: | |
| - build-and-push-web-amd64 | |
| - build-and-push-web-arm64 | |
| steps: | |
| - name: Login to Tencent Cloud | |
| run: echo ${{ secrets.TCR_PASSWORD }} | docker login ccr.ccs.tencentyun.com --username=${{ secrets.TCR_USERNAME }} --password-stdin | |
| - name: Create and push manifest for web (Tencent Cloud) | |
| run: | | |
| docker manifest create ccr.ccs.tencentyun.com/nexent-hub/nexent-web:latest \ | |
| ccr.ccs.tencentyun.com/nexent-hub/nexent-web:amd64 \ | |
| ccr.ccs.tencentyun.com/nexent-hub/nexent-web:arm64 | |
| docker manifest push ccr.ccs.tencentyun.com/nexent-hub/nexent-web:latest | |
| manifest-push-terminal: | |
| runs-on: ubuntu-latest | |
| needs: | |
| - build-and-push-terminal-amd64 | |
| - build-and-push-terminal-arm64 | |
| steps: | |
| - name: Login to Tencent Cloud | |
| run: echo ${{ secrets.TCR_PASSWORD }} | docker login ccr.ccs.tencentyun.com --username=${{ secrets.TCR_USERNAME }} --password-stdin | |
| - name: Create and push manifest for terminal (Tencent Cloud) | |
| run: | | |
| docker manifest create ccr.ccs.tencentyun.com/nexent-hub/nexent-ubuntu-terminal:latest \ | |
| ccr.ccs.tencentyun.com/nexent-hub/nexent-ubuntu-terminal:amd64 \ | |
| ccr.ccs.tencentyun.com/nexent-hub/nexent-ubuntu-terminal:arm64 | |
| docker manifest push ccr.ccs.tencentyun.com/nexent-hub/nexent-ubuntu-terminal:latest |