1
0
Fork 0
onnx-web/.gitlab-ci.yml

282 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
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
image: docker.io/python:3.10
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