ligo/.gitlab-ci.yml

162 lines
4.2 KiB
YAML
Raw Normal View History

# TODO: remove this as submodules aren't used anymore.
variables:
2019-05-14 20:17:39 +04:00
GIT_SUBMODULE_STRATEGY: recursive
build_binary_script: "./scripts/distribution/generic/build.sh"
package_binary_script: "./scripts/distribution/generic/package.sh"
2019-05-27 14:06:56 +04:00
stages:
- test
- build_and_package_binaries
2019-11-10 02:34:20 +04:00
- build_docker
- build_and_deploy_docker
- build_and_deploy_website
.build_binary: &build_binary
stage: build_and_package_binaries
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/**/*
.website_build: &website_build
2019-09-08 00:52:00 +04:00
stage: build_and_deploy_website
image: node:8
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
- cd gitlab-pages/website
- npm install
script:
- npm run version next
- npm run build
# move internal odoc documentation to the website folder
- 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
artifacts:
paths:
- public
2019-05-27 14:06:56 +04:00
.docker: &docker
image: docker:1.11
services:
- docker:dind
.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
- scripts/install_native_dependencies.sh
2019-09-06 06:02:18 +04:00
- scripts/install_opam.sh # TODO: or scripts/install_build_environment.sh ?
- 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-06-06 19:59:03 +04:00
local-dune-job:
<<: *before_script
2019-05-27 14:06:56 +04:00
stage: test
script:
2019-09-06 06:02:18 +04:00
- scripts/install_vendors_deps.sh
- scripts/build_ligo_local.sh
2019-05-15 18:35:46 +04:00
- dune build @ligo-test
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
script:
- sh scripts/build_docker_image.sh
- sh scripts/test_cli.sh
2019-09-07 15:30:46 +04:00
except:
- master
- dev
2019-05-27 14:06:56 +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
script:
- sh scripts/build_docker_image.sh
- sh scripts/test_cli.sh
2019-09-25 15:19:44 +04:00
- docker login -u $LIGO_REGISTRY_USER -p $LIGO_REGISTRY_PASSWORD
- docker push $LIGO_REGISTRY_IMAGE:next
only:
- dev
# It'd be a good idea to generate those jobs dynamically,
# based on desired targets
build-and-package-debian-9:
<<: *docker
stage: build_and_package_binaries
variables:
target_os_family: "debian"
target_os: "debian"
target_os_version: "9"
<<: *build_binary
build-and-package-debian-10:
<<: *docker
stage: build_and_package_binaries
variables:
target_os_family: "debian"
target_os: "debian"
target_os_version: "10"
<<: *build_binary
build-and-package-ubuntu-18-04:
<<: *docker
stage: build_and_package_binaries
variables:
target_os_family: "debian"
target_os: "ubuntu"
target_os_version: "18.04"
<<: *build_binary
build-and-package-ubuntu-19-04:
<<: *docker
stage: build_and_package_binaries
variables:
target_os_family: "debian"
target_os: "ubuntu"
target_os_version: "19.04"
<<: *build_binary
2019-06-06 17:45:45 +04:00
# Pages are deployed from both master & dev, be careful not to override 'next'
# in case something gets merged into 'dev' while releasing.
pages:
<<: *website_build
2019-06-06 19:59:03 +04:00
only:
- master
- dev