Merge branch 'feature/#1-dockerfile-with-installation-script' into 'master'

Feature/#1 dockerfile with installation script

See merge request ligolang/ligo!3
This commit is contained in:
Georges Dupéron 2019-05-27 19:41:25 +00:00
commit b5f9a13001
9 changed files with 79 additions and 29 deletions

View File

@ -2,6 +2,22 @@
variables: variables:
GIT_SUBMODULE_STRATEGY: recursive GIT_SUBMODULE_STRATEGY: recursive
stages:
- build_docker
- build_and_deploy_docker
- build_and_deploy_website
- 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: &before_script
before_script: before_script:
# Install dependencies # Install dependencies
@ -29,6 +45,7 @@ variables:
local-dune-job: local-dune-job:
<<: *before_script <<: *before_script
stage: test
script: script:
- vendors/opam-repository-tools/rewrite-local-opam-repository.sh - vendors/opam-repository-tools/rewrite-local-opam-repository.sh
- opam repository add localrepo "file://$PWD/vendors/ligo-opam-repository-local-generated/" - opam repository add localrepo "file://$PWD/vendors/ligo-opam-repository-local-generated/"
@ -43,6 +60,7 @@ local-dune-job:
local-repo-job: local-repo-job:
<<: *before_script <<: *before_script
stage: test
script: script:
- vendors/opam-repository-tools/rewrite-local-opam-repository.sh - vendors/opam-repository-tools/rewrite-local-opam-repository.sh
- opam repository add localrepo "file://$PWD/vendors/ligo-opam-repository-local-generated/" - opam repository add localrepo "file://$PWD/vendors/ligo-opam-repository-local-generated/"
@ -51,6 +69,7 @@ local-repo-job:
remote-repo-job: remote-repo-job:
<<: *before_script <<: *before_script
stage: test
script: script:
# Add repository # Add repository
- opam repository add ligo-repository https://gitlab.com/ligolang/ligo.git - opam repository add ligo-repository https://gitlab.com/ligolang/ligo.git
@ -62,14 +81,29 @@ remote-repo-job:
#- opam install -y ocp-indent #- opam install -y ocp-indent
#- opam user-setup install #- opam user-setup install
build-docker-image: # Run a docker build without publishing to the registry
image: docker:1.11 build-current-docker-image:
services: stage: build_docker
- docker:dind <<: *docker
script: <<: *docker_build
- docker build -t marigold/ligo ./docker 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: build_and_deploy_docker
<<: *docker
<<: *docker_build
after_script:
- docker login -u $LIGO_REGISTRY_USER -p $LIGO_REGISTRY_PASSWORD
- docker push $LIGO_REGISTRY_IMAGE:latest
only:
- master
pages: pages:
stage: build_and_deploy_website
image: node:8 image: node:8
before_script: before_script:
- cd gitlab-pages/website - cd gitlab-pages/website

View File

@ -1,31 +1,31 @@
# We could use one of the nomadiclab's docker images as a base instead # 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 # We're using 4.06 instead of 4.06.1, if this causes problems build a custom 4.06.1 image instead
FROM ocaml/opam2:4.06 FROM ocaml/opam2:4.06
USER root USER root
# Add contents of the current directory to /ligo where it can be
# accessed when building the image.
#
# This is useful when building either locally, or on the CI
# because the currently checkout out version (from git) will be used
# to build the image
ADD . /ligo
# Set the current working directory to /ligo for
# the upcoming scripts
WORKDIR /ligo
# Setup a custom opam repository where ligo is published # Setup a custom opam repository where ligo is published
RUN git clone https://gitlab.com/ligolang/ligo.git RUN sh scripts/setup_ligo_opam_repository.sh
RUN (cd ligo; vendors/opam-repository-tools/rewrite-local-opam-repository.sh)
RUN opam repo add ligo-opam-repository ./ligo/vendors/ligo-opam-repository-local-generated/
RUN opam update ligo-opam-repository
# Install required native dependencies # Install required native dependencies
RUN apt-get -y install \ RUN sh scripts/install_native_dependencies.sh
libev-dev \
perl \
pkg-config \
libgmp-dev \
libhidapi-dev \
m4
# Install ligo
RUN opam update RUN opam update
RUN cd ligo/src && \ # Install ligo
opam install . --yes RUN sh scripts/install_ligo_with_dependencies.sh
RUN eval $(opam env)
# Use the ligo binary as a default command # Use the ligo binary as a default command
ENTRYPOINT [ "/home/opam/.opam/4.06/bin/ligo" ] ENTRYPOINT [ "/home/opam/.opam/4.06/bin/ligo" ]

View File

@ -1,2 +0,0 @@
#!/bin/bash
docker run -it -v $PWD:$PWD -w $PWD marigold/ligo $@

1
scripts/build_docker_image.sh Executable file
View File

@ -0,0 +1 @@
docker build -t ligolang/ligo -f docker/Dockerfile .

View File

@ -0,0 +1 @@
cd src && opam install . --yes

View File

@ -0,0 +1,7 @@
apt-get -y install \
libev-dev \
perl \
pkg-config \
libgmp-dev \
libhidapi-dev \
m4

12
docker/installer.sh → scripts/installer.sh Normal file → Executable file
View File

@ -1,16 +1,20 @@
#!/bin/bash #!/bin/bash
# You can run this installer like this: # You can run this installer like this:
# curl https://gitlab.com/gabriel.alfour/ligo/blob/master/docker/installer.sh | bash # curl https://gitlab.com/ligolang/ligo/blob/master/scripts/installer.sh | bash
# Make sure the marigold/ligo image is published at docker hub first # Make sure the marigold/ligo image is published at docker hub first
set -euET -o pipefail
echo "Installing LIGO" echo "Installing LIGO"
# Install the ligo.sh from master # Install the ligo.sh from master
wget https://gitlab.com/gabriel.alfour/ligo/blob/master/docker/ligo.sh wget https://gitlab.com/ligolang/ligo/blob/master/scripts/ligo.sh
# Copy the exucutable to the appropriate directory # Copy the exucutable to the appropriate directory
sudo cp ligo.sh /usr/local/bin/ligo sudo cp ligo.sh /usr/local/bin/ligo
sudo chmod +x /usr/local/bin/ligo sudo chmod +x /usr/local/bin/ligo
rm ligo.sh rm ligo.sh
# Pull the docker image used by ligo.sh
docker pull ligolang/ligo:latest
# Installation finished, try running 'ligo' from your CLI # Installation finished, try running 'ligo' from your CLI
echo "Installation successfull, try running 'ligo' now. \n" echo "Installation successful, try to run 'ligo --help' now. \n"

2
scripts/ligo.sh Executable file
View File

@ -0,0 +1,2 @@
#!/bin/bash
docker run -it -v "$PWD":"$PWD" -w "$PWD" ligolang/ligo:latest "$@"

View File

@ -0,0 +1,3 @@
vendors/opam-repository-tools/rewrite-local-opam-repository.sh
opam repo add ligo-opam-repository ./vendors/ligo-opam-repository-local-generated
opam update ligo-opam-repository