-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.gitlab-ci.yml
124 lines (105 loc) · 4.71 KB
/
.gitlab-ci.yml
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
# This file is a template, and might need editing before it works on your project.
# To contribute improvements to CI/CD templates, please follow the Development guide at:
# https://docs.gitlab.com/ee/development/cicd/templates.html
# This specific template is located at:
# https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Getting-Started.gitlab-ci.yml
# This is a sample GitLab CI/CD configuration file that should run without any modifications.
# It demonstrates a basic 3 stage CI/CD pipeline. Instead of real tests or scripts,
# it uses echo commands to simulate the pipeline execution.
#
# A pipeline is composed of independent jobs that run scripts, grouped into stages.
# Stages run in sequential order, but jobs within stages run in parallel.
#
# For more information, see: https://docs.gitlab.com/ee/ci/yaml/README.html#stages
image: timbru31/node-chrome:12-slim
variables:
FF_USE_FASTZIP: "true"
# Use TLS https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#tls-enabled
DOCKER_HOST: tcp://docker:2376
DOCKER_TLS_CERTDIR: "/certs"
BUILD_IMAGE: "jugit-registry.fz-juelich.de/satomi/segtrackui/node:12.18"
DEPLOY_IMAGE: "jugit-registry.fz-juelich.de/satomi/segtrackui/nginx:latest"
stages:
- testing
- versioning
- publish
install:
stage: testing
script:
- npm install -g @angular/cli@12.2.18 @ionic/cli@6.20.9
- npm ci
- ionic build
test:
stage: testing
before_script:
- echo $CI_BUILDS_DIR
- echo $PROJECT_FULL_PATH
- npm install -g @angular/cli@12.2.18 @ionic/cli@6.20.9
- npm ci
script:
- npm run test -- --no-watch --no-progress --browsers=ChromeHeadlessCI --code-coverage
coverage: '/Lines \W+: (\d+\.\d+)%.*/'
artifacts:
reports:
coverage_report:
coverage_format: cobertura
path: ./builds/cobertura.xml
#bump-version:
# image: python:3.8
# stage: versioning
# #extends: .deploy_common
# script:
# - set -e
# - pip install twine bump2version
# - git config --global user.email "${GITLAB_USER_EMAIL}"
# - git config --global user.name "${GITLAB_USER_NAME}"
# - git log
# # list tags
# - git tag
# - bump2version patch
# - cat .bumpversion.cfg
# # push version change but skip ci
# #- git remote set-url origin "https://${CI_PUSH_NAME}:${CI_PUSH_TOKEN}@jugit.fz-juelich.de/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}.git"
# #- git push -o ci.skip --tags origin HEAD:${CI_COMMIT_REF_NAME}
build-docker:
stage: publish
image: $CI_REGISTRY/satomi/segtrackui/docker:20.10.8
services:
- name: $CI_REGISTRY/satomi/segtrackui/docker:20.10.8-dind
alias: docker
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker pull $CI_REGISTRY/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/server:$CI_COMMIT_BRANCH || echo "Pulling existing image failed"
- docker build --cache-from $CI_REGISTRY/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/server:$CI_COMMIT_BRANCH -t $CI_REGISTRY/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/server:latest -t $CI_REGISTRY/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/server:$CI_COMMIT_SHORT_SHA -t $CI_REGISTRY/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/server:$CI_COMMIT_BRANCH -f docker/Dockerfile --build-arg BUILD_IMAGE=$BUILD_IMAGE --build-arg DEPLOY_IMAGE=$DEPLOY_IMAGE .
- docker push $CI_REGISTRY/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/server:$CI_COMMIT_SHORT_SHA
- docker push $CI_REGISTRY/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/server:$CI_COMMIT_BRANCH
- if [ "$CI_COMMIT_BRANCH" = "main" ]; then docker push $CI_REGISTRY/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/server:latest; fi
.deploy_common:
# only run on default branch
rules:
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
#build-job: # This job runs in the build stage, which runs first.
# stage: build
# extends: .pull_cached_node_modules
# script:
# - echo "Compiling the code..."
# - npm install -g @angular/cli @ionic/cli
# - ionic build
# - echo "Compile complete."
#unit-test-job: # This job runs in the test stage.
# stage: test # It only starts when the job in the build stage completes successfully.
# script:
# - echo "Running unit tests... This will take about 60 seconds."
# - sleep 60
# - echo "Code coverage is 90%"
#lint-test-job: # This job also runs in the test stage.
# stage: test # It can run at the same time as unit-test-job (in parallel).
# script:
# - echo "Linting code... This will take about 10 seconds."
# - sleep 10
# - echo "No lint issues found."
#deploy-job: # This job runs in the deploy stage.
# stage: deploy # It only runs when *both* jobs in the test stage complete successfully.
# script:
# - echo "Deploying application..."
# - echo "Application successfully deployed."