variables: GIT_SUBMODULE_STRATEGY: recursive stages: - build - deploy - test .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 - apt-get update -qq - apt-get -y -qq install rsync libhidapi-dev libcap-dev libev-dev bubblewrap - wget https://github.com/ocaml/opam/releases/download/2.0.1/opam-2.0.1-x86_64-linux -O opam-2.0.1-x86_64-linux - cp opam-2.0.1-x86_64-linux /usr/local/bin/opam - chmod +x /usr/local/bin/opam - export PATH="/usr/local/bin${PATH:+:}${PATH:-}" # Initialise opam - printf '' | opam init --bare - eval $(opam config env) # Create switch - printf '' | opam switch create toto ocaml-base-compiler.4.06.1 - eval $(opam config env) # Show versions and current switch - echo "$PATH" - opam --version - printf '' | ocaml - opam switch local-dune-job: <<: *before_script stage: test script: - vendors/opam-repository-tools/rewrite-local-opam-repository.sh - opam repository add localrepo "file://$PWD/vendors/ligo-opam-repository-local-generated/" - opam install -y --build-test --deps-only ./src/ - dune build -p ligo # TODO: also try instead from time to time: #- (cd ./src/; dune build -p ligo) - dune build @ligo-test # artifacts: # paths: # - src/ligo/bin/cli.ml local-repo-job: <<: *before_script stage: test script: - vendors/opam-repository-tools/rewrite-local-opam-repository.sh - opam repository add localrepo "file://$PWD/vendors/ligo-opam-repository-local-generated/" #--build-test - opam install -y ligo remote-repo-job: <<: *before_script stage: test script: # Add repository - opam repository add ligo-repository https://gitlab.com/ligolang/ligo.git - eval $(opam config env) - opam install -y ligo # Used in the IDE #- opam install -y user-setup #- opam install -y merlin #- opam install -y ocp-indent #- opam user-setup install # Run a docker build on the ligo image, to see if the current # commit does not break it build-current-docker-image: stage: build <<: *docker script: - docker build -t $CI_REGISTRY_IMAGE:latest -f ./docker/Dockerfile . - docker save $CI_REGISTRY_IMAGE:latest > image artifacts: paths: - $CI_REGISTRY_IMAGE:latest # When a MR/PR is merged to master # take the previous build and publish it to Docker Hub build-and-publish-latest-docker-image: stage: deploy <<: *docker dependencies: - build-current-docker-image before_script: - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD script: - docker load -i image - docker push $CI_REGISTRY_IMAGE:latest only: - master