Skip to content
Snippets Groups Projects
.gitlab-ci.yml 4.68 KiB
Newer Older
Piotr Gawron's avatar
Piotr Gawron committed
image: node

  - packaging
Piotr Gawron's avatar
Piotr Gawron committed

variables:
  POSTGRES_DB: map_viewer
  POSTGRES_USER: map_viewer
  POSTGRES_PASSWORD: "123qweasdzxc"


Piotr Gawron's avatar
Piotr Gawron committed
test_frontend:
Piotr Gawron's avatar
Piotr Gawron committed
  script:
    - cd frontend-js
    - npm install  
Piotr Gawron's avatar
Piotr Gawron committed
    - npm test

build_war:
  image: debian
Piotr Gawron's avatar
Piotr Gawron committed
  tags:
     - privileged
  artifacts:
    paths:
      - minerva.war
  script:
    - apt-get install -y curl sudo gnupg git openjdk-8-jdk ant maven
    - curl -sL https://deb.nodesource.com/setup_9.x | sudo -E bash -
    - sudo apt-get install -y nodejs
    - ant maven-build
    - cp web/target/web-1.0.war minerva.war

build_debian_package:
  image: debian
  stage: packaging
  tags:
     - privileged
  artifacts:
    paths:
      - "debian/*.deb"
  script:
    - apt-get install -y curl sudo gnupg git openjdk-8-jdk ant maven dh-make build-essential lintian devscripts xsltproc fakeroot xsltproc docbook-xsl
    - curl -sL https://deb.nodesource.com/setup_9.x | sudo -E bash -
    - sudo apt-get install -y nodejs
    - export DEBFULLNAME="Piotr Gawron"
    - export DEBEMAIL="piotr.gawron@uni.lu"
  image: debian
  stage: test
Piotr Gawron's avatar
Piotr Gawron committed
# we need to run it in privileged mode due to: https://stackoverflow.com/questions/29683231/tomcat7-fail-to-start-inside-ubuntu-docker-container
  tags:
     - privileged
  services:
     - name: piotrgawron/debian-repo
       alias: debian-repo
  dependencies:
     - build_debian_package
  script:
     - apt-get update
     - apt-get install -y ssh software-properties-common dirmngr wget curl
     - debian_file=$(ls debian/*.deb)
Piotr Gawron's avatar
Piotr Gawron committed
     - echo "PUT $debian_file /docker/incoming" | sftp -o StrictHostKeyChecking=no user@debian-repo
     - ssh root@debian-repo /usr/local/sbin/reprepro-import
     - apt-add-repository "deb http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main"
     - apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886
     - apt-add-repository "deb http://debian-repo/ unstable main"
     - apt-get update
Piotr Gawron's avatar
Piotr Gawron committed
# auto accept oracle license
     - echo debconf shared/accepted-oracle-license-v1-1 select true | debconf-set-selections
Piotr Gawron's avatar
Piotr Gawron committed
#hacky way of installing minerva on docker - by default rc-invoke is preventing services changes on docker
     - mv /usr/sbin/policy-rc.d /usr/sbin/policy-rc.d.backup
     - mv Docker/policy-rc.d /usr/sbin/policy-rc.d
     - apt-get install -y --allow-unauthenticated minerva
     - mv /usr/sbin/policy-rc.d.backup /usr/sbin/policy-rc.d 
     - service tomcat8 start
Piotr Gawron's avatar
Piotr Gawron committed
#we need to wait a bit for tomcat start
     - sleep 15
     - wget http://localhost:8080/minerva/
Piotr Gawron's avatar
Piotr Gawron committed
#test if we can login and list projects
     - test 200 = $(curl --write-out %{http_code} --silent --output /dev/null -c cookie.txt http://localhost:8080/minerva/api/doLogin)
     - test 200 = $(curl --write-out %{http_code} --silent --output /dev/null --cookie cookie.txt http://localhost:8080/minerva/api/projects/)

Piotr Gawron's avatar
Piotr Gawron committed
build_rpm:
  image: centos:7
  stage: packaging
Piotr Gawron's avatar
Piotr Gawron committed
  dependencies:
    - build_war
Piotr Gawron's avatar
Piotr Gawron committed
  tags:
     - privileged
  artifacts:
    paths:
      - "rpm/rpmbuildtemp/RPMS/noarch/minerva-*.rpm"
  script:
    - yum -y install rpmdevtools unzip
    - rpm/buildrpm.sh minerva.war
Piotr Gawron's avatar
Piotr Gawron committed
rpmlint:
  image: centos:7
  stage: test
  dependencies:
    - build_rpm
  tags:
     - privileged
Piotr Gawron's avatar
Piotr Gawron committed
  script:
    - yum -y install rpmlint
    - rpmlint rpm/rpmbuildtemp/RPMS/noarch/minerva-*.rpm
test_deploy_with_db_without_superadmin_rights:
  image: tomcat:7-jre8
  stage: test
  services:
    - postgres:9.6
  dependencies:
    - build_war
  tags:
    - privileged
  only:
    - tags
  script:
    - apt-get update
    - apt-get install -y postgresql-client
    - mkdir /etc/minerva
    - echo "database.uri=jdbc:postgresql://postgres:5432/test" > /etc/minerva/db.properties
    - echo "database.username=test" >> /etc/minerva/db.properties
    - echo "database.password=test" >> /etc/minerva/db.properties
    - echo "CREATE DATABASE test;CREATE USER test WITH ENCRYPTED PASSWORD 'test';GRANT ALL PRIVILEGES ON DATABASE test TO test;" >tmp.sql
    - PGPASSWORD=$POSTGRES_PASSWORD psql -h postgres -U $POSTGRES_USER $POSTGRES_DB < tmp.sql
    - wget https://git-r3lab.uni.lu/minerva/core/-/jobs/32480/artifacts/raw/minerva.war -O /usr/local/tomcat/webapps/minerva.war
    - /usr/local/tomcat/bin/startup.sh
    - sleep 15
#test if we can login and list projects
    - test 200 = $(curl --write-out %{http_code} --silent --output /dev/null -c cookie.txt http://localhost:8080/minerva/api/doLogin)
    - test 200 = $(curl --write-out %{http_code} --silent --output /dev/null --cookie cookie.txt http://localhost:8080/minerva/api/projects/)