-
Notifications
You must be signed in to change notification settings - Fork 0
/
.gitlab-ci.yml
136 lines (125 loc) · 5.16 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
125
126
127
128
129
130
131
132
133
134
135
136
# This file is a template, and might need editing before it works on your project.
# 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/index.html#stages
#
# You can copy and paste this template into a new `.gitlab-ci.yml` file.
# You should not add this template to an existing `.gitlab-ci.yml` file by using the `include:` keyword.
#
# 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
variables:
MODULE_NAME: 'globalTimeStepping'
GCCVERSION: "13"
BUILD_IMAGE: "$CI_REGISTRY/containers/chem:4.0-p10-ata-gcc${GCCVERSION}"
VERSION: ${CI_COMMIT_TAG}
PACKAGE_REGISTRY_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${MODULE_NAME}/${VERSION}"
default:
tags:
- linux
stages: # List of stages for jobs, and their order of execution
- build
- quality_check
- upload
- release
build_module_openmpi:
stage: build
image: "${BUILD_IMAGE}-openmpi"
script:
- whoami
- pwd
- ls -lh
- env
- scl enable gcc-toolset-${GCCVERSION} 'bash ci/build_module'
- mkdir ${MODULE_NAME}
- cp ${MODULE_NAME}_m.so ${MODULE_NAME}
- tar zcvf ${MODULE_NAME}-${VERSION}-build-openmpi.tar.gz ${MODULE_NAME}
# Use artifacts to return logs and other files to GitLab (if necessary)
artifacts:
paths:
- ${MODULE_NAME}-${VERSION}-build-openmpi.tar.gz
build_module_mpich:
stage: build
image: "${BUILD_IMAGE}-mpich"
script:
- whoami
- pwd
- ls -lh
- env
- scl enable gcc-toolset-${GCCVERSION} 'bash ci/build_module'
- mkdir ${MODULE_NAME}
- cp ${MODULE_NAME}_m.so ${MODULE_NAME}
- tar zcvf ${MODULE_NAME}-${VERSION}-build-mpich.tar.gz ${MODULE_NAME}
# Use artifacts to return logs and other files to GitLab (if necessary)
artifacts:
paths:
- ${MODULE_NAME}-${VERSION}-build-mpich.tar.gz
# This will upload a tarball with the CHAR install to the package registry, but only when changes are merged into main
# See: https://docs.gitlab.com/ee/user/project/releases/release_fields.html#release-assets
upload_package:
stage: upload
rules:
- if: $CI_COMMIT_TAG =~ /\d+/
script:
- |
ls -lh
echo $PACKAGE_REGISTRY_URL
curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file ${MODULE_NAME}-${VERSION}-build-openmpi.tar.gz "${PACKAGE_REGISTRY_URL}/${MODULE_NAME}-${VERSION}-build-openmpi.tar.gz"
curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file ${MODULE_NAME}-${VERSION}-build-mpich.tar.gz "${PACKAGE_REGISTRY_URL}/${MODULE_NAME}-${VERSION}-build-mpich.tar.gz"
upload_distribution:
stage: upload
rules:
# only run this job if a tag is created with just a version number
- if: $CI_COMMIT_TAG =~ /\d+/
script:
- |
ls -lh
mkdir ${MODULE_NAME}-${VERSION}
cp README.md ${MODULE_NAME}-${VERSION}/
cp Makefile ${MODULE_NAME}-${VERSION}/Makefile
cp *.loci ${MODULE_NAME}-${VERSION}/
cp LICENSE ${MODULE_NAME}-${VERSION}/
tar zcvf ${MODULE_NAME}-${VERSION}.tar.gz ${MODULE_NAME}-${VERSION}
echo $PACKAGE_REGISTRY_URL
curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file ${MODULE_NAME}-${VERSION}.tar.gz "${PACKAGE_REGISTRY_URL}/${MODULE_NAME}-${VERSION}.tar.gz"
# This will create a release when main is tagged with a version number
release_job:
stage: release
image: registry.gitlab.com/gitlab-org/release-cli:latest
rules:
- if: $CI_COMMIT_TAG =~ /\d+/ # only run this job if a tag is created with just a version number
script:
- echo "running release_job for ${VERSION}"
release:
tag_name: $CI_COMMIT_TAG
description: ${CI_COMMIT_REF_NAME}-${CI_JOB_ID}
ref: $CI_COMMIT_SHA
assets:
links:
- name: ${MODULE_NAME}-${VERSION}-build-openmpi.tar.gz
url: "${PACKAGE_REGISTRY_URL}/${MODULE_NAME}-${VERSION}-build-openmpi.tar.gz"
filepath: "/${MODULE_NAME}-${VERSION}-build-openmpi.tar.gz"
link_type: package
- name: ${MODULE_NAME}-${VERSION}-build-mpich.tar.gz
url: "${PACKAGE_REGISTRY_URL}/${MODULE_NAME}-${VERSION}-build-mpich.tar.gz"
filepath: "/${MODULE_NAME}-${VERSION}-build-mpich.tar.gz"
link_type: package
- name: ${MODULE_NAME}-${VERSION}.tar.gz
url: "${PACKAGE_REGISTRY_URL}/${MODULE_NAME}-${VERSION}.tar.gz"
filepath: "/${MODULE_NAME}-${VERSION}.tar.gz"
link_type: package
# Code and security scanning jobs
sast:
stage: quality_check
artifacts:
paths:
- gl-sast-report.*
include:
- template: Jobs/SAST.gitlab-ci.yml # https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Jobs/SAST.gitlab-ci.yml