278 lines
5.6 KiB
YAML
278 lines
5.6 KiB
YAML
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
|
|
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
|
|
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.10
|
|
- 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
|
|
# TODO: ROCm image build keeps running out of disk
|
|
# 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-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
|