diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..3322dd02054662afe4ddd678f467f192d43eaa3e
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,69 @@
+# CI pipeline configuration
+stages:
+   - build
+   - run
+   - test
+
+building_stage:
+   stage: build
+   allow_failure: false
+   artifacts:
+      paths:
+         - build/cluster/*
+	 - build/sphere/*
+	 - build/trapping/*
+      exclude:
+         - ".git*"
+	 - ".git/**/*"
+      expire_in: 2 hours
+   script:
+      # bash commands to be executed
+      - pwd
+      - hostname
+      - echo $CI_COMMIT_SHA
+      - echo $CI_COMMIT_BRANCH
+      - cd src
+      - echo "Running make"
+      - make
+
+running_stage:
+   stage: run
+   allow_failure: false
+   needs:
+      - job: building_stage
+   artifacts:
+      paths:
+         - build/cluster/*
+	 - build/sphere/*
+	 - build/trapping/*
+      exclude:
+         - ".git*"
+	 - ".git/**/*"
+      expire_in: 2 hours
+   script:
+      # bash commands to be executed
+      - pwd
+      - hostname
+      - echo $CI_COMMIT_SHA
+      - echo $CI_COMMIT_BRANCH
+      - cd build/sphere
+      - echo "Running SPH"
+      - chmod +x edfb sph np_sphere
+      - ./edfb
+      - ./sph
+      - echo "Running np_sphere"
+      - ./np_sphere
+      - cd ../cluster
+      - echo "Running CLU"
+      - chmod +x edfb clu np_cluster
+      - ./edfb
+      - ./clu
+      - echo "Running np_cluster"
+      - ./np_cluster
+      
+testing_stage:
+   stage: test
+   allow_failure: true
+   needs:
+      - job: running_stage
+      
\ No newline at end of file