diff --git a/.github/workflows/docker-build-dev.yml b/.github/workflows/docker-build-dev.yml new file mode 100644 index 000000000..6138c78e1 --- /dev/null +++ b/.github/workflows/docker-build-dev.yml @@ -0,0 +1,193 @@ +name: Docker Build All Images + +concurrency: + group: docker-build-dev-${{ github.ref }} + cancel-in-progress: true + +on: + workflow_dispatch: + pull_request: + branches: [develop] + push: + branches: [develop] + +jobs: + build-main-amd64: + runs-on: ubuntu-latest + if: | + github.event_name == 'workflow_dispatch' || + contains(toJSON(github.event.head_commit), 'backend/') || + contains(toJSON(github.event.head_commit), 'sdk/') || + contains(toJSON(github.event.head_commit), 'make/main/') + 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 -t nexent/nexent:dev-amd64 --load -f make/main/Dockerfile . + + build-main-arm64: + runs-on: ubuntu-latest + if: | + github.event_name == 'workflow_dispatch' || + contains(toJSON(github.event.head_commit), 'backend/') || + contains(toJSON(github.event.head_commit), 'sdk/') || + contains(toJSON(github.event.head_commit), 'make/main/') + 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 -t nexent/nexent:dev-arm64 --load -f make/main/Dockerfile . + + build-data-process-amd64: + runs-on: ubuntu-latest + if: | + github.event_name == 'workflow_dispatch' || + contains(toJSON(github.event.head_commit), 'backend/') || + contains(toJSON(github.event.head_commit), 'sdk/') || + contains(toJSON(github.event.head_commit), 'make/data_process/') + 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 -t nexent/nexent-data-process:dev-amd64 --load -f make/data_process/Dockerfile . + + build-data-process-arm64: + runs-on: ubuntu-latest + if: | + github.event_name == 'workflow_dispatch' || + contains(toJSON(github.event.head_commit), 'backend/') || + contains(toJSON(github.event.head_commit), 'sdk/') || + contains(toJSON(github.event.head_commit), 'make/data_process/') + 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 -t nexent/nexent-data-process:dev-arm64 --load -f make/data_process/Dockerfile . + + build-web-amd64: + runs-on: ubuntu-latest + if: | + github.event_name == 'workflow_dispatch' || + contains(toJSON(github.event.head_commit), 'frontend/') || + contains(toJSON(github.event.head_commit), 'make/web/') + 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 -t nexent/nexent-web:dev-amd64 --load -f make/web/Dockerfile . + + build-web-arm64: + runs-on: ubuntu-latest + if: | + github.event_name == 'workflow_dispatch' || + contains(toJSON(github.event.head_commit), 'frontend/') || + contains(toJSON(github.event.head_commit), 'make/web/') + 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 -t nexent/nexent-web:dev-arm64 --load -f make/web/Dockerfile . + + build-terminal-amd64: + runs-on: ubuntu-latest + if: | + github.event_name == 'workflow_dispatch' || + contains(toJSON(github.event.head_commit), 'make/terminal/') + 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 -t nexent/nexent-ubuntu-terminal:dev-amd64 --load -f make/terminal/Dockerfile . + + build-terminal-arm64: + runs-on: ubuntu-latest + if: | + github.event_name == 'workflow_dispatch' || + contains(toJSON(github.event.head_commit), 'make/terminal/') + 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 -t nexent/nexent-ubuntu-terminal:dev-arm64 --load -f make/terminal/Dockerfile . \ No newline at end of file diff --git a/.github/workflows/docker-build-push-beta.yml b/.github/workflows/docker-build-push-beta.yml deleted file mode 100644 index 0946bbf25..000000000 --- a/.github/workflows/docker-build-push-beta.yml +++ /dev/null @@ -1,251 +0,0 @@ -name: Docker Build and Push All Images (Beta Version) - -concurrency: - group: docker-build-push-beta-${{ github.ref }} - cancel-in-progress: true - -on: - workflow_dispatch: - pull_request: - branches: [develop] - push: - branches: [develop] - -jobs: - build-and-push-main-amd64: - runs-on: ubuntu-latest - 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 -t nexent/nexent:beta-amd64 --load -f make/main/Dockerfile . - - name: Login to DockerHub - run: echo ${{ secrets.DOCKERHUB_TOKEN }} | docker login -u nexent --password-stdin - - name: Push main image (amd64) to DockerHub - run: docker push nexent/nexent:beta-amd64 - - build-and-push-main-arm64: - runs-on: ubuntu-latest - 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 -t nexent/nexent:beta-arm64 --load -f make/main/Dockerfile . - - name: Login to DockerHub - run: echo ${{ secrets.DOCKERHUB_TOKEN }} | docker login -u nexent --password-stdin - - name: Push main image (arm64) to DockerHub - run: docker push nexent/nexent:beta-arm64 - - build-and-push-data-process-amd64: - runs-on: ubuntu-latest - 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 -t nexent/nexent-data-process:beta-amd64 --load -f make/data_process/Dockerfile . - - name: Login to DockerHub - run: echo ${{ secrets.DOCKERHUB_TOKEN }} | docker login -u nexent --password-stdin - - name: Push data process image (amd64) to DockerHub - run: docker push nexent/nexent-data-process:beta-amd64 - - build-and-push-data-process-arm64: - runs-on: ubuntu-latest - 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 -t nexent/nexent-data-process:beta-arm64 --load -f make/data_process/Dockerfile . - - name: Login to DockerHub - run: echo ${{ secrets.DOCKERHUB_TOKEN }} | docker login -u nexent --password-stdin - - name: Push data process image (arm64) to DockerHub - run: docker push nexent/nexent-data-process:beta-arm64 - - build-and-push-web-amd64: - runs-on: ubuntu-latest - 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 -t nexent/nexent-web:beta-amd64 --load -f make/web/Dockerfile . - - name: Login to DockerHub - run: echo ${{ secrets.DOCKERHUB_TOKEN }} | docker login -u nexent --password-stdin - - name: Push web image (amd64) to DockerHub - run: docker push nexent/nexent-web:beta-amd64 - - build-and-push-web-arm64: - runs-on: ubuntu-latest - 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 -t nexent/nexent-web:beta-arm64 --load -f make/web/Dockerfile . - - name: Login to DockerHub - run: echo ${{ secrets.DOCKERHUB_TOKEN }} | docker login -u nexent --password-stdin - - name: Push web image (arm64) to DockerHub - run: docker push nexent/nexent-web:beta-arm64 - - build-and-push-terminal-amd64: - runs-on: ubuntu-latest - 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 -t nexent/nexent-ubuntu-terminal:beta-amd64 --load -f make/terminal/Dockerfile . - - name: Login to DockerHub - run: echo ${{ secrets.DOCKERHUB_TOKEN }} | docker login -u nexent --password-stdin - - name: Push terminal image (amd64) to DockerHub - run: docker push nexent/nexent-ubuntu-terminal:beta-amd64 - - build-and-push-terminal-arm64: - runs-on: ubuntu-latest - 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 -t nexent/nexent-ubuntu-terminal:beta-arm64 --load -f make/terminal/Dockerfile . - - name: Login to DockerHub - run: echo ${{ secrets.DOCKERHUB_TOKEN }} | docker login -u nexent --password-stdin - - name: Push terminal image (arm64) to DockerHub - run: docker push nexent/nexent-ubuntu-terminal:beta-arm64 - - manifest-push-main: - runs-on: ubuntu-latest - needs: - - build-and-push-main-amd64 - - build-and-push-main-arm64 - steps: - - name: Login to DockerHub - run: echo ${{ secrets.DOCKERHUB_TOKEN }} | docker login -u nexent --password-stdin - - name: Create and push manifest for main (DockerHub) - run: | - docker manifest create nexent/nexent:beta \ - nexent/nexent:beta-amd64 \ - nexent/nexent:beta-arm64 - docker manifest push nexent/nexent:beta - - 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 DockerHub - run: echo ${{ secrets.DOCKERHUB_TOKEN }} | docker login -u nexent --password-stdin - - name: Create and push manifest for data-process (DockerHub) - run: | - docker manifest create nexent/nexent-data-process:beta \ - nexent/nexent-data-process:beta-amd64 \ - nexent/nexent-data-process:beta-arm64 - docker manifest push nexent/nexent-data-process:beta - - manifest-push-web: - runs-on: ubuntu-latest - needs: - - build-and-push-web-amd64 - - build-and-push-web-arm64 - steps: - - name: Login to DockerHub - run: echo ${{ secrets.DOCKERHUB_TOKEN }} | docker login -u nexent --password-stdin - - name: Create and push manifest for web (DockerHub) - run: | - docker manifest create nexent/nexent-web:beta \ - nexent/nexent-web:beta-amd64 \ - nexent/nexent-web:beta-arm64 - docker manifest push nexent/nexent-web:beta - - manifest-push-terminal: - runs-on: ubuntu-latest - needs: - - build-and-push-terminal-amd64 - - build-and-push-terminal-arm64 - steps: - - name: Login to DockerHub - run: echo ${{ secrets.DOCKERHUB_TOKEN }} | docker login -u nexent --password-stdin - - name: Create and push manifest for terminal (DockerHub) - run: | - docker manifest create nexent/nexent-ubuntu-terminal:beta \ - nexent/nexent-ubuntu-terminal:beta-amd64 \ - nexent/nexent-ubuntu-terminal:beta-arm64 - docker manifest push nexent/nexent-ubuntu-terminal:beta \ No newline at end of file diff --git a/.github/workflows/docker-build.yml b/.github/workflows/docker-build.yml deleted file mode 100644 index 82f4ddd24..000000000 --- a/.github/workflows/docker-build.yml +++ /dev/null @@ -1,53 +0,0 @@ -name: Docker Build All Images - -on: - workflow_dispatch: - inputs: - runner_label_json: - description: 'JSON 格式的 runner 标签数组' - required: true - default: '["self-hosted", "MacOS", "ARM64"]' - -jobs: - build-main: - runs-on: ${{ fromJson(inputs.runner_label_json) }} - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Build main application image - run: docker build --build-arg MIRROR=https://pypi.tuna.tsinghua.edu.cn/simple --progress=plain -t nexent/nexent -f make/main/Dockerfile . - - build-data-process: - runs-on: ${{ fromJson(inputs.runner_label_json) }} - steps: - - 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 - run: docker build --build-arg MIRROR=https://pypi.tuna.tsinghua.edu.cn/simple --progress=plain -t nexent/nexent-data-process -f make/data_process/Dockerfile . - - build-web: - runs-on: ${{ fromJson(inputs.runner_label_json) }} - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Build web frontend image - run: docker build --build-arg MIRROR=https://pypi.tuna.tsinghua.edu.cn/simple --progress=plain -t nexent/nexent-web -f make/web/Dockerfile . - - build-terminal: - runs-on: ${{ fromJson(inputs.runner_label_json) }} - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Build terminal image - run: docker build --progress=plain -t nexent/nexent-ubuntu-terminal -f make/terminal/Dockerfile . \ No newline at end of file