.gitlab-ci.yml 4.52 KB
Newer Older
1
variables:
2
  RSYNC_OPTS: --recursive --ignore-missing-args --chown ${DEPLOY_USER}:${DEPLOY_USER}
3
4
5
6
  DOCKER_TAG: ${CI_COMMIT_REF_NAME}
  DOCKER_TAG_DEV: ${CI_COMMIT_REF_NAME}
  DOCKER_IMAGE: rwthacs/dpsim
  DOCKER_IMAGE_DEV: rwthacs/dpsim-dev
7
8

before_script:
Steffen Vogel's avatar
fix CI    
Steffen Vogel committed
9
  - git config --local core.longpaths true
10
  - git submodule sync --recursive
11
  - git submodule update --init --recursive
12

13
14
15
stages:
  - prepare
  - build
Steffen Vogel's avatar
Steffen Vogel committed
16
  - test
Markus Mirz's avatar
fix ci    
Markus Mirz committed
17
  - generate
Markus Mirz's avatar
Markus Mirz committed
18
  - deploy
19
  #- post-all
20
21
22
23

docker:
  stage: prepare
  script:
24
25
26
27
    - docker build
        --file Packaging/Docker/Dockerfile.dev
        --tag ${DOCKER_IMAGE_DEV}:${DOCKER_TAG_DEV}
        --tag ${DOCKER_IMAGE_DEV}:latest .
28
  tags:
Markus Mirz's avatar
Markus Mirz committed
29
    - shell
Steffen Vogel's avatar
Steffen Vogel committed
30
    - linux
31

Steffen Vogel's avatar
fix CI    
Steffen Vogel committed
32
build:linux:
Markus Mirz's avatar
Markus Mirz committed
33
  stage: build
34
  script:
35
    - mkdir -p build
Markus Mirz's avatar
Markus Mirz committed
36
    - cd build
37
    - cmake ..
Steffen Vogel's avatar
Steffen Vogel committed
38
    - make -j 32
Markus Mirz's avatar
Markus Mirz committed
39
  image: ${DOCKER_IMAGE_DEV}:${DOCKER_TAG_DEV}
40
41
42
43
  cache:
    paths:
      - build
    key: build-linux
44
45
  artifacts:
    paths:
Markus Mirz's avatar
Markus Mirz committed
46
      - build
47
  tags:
Georg Martin Reinke's avatar
Georg Martin Reinke committed
48
49
    - docker

Steffen Vogel's avatar
Steffen Vogel committed
50
51
test:pytest:
  stage: test
Steffen Vogel's avatar
Steffen Vogel committed
52
53
  variables:
    PYTHONPATH: "build/Source/Python:Source/Python"
Steffen Vogel's avatar
Steffen Vogel committed
54
  script:
Steffen Vogel's avatar
Steffen Vogel committed
55
    - pytest -v Examples/CIM/test_CIM.yml
Markus Mirz's avatar
Markus Mirz committed
56
57
    - pytest -v Examples/Cxx/test_Circuits.yml
    - pytest -v Examples/Cxx/test_RealTime.yml
58
59
60
61
62
63
    #- pytest -v Examples/Cxx/test_Shmem.yml
    - pytest -v Examples/Python/Base
    - pytest -v Examples/Python/Circuits
    - pytest -v Examples/Python/RealTime
    #- pytest -v Examples/Python/Shmem

Steffen Vogel's avatar
Steffen Vogel committed
64
65
66
67
68
69
  image: ${DOCKER_IMAGE_DEV}:${DOCKER_TAG_DEV}
  dependencies:
    - build:linux
  tags:
    - docker

Markus Mirz's avatar
fix ci    
Markus Mirz committed
70
71
generate:docs:
  stage: generate
Georg Martin Reinke's avatar
Georg Martin Reinke committed
72
  script:
Steffen Vogel's avatar
Steffen Vogel committed
73
74
    - make -C build docs
    - make -C build docs_cxx
Steffen Vogel's avatar
fix CI    
Steffen Vogel committed
75
  image: ${DOCKER_IMAGE_DEV}:${DOCKER_TAG_DEV}
Steffen Vogel's avatar
Steffen Vogel committed
76
  dependencies:
Steffen Vogel's avatar
fix CI    
Steffen Vogel committed
77
    - build:linux
Georg Martin Reinke's avatar
Georg Martin Reinke committed
78
79
  artifacts:
    paths:
Markus Mirz's avatar
Markus Mirz committed
80
81
      - build/Documentation/html
      - build/Documentation/Cxx/html
Georg Martin Reinke's avatar
Georg Martin Reinke committed
82
83
  tags:
    - docker
84

Markus Mirz's avatar
fix ci    
Markus Mirz committed
85
86
generate:packages:
  stage: generate
Steffen Vogel's avatar
Steffen Vogel committed
87
  script:
Steffen Vogel's avatar
Steffen Vogel committed
88
    - make -C build package
Steffen Vogel's avatar
Steffen Vogel committed
89
90
91
92
93
  only:
    - tags
  tags:
    - docker
  image: ${DOCKER_IMAGE_DEV}:${DOCKER_TAG_DEV}
Steffen Vogel's avatar
Steffen Vogel committed
94
  dependencies:
Steffen Vogel's avatar
fix CI    
Steffen Vogel committed
95
    - build:linux
