2019-05-27 19:06:18 +04:00
|
|
|
# TODO: remove this as submodules aren't used anymore.
|
2019-05-14 20:16:14 +04:00
|
|
|
variables:
|
2019-05-14 20:17:39 +04:00
|
|
|
GIT_SUBMODULE_STRATEGY: recursive
|
2019-08-12 12:41:53 +04:00
|
|
|
build_binary_script: "./scripts/distribution/generic/build.sh"
|
|
|
|
package_binary_script: "./scripts/distribution/generic/package.sh"
|
2020-02-07 06:43:24 +04:00
|
|
|
LIGO_REGISTRY_IMAGE_BASE_NAME: "${CI_PROJECT_PATH}/${CI_PROJECT_NAME}"
|
2019-05-14 20:16:14 +04:00
|
|
|
|
2019-05-27 14:06:56 +04:00
|
|
|
stages:
|
2019-08-12 12:41:53 +04:00
|
|
|
- test
|
2020-02-07 20:09:05 +04:00
|
|
|
- ide
|
2019-08-12 12:41:53 +04:00
|
|
|
- build_and_package_binaries
|
2019-11-10 02:34:20 +04:00
|
|
|
- build_docker
|
|
|
|
- build_and_deploy_docker
|
2019-05-27 20:35:52 +04:00
|
|
|
- build_and_deploy_website
|
2019-08-12 12:41:53 +04:00
|
|
|
|
2020-01-23 21:47:24 +04:00
|
|
|
# TODO provide sensible CI for master
|
|
|
|
dont-merge-to-master:
|
|
|
|
stage: test
|
|
|
|
script:
|
|
|
|
- "false"
|
|
|
|
only:
|
|
|
|
- master
|
|
|
|
|
2019-08-12 12:41:53 +04:00
|
|
|
.build_binary: &build_binary
|
2020-01-09 20:33:49 +04:00
|
|
|
# To run in sequence and save CPU usage, use stage: build_and_package_binaries
|
|
|
|
stage: test
|
2019-08-12 12:41:53 +04:00
|
|
|
script:
|
|
|
|
- $build_binary_script "$target_os_family" "$target_os" "$target_os_version"
|
|
|
|
- $package_binary_script "$target_os_family" "$target_os" "$target_os_version"
|
|
|
|
artifacts:
|
|
|
|
paths:
|
|
|
|
- dist/package/**/*
|
2019-05-27 14:21:01 +04:00
|
|
|
|
2019-06-05 18:46:00 +04:00
|
|
|
.website_build: &website_build
|
2020-01-10 04:43:09 +04:00
|
|
|
stage: build_and_deploy_website
|
2019-06-05 18:46:00 +04:00
|
|
|
image: node:8
|
2020-01-10 04:43:09 +04:00
|
|
|
dependencies:
|
|
|
|
- build-and-package-debian-9
|
|
|
|
- build-and-package-debian-10
|
|
|
|
- build-and-package-ubuntu-18-04
|
|
|
|
- build-and-package-ubuntu-19-04
|
2019-06-05 18:46:00 +04:00
|
|
|
before_script:
|
2019-06-07 13:56:03 +04:00
|
|
|
- scripts/install_native_dependencies.sh
|
2019-09-06 06:02:18 +04:00
|
|
|
- scripts/install_opam.sh # TODO: or scripts/install_build_environment.sh ?
|
2019-06-07 13:56:03 +04:00
|
|
|
- export PATH="/usr/local/bin${PATH:+:}${PATH:-}"
|
|
|
|
- eval $(opam config env)
|
2019-09-06 06:02:18 +04:00
|
|
|
- scripts/setup_switch.sh
|
2019-06-07 13:56:03 +04:00
|
|
|
- eval $(opam config env)
|
2019-09-08 00:52:00 +04:00
|
|
|
- scripts/setup_repos.sh
|
2019-06-07 13:56:03 +04:00
|
|
|
|
|
|
|
# install deps for internal documentation
|
2019-09-07 16:25:32 +04:00
|
|
|
- scripts/install_vendors_deps.sh
|
2019-09-08 00:52:00 +04:00
|
|
|
- opam install -y odoc
|
2019-09-07 16:25:32 +04:00
|
|
|
- scripts/build_ligo_local.sh
|
2019-06-07 13:56:03 +04:00
|
|
|
|
|
|
|
# build with odoc
|
|
|
|
- dune build @doc
|
|
|
|
|
2019-10-01 18:21:01 +04:00
|
|
|
# copy .deb packages into website
|
|
|
|
- find dist -name \*.deb -exec sh -c 'cp {} gitlab-pages/website/static/deb/ligo_$(basename $(dirname {})).deb' \;
|
|
|
|
|
2019-06-07 13:56:03 +04:00
|
|
|
# npm
|
2019-06-05 18:46:00 +04:00
|
|
|
- cd gitlab-pages/website
|
|
|
|
- npm install
|
|
|
|
script:
|
|
|
|
- npm run version next
|
|
|
|
- npm run build
|
2019-06-11 01:09:34 +04:00
|
|
|
# move internal odoc documentation to the website folder
|
2019-06-20 22:21:22 +04:00
|
|
|
- mkdir -p build/ligo/
|
|
|
|
- mv ../../_build/default/_doc/_html/ build/ligo/odoc
|
|
|
|
- pwd # for debug
|
|
|
|
- ls build/ligo/ # for debug
|
2019-06-06 17:45:45 +04:00
|
|
|
after_script:
|
2019-06-07 13:56:03 +04:00
|
|
|
- cp -r gitlab-pages/website/build/ligo public
|
2019-06-05 18:46:00 +04:00
|
|
|
artifacts:
|
|
|
|
paths:
|
|
|
|
- public
|
2019-05-27 14:06:56 +04:00
|
|
|
|
|
|
|
.docker: &docker
|
2020-02-07 06:43:24 +04:00
|
|
|
image: docker:19
|
2019-05-27 14:06:56 +04:00
|
|
|
services:
|
2020-02-07 06:43:24 +04:00
|
|
|
- docker:19-dind
|
2019-05-27 18:31:57 +04:00
|
|
|
|
2019-05-28 20:41:18 +04:00
|
|
|
|
2019-05-24 02:48:11 +04:00
|
|
|
.before_script: &before_script
|
|
|
|
before_script:
|
|
|
|
# Install dependencies
|
|
|
|
# rsync is needed by opam to sync a package installed from a local directory with the copy in ~/.opam
|
2019-05-28 22:54:07 +04:00
|
|
|
- scripts/install_native_dependencies.sh
|
2019-09-06 06:02:18 +04:00
|
|
|
- scripts/install_opam.sh # TODO: or scripts/install_build_environment.sh ?
|
2019-05-24 02:48:11 +04:00
|
|
|
- export PATH="/usr/local/bin${PATH:+:}${PATH:-}"
|
|
|
|
- eval $(opam config env)
|
2019-09-06 06:02:18 +04:00
|
|
|
- scripts/setup_switch.sh
|
|
|
|
- eval $(opam config env)
|
2019-09-08 00:52:00 +04:00
|
|
|
- scripts/setup_repos.sh
|
2019-05-14 18:37:29 +04:00
|
|
|
|
2019-06-06 19:59:03 +04:00
|
|
|
local-dune-job:
|
2019-05-24 02:48:11 +04:00
|
|
|
<<: *before_script
|
2019-05-27 14:06:56 +04:00
|
|
|
stage: test
|
2019-05-15 17:17:04 +04:00
|
|
|
script:
|
2019-09-06 06:02:18 +04:00
|
|
|
- scripts/install_vendors_deps.sh
|
|
|
|
- scripts/build_ligo_local.sh
|
2019-11-21 22:28:38 +04:00
|
|
|
- dune runtest
|
2019-12-26 21:12:07 +04:00
|
|
|
- make coverage
|
|
|
|
artifacts:
|
|
|
|
paths:
|
|
|
|
- _coverage_all
|
2020-01-23 20:33:09 +04:00
|
|
|
only:
|
|
|
|
- merge_requests
|
|
|
|
- dev
|
2019-05-15 17:17:04 +04:00
|
|
|
|
2019-09-07 15:30:46 +04:00
|
|
|
# Run a docker build without publishing to the registry
|
|
|
|
build-current-docker-image:
|
2019-09-08 00:52:00 +04:00
|
|
|
stage: build_docker
|
2019-11-10 02:34:20 +04:00
|
|
|
dependencies:
|
|
|
|
- build-and-package-debian-10
|
2019-09-07 15:30:46 +04:00
|
|
|
<<: *docker
|
2019-09-25 15:11:10 +04:00
|
|
|
script:
|
2019-08-12 12:41:53 +04:00
|
|
|
- sh scripts/build_docker_image.sh
|
2019-09-25 15:11:10 +04:00
|
|
|
- sh scripts/test_cli.sh
|
2020-01-23 20:33:09 +04:00
|
|
|
only:
|
|
|
|
- merge_requests
|
2019-05-27 14:06:56 +04:00
|
|
|
|
2019-06-06 18:49:47 +04:00
|
|
|
# When a MR/PR is merged to dev
|
2019-05-27 14:06:56 +04:00
|
|
|
# take the previous build and publish it to Docker Hub
|
2019-06-06 19:59:03 +04:00
|
|
|
build-and-publish-latest-docker-image:
|
2019-09-08 00:52:00 +04:00
|
|
|
stage: build_and_deploy_docker
|
2019-05-27 14:06:56 +04:00
|
|
|
<<: *docker
|
2019-11-10 02:34:20 +04:00
|
|
|
dependencies:
|
|
|
|
- build-and-package-debian-10
|
2019-09-25 15:11:10 +04:00
|
|
|
script:
|
2019-08-12 12:41:53 +04:00
|
|
|
- sh scripts/build_docker_image.sh
|
2019-09-25 12:52:26 +04:00
|
|
|
- sh scripts/test_cli.sh
|
2019-09-25 15:19:44 +04:00
|
|
|
- docker login -u $LIGO_REGISTRY_USER -p $LIGO_REGISTRY_PASSWORD
|
2020-02-07 21:14:50 +04:00
|
|
|
- docker push ${LIGO_REGISTRY_IMAGE_BUILD:-ligolang/ligo}:next
|
2019-05-27 20:47:10 +04:00
|
|
|
only:
|
2019-06-06 18:49:47 +04:00
|
|
|
- dev
|
2019-05-27 19:06:18 +04:00
|
|
|
|
2019-08-12 12:41:53 +04:00
|
|
|
# It'd be a good idea to generate those jobs dynamically,
|
|
|
|
# based on desired targets
|
|
|
|
build-and-package-debian-9:
|
|
|
|
<<: *docker
|
2020-01-09 20:33:49 +04:00
|
|
|
# To run in sequence and save CPU usage, use stage: build_and_package_binaries
|
|
|
|
stage: test
|
2020-02-07 20:09:05 +04:00
|
|
|
variables:
|
2019-08-12 12:41:53 +04:00
|
|
|
target_os_family: "debian"
|
|
|
|
target_os: "debian"
|
|
|
|
target_os_version: "9"
|
|
|
|
<<: *build_binary
|
2020-01-23 20:33:09 +04:00
|
|
|
only:
|
|
|
|
- dev
|
2019-08-12 12:41:53 +04:00
|
|
|
|
|
|
|
build-and-package-debian-10:
|
|
|
|
<<: *docker
|
2020-01-09 20:33:49 +04:00
|
|
|
# To run in sequence and save CPU usage, use stage: build_and_package_binaries
|
|
|
|
stage: test
|
2020-02-07 20:09:05 +04:00
|
|
|
variables:
|
2019-08-12 12:41:53 +04:00
|
|
|
target_os_family: "debian"
|
|
|
|
target_os: "debian"
|
|
|
|
target_os_version: "10"
|
|
|
|
<<: *build_binary
|
2020-01-23 20:33:09 +04:00
|
|
|
# this one is merge_requests and dev, because the debian 10 binary
|
|
|
|
# is used for build-current-docker-image and for
|
|
|
|
# build-and-publish-latest-docker-image
|
|
|
|
only:
|
|
|
|
- merge_requests
|
|
|
|
- dev
|
2019-08-12 12:41:53 +04:00
|
|
|
|
|
|
|
build-and-package-ubuntu-18-04:
|
|
|
|
<<: *docker
|
2020-01-09 20:33:49 +04:00
|
|
|
# To run in sequence and save CPU usage, use stage: build_and_package_binaries
|
|
|
|
stage: test
|
2020-02-07 20:09:05 +04:00
|
|
|
variables:
|
2019-08-12 12:41:53 +04:00
|
|
|
target_os_family: "debian"
|
|
|
|
target_os: "ubuntu"
|
|
|
|
target_os_version: "18.04"
|
|
|
|
<<: *build_binary
|
2020-01-23 20:33:09 +04:00
|
|
|
only:
|
|
|
|
- dev
|
2019-08-12 12:41:53 +04:00
|
|
|
|
|
|
|
build-and-package-ubuntu-19-04:
|
|
|
|
<<: *docker
|
2020-01-09 20:33:49 +04:00
|
|
|
# To run in sequence and save CPU usage, use stage: build_and_package_binaries
|
|
|
|
stage: test
|
2020-02-07 20:09:05 +04:00
|
|
|
variables:
|
2019-08-12 12:41:53 +04:00
|
|
|
target_os_family: "debian"
|
|
|
|
target_os: "ubuntu"
|
|
|
|
target_os_version: "19.04"
|
|
|
|
<<: *build_binary
|
2020-01-23 20:33:09 +04:00
|
|
|
only:
|
|
|
|
- dev
|
2019-08-12 12:41:53 +04:00
|
|
|
|
2020-02-07 20:09:05 +04:00
|
|
|
|
|
|
|
trigger-webide:
|
|
|
|
stage: ide
|
|
|
|
trigger:
|
|
|
|
include: tools/webide/webide-ci.yml
|
|
|
|
|
|
|
|
|
2020-01-23 20:33:09 +04:00
|
|
|
# Pages are deployed from dev, be careful not to override 'next'
|
2019-06-06 17:45:45 +04:00
|
|
|
# in case something gets merged into 'dev' while releasing.
|
2019-05-27 19:06:18 +04:00
|
|
|
pages:
|
2019-06-05 18:46:00 +04:00
|
|
|
<<: *website_build
|
2019-06-06 19:59:03 +04:00
|
|
|
only:
|
|
|
|
- dev
|