diff --git a/.dir-locals.el b/.dir-locals.el new file mode 100644 index 000000000..484dee737 --- /dev/null +++ b/.dir-locals.el @@ -0,0 +1,5 @@ +;;; Directory Local Variables +;;; For more information see (info "(emacs) Directory Variables") + +((nil + (indent-tabs-mode))) diff --git a/.eslintrc.json b/.eslintrc.json index 6fcef7c27..6fcc6b0fb 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -23,6 +23,7 @@ "no-extra-semi": "off", "semi": ["error", "always"], "comma-dangle": ["error", "always-multiline"], - "quotes": ["error", "single"] + "quotes": ["error", "single"], + "no-var": "error" } } diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b955152b5..5ba71103e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,7 +1,7 @@ default: image: - name: fpco/stack-build:lts-15.0 - cache: + name: fpco/stack-build:lts-16.11 + cache: &global_cache paths: - node_modules - .stack @@ -14,6 +14,12 @@ variables: POSTGRES_DB: uniworx_test POSTGRES_USER: uniworx POSTGRES_PASSWORD: uniworx + MINIO_ACCESS_KEY: gOel7KvadwNKgjjy + MINIO_SECRET_KEY: ugO5pkEla7F0JW9MdPwLi4MWLT5ZbqAL + UPLOAD_S3_HOST: localhost + UPLOAD_S3_PORT: 9000 + UPLOAD_S3_KEY_ID: gOel7KvadwNKgjjy + UPLOAD_S3_KEY: ugO5pkEla7F0JW9MdPwLi4MWLT5ZbqAL N_PREFIX: "${HOME}/.n" stages: @@ -30,9 +36,11 @@ npm install: - ./.npmrc.gup - npm install before_script: &npm + - rm -rvf /etc/apt/sources.list /etc/apt/sources.list.d + - install -v -T -m 0644 ${APT_SOURCES_LIST} /etc/apt/sources.list - apt-get update -y - npm install -g n - - n 13.5.0 + - n 14.8.0 - export PATH="${N_PREFIX}/bin:$PATH" - npm install -g npm - hash -r @@ -40,9 +48,6 @@ npm install: - install -v -m 0700 -d ~/.ssh - install -v -T -m 0644 ${SSH_KNOWN_HOSTS} ~/.ssh/known_hosts - install -v -T -m 0400 ${SSH_DEPLOY_KEY} ~/.ssh/deploy && echo "IdentityFile ~/.ssh/deploy" >> ~/.ssh/config; - after_script: - - zip -qr node_modules.zip node_modules - - du -hs node_modules node_modules.zip artifacts: paths: - node_modules/ @@ -83,18 +88,27 @@ frontend:lint: interruptible: true yesod:build:dev: + services: &build-services + - name: postgres:10.10 + alias: postgres + - name: minio/minio:RELEASE.2020-08-27T05-16-20Z + alias: minio + command: ["minio", "server", "/data"] + stage: yesod:build script: - - stack build --copy-bins --local-bin-path $(pwd)/bin --fast --flag uniworx:-library-only --flag uniworx:dev --flag uniworx:pedantic + - stack build --test --copy-bins --local-bin-path $(pwd)/bin --fast --flag uniworx:-library-only --flag uniworx:dev --flag uniworx:pedantic --no-strip needs: - frontend:build - before_script: + before_script: &haskell + - rm -rvf /etc/apt/sources.list /etc/apt/sources.list.d + - install -v -T -m 0644 ${APT_SOURCES_LIST} /etc/apt/sources.list - apt-get update -y - - apt-get install -y --no-install-recommends locales-all - - apt-get install openssh-client -y + - apt-get install -y --no-install-recommends locales-all openssh-client git-restore-mtime - install -v -m 0700 -d ~/.ssh - install -v -T -m 0644 ${SSH_KNOWN_HOSTS} ~/.ssh/known_hosts - install -v -T -m 0400 ${SSH_DEPLOY_KEY} ~/.ssh/deploy && echo "IdentityFile ~/.ssh/deploy" >> ~/.ssh/config; + - git restore-mtime artifacts: paths: - bin/ @@ -110,18 +124,14 @@ yesod:build:dev: interruptible: true yesod:build: + services: *build-services + stage: yesod:build script: - - stack build --copy-bins --local-bin-path $(pwd)/bin --flag uniworx:-library-only --flag uniworx:-dev --flag uniworx:pedantic + - stack build --test --copy-bins --local-bin-path $(pwd)/bin --flag uniworx:-library-only --flag uniworx:-dev --flag uniworx:pedantic --no-strip needs: - frontend:build - before_script: - - apt-get update -y - - apt-get install -y --no-install-recommends locales-all - - apt-get install -y --no-install-recommends openssh-client - - install -v -m 0700 -d ~/.ssh - - install -v -T -m 0644 ${SSH_KNOWN_HOSTS} ~/.ssh/known_hosts - - install -v -T -m 0400 ${SSH_DEPLOY_KEY} ~/.ssh/deploy && echo "IdentityFile ~/.ssh/deploy" >> ~/.ssh/config; + before_script: *haskell artifacts: paths: - bin/ @@ -137,15 +147,20 @@ yesod:build: resource_group: ram frontend:test: + cache: + <<: *global_cache + policy: pull stage: test script: - npm run frontend:test needs: - npm install before_script: + - rm -rvf /etc/apt/sources.list /etc/apt/sources.list.d + - install -v -T -m 0644 ${APT_SOURCES_LIST} /etc/apt/sources.list - apt-get update -y - npm install -g n - - n 13.5.0 + - n 14.8.0 - export PATH="${N_PREFIX}/bin:$PATH" - npm install -g npm - hash -r @@ -155,101 +170,19 @@ frontend:test: retry: 2 interruptible: true -hlint:dev: - stage: lint - script: - - stack test --fast --flag uniworx:-library-only --flag uniworx:dev --flag uniworx:pedantic uniworx:test:hlint - needs: - - frontend:build - - yesod:build:dev # For caching - before_script: - - apt-get update -y - - apt-get install -y --no-install-recommends locales-all - dependencies: - - frontend:build - - only: - variables: - - $CI_COMMIT_REF_NAME !~ /^v[0-9].*/ - retry: 2 - interruptible: true - -yesod:test:dev: - services: - - name: postgres:10.10 - alias: postgres - - stage: test - script: - - stack test --coverage --fast --flag uniworx:-library-only --flag uniworx:dev --flag uniworx:pedantic --skip hlint - needs: - - frontend:build - - yesod:build:dev # For caching - before_script: - - apt-get update -y - - apt-get install -y --no-install-recommends locales-all - dependencies: - - frontend:build - - only: - variables: - - $CI_COMMIT_REF_NAME !~ /^v[0-9].*/ - retry: 2 - interruptible: true - -hlint: - stage: lint - script: - - stack test --flag uniworx:-library-only --flag uniworx:-dev --flag uniworx:pedantic uniworx:test:hlint - needs: - - frontend:build - - yesod:build # For caching - before_script: - - apt-get update -y - - apt-get install -y --no-install-recommends locales-all - dependencies: - - frontend:build - - only: - variables: - - $CI_COMMIT_REF_NAME =~ /^v[0-9].*/ - retry: 2 - interruptible: true - resource_group: ram - -yesod:test: - services: - - name: postgres:10.10 - alias: postgres - - stage: test - script: - - stack test --coverage --flag uniworx:-library-only --flag uniworx:-dev --flag uniworx:pedantic --skip hlint - needs: - - frontend:build - - yesod:build # For caching - before_script: - - apt-get update -y - - apt-get install -y --no-install-recommends locales-all - dependencies: - - frontend:build - - only: - variables: - - $CI_COMMIT_REF_NAME =~ /^v[0-9].*/ - retry: 2 - interruptible: true - resource_group: ram - deploy:uniworx3: + cache: {} stage: deploy + variables: + GIT_STRATEGY: none script: - - ssh -i ~/.ssh/id root@uniworx3.ifi.lmu.de