diff --git a/.github/workflows/buildkit-dockerfile-test.yaml b/.github/workflows/buildkit-dockerfile-test.yaml new file mode 100644 index 0000000000..4205d734e7 --- /dev/null +++ b/.github/workflows/buildkit-dockerfile-test.yaml @@ -0,0 +1,51 @@ +name: buildkit-dockerfile-test + +on: + pull_request: + paths: + - '.github/workflows/buildkit-dockerfile-test.yaml' + - 'docker/Dockerfile' + workflow_dispatch: + +jobs: + build-test: + name: "build docker/Dockerfile (${{ matrix.runner_info.arch }})" + runs-on: ${{ matrix.runner_info.runner }} + container: + image: swr.cn-southwest-2.myhuaweicloud.com/base_image/ascend-ci/cann:9.0.0-a3-ubuntu22.04-py3.12 + + strategy: + fail-fast: false + matrix: + runner_info: + - {runner: linux-aarch64-cpu-4, arch: arm64} + - {runner: linux-amd64-cpu-4, arch: amd64} + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 1 + persist-credentials: false + + - name: Login to SWR + uses: docker/login-action@v3 + with: + registry: swr.cn-southwest-2.myhuaweicloud.com + username: ${{ secrets.SWR_USERNAME }} + password: ${{ secrets.SWR_PASSWORD }} + + - name: Build and push + uses: docker/build-push-action@v6 + with: + context: . + file: docker/Dockerfile + push: true + tags: swr.cn-southwest-2.myhuaweicloud.com/modelfoundry/test-buildkit:triton-${{ matrix.runner_info.arch }}-${{ github.sha }} + build-args: | + CANN_BASE_IMAGE=swr.cn-southwest-2.myhuaweicloud.com/base_image/ascend-ci/cann:8.5.0-a3-ubuntu22.04-py3.10 + APTMIRROR=http://cache-service.nginx-pypi-cache.svc.cluster.local:8081 + PIP_INDEX_URL=http://cache-service.nginx-pypi-cache.svc.cluster.local/pypi/simple + PIP_TRUSTED_HOST=cache-service.nginx-pypi-cache.svc.cluster.local + TORCH_INDEX_URL=http://cache-service.nginx-pypi-cache.svc.cluster.local/whl/cpu + provenance: false diff --git a/docker/Dockerfile b/docker/Dockerfile index 7d71b2a4e8..5739b1b5fe 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -5,8 +5,17 @@ SHELL ["/bin/bash", "-c"] ENV DEBIAN_FRONTEND=noninteractive ENV TZ="Asia/shanghai" -RUN sed -i 's|http://archive.ubuntu.com|http://mirrors.huaweicloud.com|g' /etc/apt/sources.list 2>/dev/null || true && \ - sed -i 's|http://security.ubuntu.com|http://mirrors.huaweicloud.com|g' /etc/apt/sources.list 2>/dev/null || true && \ +ARG APTMIRROR +ARG PIP_INDEX_URL="https://repo.huaweicloud.com/repository/pypi/simple" +ARG TORCH_INDEX_URL="http://cache-service.nginx-pypi-cache.svc.cluster.local/whl/cpu" +ARG PIP_TRUSTED_HOST="" + +RUN if [ -n "$APTMIRROR" ]; then \ + sed -Ei "s@(ports|archive).ubuntu.com@${APTMIRROR#http://}@g" /etc/apt/sources.list; \ + else \ + sed -i 's|http://archive.ubuntu.com|http://mirrors.huaweicloud.com|g' /etc/apt/sources.list 2>/dev/null || true; \ + sed -i 's|http://security.ubuntu.com|http://mirrors.huaweicloud.com|g' /etc/apt/sources.list 2>/dev/null || true; \ + fi && \ echo 'Acquire::Retries "3";' > /etc/apt/apt.conf.d/80-retries && \ echo 'Acquire::http::Timeout "30";' >> /etc/apt/apt.conf.d/80-retries && \ apt update && \ @@ -36,10 +45,16 @@ RUN sed -i 's|http://archive.ubuntu.com|http://mirrors.huaweicloud.com|g' /etc/a update-ca-certificates RUN mkdir -p /root/.config/pip && \ - echo -e "[global]\nindex-url = https://repo.huaweicloud.com/repository/pypi/simple\nextra-index-url = https://download.pytorch.org/whl/cpu" > /root/.config/pip/pip.conf + printf '[global]\nindex-url = %s\ntimeout = 600\n' "$PIP_INDEX_URL" > /root/.config/pip/pip.conf && \ + if [ -n "$PIP_TRUSTED_HOST" ]; then printf 'trusted-host = %s\n' "$PIP_TRUSTED_HOST" >> /root/.config/pip/pip.conf; fi COPY requirements.txt requirements_dev.txt ./ +RUN --mount=type=cache,target=/root/.cache/pip \ + python3 -m pip install torch==2.7.1+cpu \ + --find-links ${TORCH_INDEX_URL}/torch/ \ + --timeout 600 + RUN --mount=type=cache,target=/root/.cache/pip \ python3 -m pip install -r requirements_dev.txt && \ python3 -m pip install -r requirements.txt