stages: - build - package .build-base: tags: - platform:k8s - runner:shared .build-node: extends: - .build-base image: docker.io/node:18 artifacts: expire_in: 1 day paths: - gui/out/ reports: coverage_report: coverage_format: cobertura path: gui/out/coverage/cobertura-coverage.xml junit: gui/out/test-results.xml cache: key: files: - gui/yarn.lock paths: - gui/node_modules/ policy: pull-push interruptible: true .build-oci: extends: - .build-base image: docker.io/docker:20.10 services: - docker.io/docker:20.10-dind tags: - platform:k8s - runner:large allow_failure: false before_script: - mkdir ${HOME}/.docker - echo "${DOCKER_SECRET}" | base64 -d > ${HOME}/.docker/config.json after_script: - rm -rfv ${HOME}/.docker variables: DOCKER_CERT_PATH: "/shared/docker/client" DOCKER_DRIVER: overlay2 DOCKER_HOST: tcp://localhost:2376 DOCKER_NAME: "${CI_PROJECT_PATH}" DOCKER_TLS_CERTDIR: "/shared/docker" DOCKER_TLS_VERIFY: 1 VERSION_TAG: "${CI_COMMIT_REF_SLUG}" interruptible: true .build-python: extends: - .build-base tags: - platform:k8s - runner:large variables: PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip" interruptible: true .build-curl: extends: - .build-python cache: {} build-api-coverage-3.10: extends: - .build-python stage: build image: docker.io/python:3.10 cache: key: python-3-10 paths: - .cache/pip policy: pull-push script: - apt-get -y update && apt-get -y install python3-opencv - cd api - ${CI_PROJECT_DIR}/common/scripts/make-venv.sh - make ci build-api-coverage-3.9: extends: - .build-python stage: build image: docker.io/python:3.9 cache: key: python-3-9 paths: - .cache/pip policy: pull-push script: - apt-get -y update && apt-get -y install python3-opencv - cd api - ${CI_PROJECT_DIR}/common/scripts/make-venv.sh - make ci build-api-coverage-3.8: extends: - .build-python stage: build image: docker.io/python:3.8 cache: key: python-3-8 paths: - .cache/pip policy: pull-push script: - apt-get -y update && apt-get -y install python3-opencv - cd api - ${CI_PROJECT_DIR}/common/scripts/make-venv.sh - make ci build-gui-bundle: extends: - .build-node stage: build script: - cd gui - make ci # packages, various .package-api-oci: extends: - .build-oci stage: package needs: - build-api-coverage-3.8 - build-api-coverage-3.9 - build-api-coverage-3.10 - build-gui-bundle script: - ${CI_PROJECT_DIR}/common/scripts/image-build.sh --push variables: IMAGE_ROOT: "${CI_PROJECT_DIR}" IMAGE_SUFFIX: api .package-gui-oci: extends: - .build-oci stage: package needs: - build-gui-bundle script: - cd gui - ${CI_PROJECT_DIR}/common/scripts/image-build.sh --push variables: IMAGE_ROOT: "${CI_PROJECT_DIR}/gui" IMAGE_SUFFIX: gui # no API image for alpine: https://github.com/microsoft/onnxruntime/issues/2909#issuecomment-593591317 package-api-oci: extends: - .package-api-oci parallel: matrix: - IMAGE_ARCH: cpu-buster IMAGE_FILE: api/Containerfile.cpu.buster - IMAGE_ARCH: cuda-ubuntu IMAGE_FILE: api/Containerfile.cuda.ubuntu - IMAGE_ARCH: rocm-ubuntu IMAGE_FILE: api/Containerfile.rocm.ubuntu package-gui-oci: extends: - .package-gui-oci parallel: matrix: - IMAGE_ARCH: nginx-alpine IMAGE_FILE: Containerfile.nginx.alpine - IMAGE_ARCH: nginx-bullseye IMAGE_FILE: Containerfile.nginx.bullseye - IMAGE_ARCH: node-alpine IMAGE_FILE: Containerfile.node.alpine - IMAGE_ARCH: node-buster IMAGE_FILE: Containerfile.node.buster # language-specific packages package-api-twine: extends: - .build-python stage: package needs: - build-api-coverage-3.8 - build-api-coverage-3.10 only: - tags script: - echo "${PIP_SECRET}" | base64 -d > $HOME/.pypirc - cp -v README.md api/README.md - cd api - pip3 install -r requirements/dev.txt - python3 -m build - twine check dist/* - twine upload --repository onnx-web dist/* artifacts: expire_in: 7 days paths: - dist/ cache: key: files: - api/requirements/dev.txt paths: - .cache/pip policy: pull-push interruptible: false package-api-twine-dry: extends: - package-api-twine only: ~ except: - tags script: - cp -v README.md api/README.md - cd api - pip install build twine - python -m build - twine check dist/* package-gui-npm: extends: - .build-node stage: package needs: - build-gui-bundle only: - tags script: - echo "${NPM_SECRET}" | base64 -d > $HOME/.npmrc - cp -v README.md gui/README.md - cd gui - npm publish artifacts: expire_in: 7 days paths: - "$CI_PROJECT_DIR/*.tgz" interruptible: false package-gui-npm-dry: extends: - package-gui-npm only: ~ except: - tags script: - cp -v README.md gui/README.md - cd gui - npm pack # commit status github-pending: stage: .pre extends: - .build-curl script: - ./common/scripts/github-status.sh pending github-failure: stage: .post extends: - .build-curl when: on_failure script: - ./common/scripts/github-status.sh failure github-success: stage: .post extends: - .build-curl when: on_success script: - ./common/scripts/github-status.sh success