Steffen Vogel's avatar
Steffen Vogel committed
96
97
98
99
100
  artifacts:
    paths:
      - build/*.rpm
      - build/*.tar.gz

101
102
103
build:docker:
  stage: build
  script:
104
105
106
    - docker build 
        --file Packaging/Docker/Dockerfile
        --build-arg DOCKER_TAG=${DOCKER_TAG}
107
108
109
110
        --build-arg CI=1
        --build-arg CI_COMMIT_SHA=${CI_COMMIT_SHA}
        --build-arg CI_COMMIT_REF_NAME=${CI_COMMIT_REF_NAME}
        --build-arg CI_COMMIT_TAG=${CI_COMMIT_TAG}
111
112
        --tag ${DOCKER_IMAGE}:${DOCKER_TAG}
        --tag ${DOCKER_IMAGE}:latest .
113
114
  tags:
    - shell
Steffen Vogel's avatar
Steffen Vogel committed
115
    - linux
Markus Mirz's avatar
Markus Mirz committed
116
117
  only:
    - tags
118

Markus Mirz's avatar
Markus Mirz committed
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#test:jupyter:
#  stage: test
#  variables:
#    PYTHONPATH: "build/Source/Python:Source/Python"
#  script:
#    - jupyter nbconvert --to notebook --execute Examples/Notebooks/Quickstart\ Guide.ipynb
#    - jupyter nbconvert --to notebook --execute Examples/Notebooks/CS_R2CL.ipynb
#    - jupyter nbconvert --to notebook --execute Examples/Notebooks/WSCC_9-bus_dyn_switch.ipynb
#  image: ${DOCKER_IMAGE_DEV}:${DOCKER_TAG}
#  dependencies:
#    - build:linux
#  artifacts:
#    paths:
#      - build/Examples/Notebooks/
#  tags:
#    - docker
Steffen Vogel's avatar
Steffen Vogel committed
135

Markus Mirz's avatar
Markus Mirz committed
136
deploy:docker:
137
138
  stage: deploy
  script:
139
140
    - docker push ${DOCKER_IMAGE_DEV}:${DOCKER_TAG_DEV}
    - docker push ${DOCKER_IMAGE_DEV}:latest
141
    - docker push ${DOCKER_IMAGE}:${DOCKER_TAG}
142
    - docker push ${DOCKER_IMAGE}:latest
143
144
145
146
  dependencies:
    - build:docker
  tags:
    - shell
Steffen Vogel's avatar
Steffen Vogel committed
147
    - linux
Steffen Vogel's avatar
Steffen Vogel committed
148
149
  only:
    - tags
150

151
deploy:docs:
Markus Mirz's avatar
Markus Mirz committed
152
153
  stage: deploy
  script:
154
    - ssh ${DEPLOY_USER}@${DEPLOY_HOST} mkdir -p ${DEPLOY_PATH}/doc/${CI_BUILD_REF_NAME}/{sphinx,doxygen}
155
156
    - rsync ${RSYNC_OPTS} --delete build/Documentation/html/ ${DEPLOY_USER}@${DEPLOY_HOST}:${DEPLOY_PATH}/doc/${CI_BUILD_REF_NAME}/sphinx
    - rsync ${RSYNC_OPTS} --delete build/Documentation/Cxx/html/ ${DEPLOY_USER}@${DEPLOY_HOST}:${DEPLOY_PATH}/doc/${CI_BUILD_REF_NAME}/doxygen
157
  dependencies:
Markus Mirz's avatar
fix ci    
Markus Mirz committed
158
    - generate:docs
159
160
161
162
163
164
  only:
    - tags
    - master
    - development
  tags:
    - fein-deploy
Markus Mirz's avatar
Markus Mirz committed
165
    - shell
Steffen Vogel's avatar
Steffen Vogel committed
166
    - linux
Steffen Vogel's avatar
Steffen Vogel committed
167
168
169
170
171
172
173
174

deploy:packages:
  stage: deploy
  script:
    - rsync ${RSYNC_OPTS} build/*.rpm ${DEPLOY_USER}@${DEPLOY_HOST}:/var/www/packages/redhat/x86_64
    - rsync ${RSYNC_OPTS} build/*.tar.gz ${DEPLOY_USER}@${DEPLOY_HOST}:/var/www/dpsim/src
    - ssh ${DEPLOY_USER}@${DEPLOY_HOST} createrepo /var/www/packages/redhat
  dependencies:
Markus Mirz's avatar
fix ci    
Markus Mirz committed
175
    - generate:packages
Steffen Vogel's avatar
Steffen Vogel committed
176
177
178
179
180
  only:
    - tags
  tags:
    - fein-deploy
    - shell
Steffen Vogel's avatar
Steffen Vogel committed
181
    - linux
Steffen Vogel's avatar
Steffen Vogel committed
182

183
# We run the windows build at last as it takes ages to finish
Markus Mirz's avatar
Markus Mirz committed
184
185
186
187
188
189
190
191
192
#build:windows:
#  stage: post-all
#  script:
#    - rmdir build /s
#    - mkdir build
#    - cd build
#    - cmake -G "Visual Studio 15 2017 Win64" ..
#    - cmake --build .
#  tags:
Steffen Vogel's avatar
Steffen Vogel committed
193
#    - windows