diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 3c6662bad20deeeb0dd44f09bba6cee756f6c7fa..7932da9e2cd10c73baf2eb6f5b8f7c1beea82596 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -7,6 +7,8 @@ variables:
 stages:
   - build
   - test
+  - release
+ 
 
 build_and_test:
   stage: build
@@ -24,3 +26,13 @@ test_opam_test:
     - opam update
     - opam depext lutils -y
     - opam install lutils -y
+
+release:
+  before_script:
+    - yarn install --frozen-lockfile
+  image: node:8
+  only:
+    - master
+  script:
+    - $(yarn bin)/semantic-release-gitlab  --preset eslint
+  stage: release
diff --git a/Makefile.dev b/Makefile.dev
index ea7200e7601cc6ba7dd79d022fb9eaa652c7f1cd..17584c4f83e35f6e51508c68303fcbb331383c90 100644
--- a/Makefile.dev
+++ b/Makefile.dev
@@ -18,6 +18,7 @@
 
 uv:update_version
 update_version:
+	git pull # to get the release tags!
 	rm -f src/lutilsVersion.ml
 	make src/lutilsVersion.ml
 	cp _oasis _oasis.save
diff --git a/_oasis b/_oasis
index d9d6c1bbd8bccfe894b78053e6a135a80ccd5bbc..52f2656d4533f50978d26cd62a3daa928d0750f9 100644
--- a/_oasis
+++ b/_oasis
@@ -1,6 +1,6 @@
 OASISFormat: 0.4
 Name:        lutils
-Version:     1.48
+Version:     1.48.0
 Authors:     Erwan Jahier
 Maintainers: erwan.jahier@imag.fr
 License:     CeCILL
diff --git a/doc/version.tex b/doc/version.tex
index 3d8f868e861270ee0dc7daeb358111e4a12006fc..b1fc5d76a410d39828691721ac0c5e2a63eca69e 100644
--- a/doc/version.tex
+++ b/doc/version.tex
@@ -1,4 +1,4 @@
-\newcommand{\version}{1.48}
-\newcommand{\sha}{1e357b2}
+\newcommand{\version}{1.48.0}
+\newcommand{\sha}{75fb1fe}
 \newcommand{\versionname}{none}
-\newcommand{\versiondate}{18-10-18}
+\newcommand{\versiondate}{15-01-19}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000000000000000000000000000000000000..1ca5a05a34701d3032ed0bf41f89a1a89198808a
--- /dev/null
+++ b/package.json
@@ -0,0 +1,24 @@
+{
+  "name": "lutils",
+  "version": "1.48.0",
+  "description": "Tools and libs shared by Verimag/synchronous tools (lustre, lutin, rdbg)",
+  "main": "index.js",
+  "scripts": {
+    "test": "make test"
+  },
+  "repository": {
+    "type": "git",
+    "url": "https://gricad-gitlab.univ-grenoble-alpes.fr/verimag/synchrone/lutils.git"
+},
+  "keywords": [
+    "synchronous languages",
+    "reactive programs",
+    "test"
+  ],
+  "author": "Erwan Jahier",
+  "license": "CeCILL",
+  "devDependencies": {
+    "semantic-release-gitlab": "^7.1.1",
+    "semantic-release-gitlab-releaser": "^5.1.1"
+  }
+}
diff --git a/setup.ml b/setup.ml
index 523f74ef3e353190e3546a0d071a97576b32dadc..d1b0aa0f37be48ade71fc675428bedfdd9306d4b 100644
--- a/setup.ml
+++ b/setup.ml
@@ -1,7 +1,7 @@
 (* setup.ml generated for the first time by OASIS v0.4.10 *)
 
 (* OASIS_START *)
-(* DO NOT EDIT (digest: 165b8ff790ff149fb4ea96afed869f1f) *)
+(* DO NOT EDIT (digest: 857eb6c300e70d88d36968f1777aca19) *)
 (*
    Regenerated by OASIS v0.4.11
    Visit http://oasis.forge.ocamlcore.org for more information and
@@ -6871,7 +6871,7 @@ let setup_t =
        {
           oasis_version = "0.4";
           ocaml_version = Some (OASISVersion.VGreaterEqual "4.02");
-          version = "1.48";
+          version = "1.48.0";
           license =
             OASISLicense.DEP5License
               (OASISLicense.DEP5Unit
@@ -7272,7 +7272,7 @@ let setup_t =
        };
      oasis_fn = Some "_oasis";
      oasis_version = "0.4.11";
-     oasis_digest = Some "\180;n\0216^d\220\199\217\164\169[-\003\170";
+     oasis_digest = Some "\241T\201v&\234\146\007{\148mSx\019\232\156";
      oasis_exec = None;
      oasis_setup_args = [];
      setup_update = false
diff --git a/src/META b/src/META
index 3c05ca88eede8960cee961b94b41d45d49080a83..4ddecc96b785887734ba0691bbd8f7bcf61b9e59 100644
--- a/src/META
+++ b/src/META
@@ -1,6 +1,6 @@
 # OASIS_START
-# DO NOT EDIT (digest: c22b7c3da2fdf3698667b5855935852c)
-version = "1.48"
+# DO NOT EDIT (digest: 50b938524723b35f9aa919ea6e9c32bd)
+version = "1.48.0"
 description = "shared by Verimag/synchronous tools (lustre, lutin, rdbg)."
 requires = "unix str camlp4 num"
 archive(byte) = "lutils.cma"
diff --git a/src/lutilsVersion.ml b/src/lutilsVersion.ml
index 0c6a7d5d0a631fa3e2e815206cc45035ea54c0fe..ac49396dad24722d8ecfc235b38d0f6fc853ddd2 100644
--- a/src/lutilsVersion.ml
+++ b/src/lutilsVersion.ml
@@ -1,2 +1,2 @@
-let str="1.48"
-let sha="1e357b2"
+let str="1.48.0"
+let sha="75fb1fe"