diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 94899a7d8..8dc5076e3 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,32 +1,33 @@ variables: GIT_SUBMODULE_STRATEGY: recursive -before_script: +.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:-}" - # 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) - # 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) - # 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 + # Show versions and current switch + - echo "$PATH" + - opam --version + - printf '' | ocaml + - opam switch local-dune-job: + <<: *before_script script: - vendors/ligo-opam-repository/rewrite-local-opam-repository.sh - opam repository add localrepo "file://$PWD/vendors/ligo-opam-repository-local/" @@ -40,6 +41,7 @@ local-dune-job: # - src/ligo/bin/cli.ml local-repo-job: + <<: *before_script script: - vendors/ligo-opam-repository/rewrite-local-opam-repository.sh - opam repository add localrepo "file://$PWD/vendors/ligo-opam-repository-local/" @@ -47,6 +49,7 @@ local-repo-job: - opam install -y ligo remote-repo-job: + <<: *before_script script: # Add repository - opam repository add ligo-repository https://gitlab.com/ligolang/ligo-opam-repository.git @@ -57,3 +60,10 @@ remote-repo-job: #- opam install -y merlin #- opam install -y ocp-indent #- opam user-setup install + +build-docker-image: + image: docker:1.11 + services: + - docker:dind + script: + - docker build -t marigold/ligo ./docker \ No newline at end of file diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 000000000..ca1d6bbf4 --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,31 @@ +# We could use one of the nomadiclab's docker images as a base instead +# We're using 4.06 instead of 4.06.1, if this causes problems built a custom 4.06.1 image instead +FROM ocaml/opam2:4.06 + +USER root + +# Setup a custom opam repository where ligo is published +RUN git clone https://gitlab.com/gabriel.alfour/ligo-opam-repository +RUN opam repo add ligo-opam-repository ./ligo-opam-repository +RUN opam update ligo-opam-repository + +# Install required native dependencies +RUN apt-get -y install \ + libev-dev \ + perl \ + pkg-config \ + libgmp-dev \ + libhidapi-dev \ + m4 + +# Install ligo +RUN git clone https://gitlab.com/gabriel.alfour/ligo +RUN opam update + +RUN cd ligo/src && \ + opam install . --yes + +RUN eval $(opam env) + +# Use the ligo binary as a default command +ENTRYPOINT [ "/home/opam/.opam/4.06/bin/ligo" ] \ No newline at end of file diff --git a/docker/installer.sh b/docker/installer.sh new file mode 100644 index 000000000..698207b94 --- /dev/null +++ b/docker/installer.sh @@ -0,0 +1,16 @@ +#!/bin/bash +# You can run this installer like this: +# curl https://gitlab.com/gabriel.alfour/ligo/blob/master/docker/installer.sh | bash +# Make sure the marigold/ligo image is published at docker hub first +echo "Installing LIGO" + +# Install the ligo.sh from master +wget https://gitlab.com/gabriel.alfour/ligo/blob/master/docker/ligo.sh + +# Copy the exucutable to the appropriate directory +sudo cp ligo.sh /usr/local/bin/ligo +sudo chmod +x /usr/local/bin/ligo +rm ligo.sh + +# Installation finished, try running 'ligo' from your CLI +echo "Installation successfull, try running 'ligo' now. \n" \ No newline at end of file diff --git a/docker/ligo.sh b/docker/ligo.sh new file mode 100644 index 000000000..246a2f08d --- /dev/null +++ b/docker/ligo.sh @@ -0,0 +1,2 @@ +#!/bin/bash +docker run -it -v $PWD:$PWD -w $PWD marigold/ligo $@ \ No newline at end of file