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: - yarn.lock paths: - gui/node_modules/ policy: pull-push .build-oci: extends: - .build-base image: docker.io/docker:20.10 services: - docker.io/docker:20.10-dind 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}" .build-python: extends: - .build-base image: docker.io/python:3.10 .build-curl: extends: - .build-python build-api-coverage: extends: - .build-python stage: build script: - cd api - 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 - build-gui-bundle script: - mv -v gui/out/config.json gui/out/index.html api/gui/ - mv -v gui/out/bundle/main.js api/gui/bundle/ - cd api - ${CI_PROJECT_DIR}/common/scripts/image-build.sh --push variables: IMAGE_ROOT: "${CI_PROJECT_DIR}/api" 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: Containerfile.cpu.buster - IMAGE_ARCH: cuda-ubuntu IMAGE_FILE: Containerfile.cuda.ubuntu - IMAGE_ARCH: rocm-ubuntu IMAGE_FILE: 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-node stage: package needs: - build-api-coverage only: - tags script: - cd api - python -m build - twine check dist/* - twine upload dist/* package-gui-npm: extends: - .build-node stage: package needs: - build-gui-bundle only: - tags script: - cd gui - npm publish # 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