.gitlab-ci.yml 2.16 KB
Newer Older
zapashcanon's avatar
zapashcanon committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
stages:
  - build
  - image
  - deploy

# Define some conditions to run the whole pipeline
workflow:
  rules:
    - if: $CI_MERGE_REQUEST_ID                     # Run on MRs
    - if: $CI_COMMIT_TAG                           # Run on tags
    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH  # Run on master

# Customize the build rules and the artifacts here. You probably want to adjust
# "opam.locked"
# We define a cache in order to keep the switch with the dependencies installed,
# unless the opam.locked file has changed.
build:
  stage: build
  image: debian:buster
  before_script:
    - apt update
    - apt install -yqq --no-install-recommends ca-certificates curl opam git pkg-config m4
    - opam init --disable-sandboxing --bare -ya
    - opam switch create ocaml-base-compiler.4.12.0
    - eval "$(opam env)"
    - opam pin add . -y --no-action
    - opam install opam-depext
    - opam depext -y osh
    - opam install ./*.opam -y --deps-only --with-test --with-doc
  script:
    - opam exec -- dune build --profile release @all
    - opam exec -- dune runtest
zapashcanon's avatar
fix CI  
zapashcanon committed
33
    - mv _build/default/src/osh.exe .
zapashcanon's avatar
zapashcanon committed
34 35
  artifacts:
    paths:
zapashcanon's avatar
fix CI  
zapashcanon committed
36
      - osh.exe
zapashcanon's avatar
zapashcanon committed
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55

include:
  - project: 'OCamlPro/gitlab-deployments'
    ref: master
    file: deploy.yml

# Builds and pushes the Docker image using Kaniko
make-image:
  extends: .make-image  # defined in deploy.yml
  variables:
    DOCKERFILE: /kaniko/Dockerfile
    # don't need a local 'git clone'
    GIT_STRATEGY: "none"
  before_script:
    # Write the Dockerfile for the image we want to generate
    # Here we inherit from nginx and just add the contents of our web-app
    - |
      echo "\
      FROM bitnami/nginx:latest
zapashcanon's avatar
fix CI  
zapashcanon committed
56
      ADD osh.exe /opt/bitnami/nginx/sbin/nginx
zapashcanon's avatar
zapashcanon committed
57
      USER 0
zapashcanon's avatar
zapashcanon committed
58
      RUN apt update && apt install -yqq libev4 curl libcurl4 libcurl4-gnutls-dev
zapashcanon's avatar
zapashcanon committed
59 60 61 62 63 64 65 66 67 68 69 70
      USER 1001
      " > $DOCKERFILE

# Deployments are pre-defined in the "dev" environment; they will be stopped
# after 3 days unless they are on the default branch (master).

# To define production deployments, ensure the domain name is correct, and set
# the corresponding DNS record as "CNAME" to "a.ocaml.pro"
deploy-prod:
  extends: .deploy-prod
  variables:
    PUBLIC_HOST: osh.ocamlpro.com