variables: GIT_SUBMODULE_STRATEGY: recursive stages: - build - deploy - test .docker: &docker image: docker:1.11 services: - docker:dind .docker_build: &docker_build script: - docker build -t $LIGO_REGISTRY_IMAGE:latest -f ./docker/Dockerfile . .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 without publishing to the registry build-current-docker-image: stage: build <<: *docker <<: *docker_build except: - master # 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 <<: *docker_build after_script: - docker login -u $LIGO_REGISTRY_USER -p $LIGO_REGISTRY_PASSWORD - docker push $LIGO_REGISTRY_IMAGE:latest only: - master