@@ -21,7 +21,23 @@ app_name = eessi-bot-citc-aws
2121installation_id = 33078935
2222
2323# path to the private key that was generated when the GitHub App was registered
24- private_key = /mnt/shared/home/bot/eessi-bot-software-layer/eessi-bot-citc-aws-private-key.pem
24+ private_key = /mnt/shared/home/bot/eessi-bot-software-layer/eessi-bot-citc-aws.2023-01-12.private-key.pem
25+
26+
27+ [bot_control]
28+ # which GH accounts have the permission to send commands to the bot
29+ # if value is left/empty everyone can send commands
30+ # value can be a space delimited list of GH accounts
31+ command_permission = boegel trz42 bedroge
32+
33+ # format of the response when processing bot commands
34+ command_response_fmt =
35+ <details><summary>Updates by the bot instance <code>{app_name}</code>
36+ <em>(click for details)</em></summary>
37+
38+ {comment_response}
39+ {comment_result}
40+ </details>
2541
2642
2743[buildenv]
@@ -35,7 +51,7 @@ container_cachedir = /mnt/shared/home/bot/eessi-bot-software-layer/containers-ca
3551# it may happen that we need to customize some CVMFS configuration
3652# the value of cvmfs_customizations is a dictionary which maps a file
3753# name to an entry that needs to be added to that file
38- cvmfs_customizations = {}
54+ # cvmfs_customizations = {}
3955
4056# if compute nodes have no internet connection, we need to set http(s)_proxy
4157# or commands such as pip3 cannot download software from package repositories
@@ -52,7 +68,7 @@ jobs_base_dir = /mnt/shared/home/bot/eessi-bot-software-layer/jobs
5268# useful/needed if some tool is not provided as system-wide package
5369# (read by bot and handed over to build_job_script via parameter
5470# --load-modules)
55- load_modules =
71+ # load_modules =
5672
5773# PATH to temporary directory on build node ... ends up being used for
5874# for example, EESSI_TMPDIR --> /tmp/$USER/EESSI
@@ -78,22 +94,93 @@ submit_command = /usr/bin/sbatch
7894# value can be a space delimited list of GH accounts
7995build_permission = boegel trz42 bedroge
8096
97+ # template for comment when user who set a label has no permission to trigger build jobs
98+ no_build_permission_comment = Label `bot:build` has been set by user `{build_labeler}`, but only users `{build_permission_users}` have permission to trigger the action
99+
100+
101+ [deploycfg]
102+ # script for uploading built software packages
103+ tarball_upload_script = /mnt/shared/home/bot/eessi-bot-software-layer/scripts/eessi-upload-to-staging
104+
105+ # URL to S3/minio bucket
106+ # if attribute is set, bucket_base will be constructed as follows
107+ # bucket_base=${endpoint_url}/${bucket_name}
108+ # otherwise, bucket_base will be constructed as follows
109+ # bucket_base=https://${bucket_name}.s3.amazonaws.com
110+ # - The former variant is used for non AWS S3 services, eg, minio, or when
111+ # the bucket name is not provided in the hostname (see latter case).
112+ # - The latter variant is used for AWS S3 services.
113+ # endpoint_url = URL_TO_S3_SERVER
114+
115+ # bucket name
116+ bucket_name = eessi-staging
117+
118+ # upload policy: defines what policy is used for uploading built artefacts
119+ # to an S3 bucket
120+ # 'all' ..: upload all artefacts (mulitple uploads of the same artefact possible)
121+ # 'latest': for each build target (eessi-VERSION-{software,init,compat}-OS-ARCH)
122+ # only upload the latest built artefact
123+ # 'once' : only once upload any built artefact for the build target
124+ # 'none' : do not upload any built artefacts
125+ upload_policy = once
126+
127+ # which GH account has the permission to trigger the deployment (by setting
128+ # the label 'bot:deploy' (apparently this cannot be restricted on GitHub)
129+ # if value is left/empty everyone can trigger the deployment
130+ # value can be a space delimited list of GH accounts
131+ deploy_permission = boegel trz42 bedroge
132+
133+ # template for comment when user who set a label has no permission to trigger deploying tarballs
134+ no_deploy_permission_comment = Label `bot:deploy` has been set by user `{deploy_labeler}`, but only users `{deploy_permission_users}` have permission to trigger the action
135+
136+
81137[architecturetargets]
82138# defines both for which architectures the bot will build
83139# and what submission parameters shall be used
140+ # 5 c4.2xlarge haswell 8 vCPU, 15 GiB RAM (1 + generic)
141+ # 2 c4.4xlarge haswell 16 vCPU, 30 GiB RAM
142+ # 5 c5.2xlarge skylake_avx512 8 vCPU, 16 GiB RAM (1)
143+ # 1 c5.4xlarge skylake_avx512 16 vCPU, 32 GiB RAM
144+ # 5 c5a.2xlarge zen2 8 vCPU, 16 GiB RAM (1)
145+ # 1 c5a.4xlarge zen2 16 vCPU, 32 GiB RAM
146+ # 5 c5d.2xlarge skylake_avx512 8 vCPU, 16 GiB RAM + 200 GB NVMe
147+ # 5 c6a.2xlarge zen3 8 vCPU, 16 GiB RAM (1)
148+ # 1 c6a.4xlarge zen3 16 vCPU, 32 GiB RAM
149+ # 5 c6g.2xlarge graviton2 8 vCPU, 16 GiB RAM (1 + generic)
150+ # 2 c6g.4xlarge graviton2 16 vCPU, 32 GiB RAM
151+ # 1 c6g.8xlarge graviton2 32 vCPU, 64 GiB RAM
152+ # 1 c6i.2xlarge cascadelake 8 vCPU, 16 GiB RAM (1)
153+ # 5 c7g.2xlarge graviton3 8 vCPU, 16 GiB RAM (1)
154+ # 1 c7g.4xlarge graviton3 16 vCPU, 32 GiB RAM
84155# medium instances (8 cores, 16GB RAM)
85156# arch_target_map = { "linux/x86_64/generic" : "--constraint shape=c4.4xlarge", "linux/x86_64/intel/haswell" : "--constraint shape=c4.4xlarge", "linux/x86_64/intel/skylake_avx512" : "--constraint shape=c5.4xlarge", "linux/x86_64/amd/zen2": "--constraint shape=c5a.4xlarge", "linux/x86_64/amd/zen3" : "--constraint shape=c6a.4xlarge", "linux/aarch64/generic" : "--constraint shape=c6g.4xlarge", "linux/aarch64/graviton2" : "--constraint shape=c6g.4xlarge", "linux/aarch64/graviton3" : "--constraint shape=c7g.4xlarge"}
86157# larger instances (16 cores, 32GB RAM)
87- arch_target_map = { " linux/x86_64/generic" : " --constraint shape=c4.4xlarge" , " linux/x86_64/intel/haswell" : " --constraint shape=c4.4xlarge" , " linux/x86_64/intel/skylake_avx512" : " --constraint shape=c5.4xlarge" , " linux/x86_64/amd/zen2" : " --constraint shape=c5a.4xlarge" , " linux/x86_64/amd/zen3" : " --constraint shape=c6a.4xlarge" , " linux/aarch64/generic" : " --constraint shape=c6g.4xlarge" , " linux/aarch64/graviton2" : " --constraint shape=c6g.4xlarge" , " linux/aarch64/graviton3" : " --constraint shape=c7g.4xlarge" }
158+ arch_target_map = {
159+ " linux/x86_64/generic" : " --constraint shape=c4.4xlarge" ,
160+ " linux/x86_64/intel/haswell" : " --constraint shape=c4.4xlarge" ,
161+ " linux/x86_64/intel/skylake_avx512" : " --constraint shape=c5.4xlarge" ,
162+ " linux/x86_64/amd/zen2" : " --constraint shape=c5a.4xlarge" ,
163+ " linux/x86_64/amd/zen3" : " --constraint shape=c6a.4xlarge" ,
164+ " linux/aarch64/generic" : " --constraint shape=c6g.4xlarge" ,
165+ " linux/aarch64/graviton2" : " --constraint shape=c6g.4xlarge" ,
166+ " linux/aarch64/graviton3" : " --constraint shape=c7g.4xlarge" }
88167
89168[repo_targets]
90169# defines for which repository a arch_target should be build for
91170#
92171# only building for repository EESSI-pilot
93- repo_target_map = { " linux/x86_64/generic" : [" EESSI-pilot" ], " linux/x86_64/intel/haswell" : [" EESSI-pilot" ], " linux/x86_64/intel/skylake_avx512" : [" EESSI-pilot" ], " linux/x86_64/amd/zen2" : [" EESSI-pilot" ], " linux/x86_64/amd/zen3" : [" EESSI-pilot" ], " linux/aarch64/generic" : [" EESSI-pilot" ], " linux/aarch64/graviton2" : [" EESSI-pilot" ], " linux/aarch64/graviton3" : [" EESSI-pilot" ]}
172+ repo_target_map = {
173+ " linux/x86_64/generic" : [" eessi-2021.12" ," eessi-2023.04" ," eessi-2023.06-compat" ," eessi-2023.06-software" ],
174+ " linux/x86_64/intel/haswell" : [" eessi-2021.12" ," eessi-2023.04" ," eessi-2023.06-compat" ," eessi-2023.06-software" ],
175+ " linux/x86_64/intel/skylake_avx512" : [" eessi-2021.12" ," eessi-2023.04" ," eessi-2023.06-compat" ," eessi-2023.06-software" ],
176+ " linux/x86_64/amd/zen2" : [" eessi-2021.12" ," eessi-2023.04" ," eessi-2023.06-compat" ," eessi-2023.06-software" ],
177+ " linux/x86_64/amd/zen3" : [" eessi-2021.12" ," eessi-2023.04" ," eessi-2023.06-compat" ," eessi-2023.06-software" ],
178+ " linux/aarch64/generic" : [" eessi-2021.12" ," eessi-2023.04" ," eessi-2023.06-compat" ," eessi-2023.06-software" ],
179+ " linux/aarch64/graviton2" : [" eessi-2021.12" ," eessi-2023.04" ," eessi-2023.06-compat" ," eessi-2023.06-software" ],
180+ " linux/aarch64/graviton3" : [" eessi-2021.12" ," eessi-2023.04" ," eessi-2023.06-compat" ," eessi-2023.06-software" ] }
94181
95182# points to definition of repositories (default EESSI-pilot defined by build container)
96- repos_cfg_dir = /mnt/shared/home/bot/eessi-bot-software-layer/cfg-bundles
183+ repos_cfg_dir = /mnt/shared/home/bot/eessi-bot-software-layer/repos
97184
98185# configuration for event handler which receives events from a GitHub repository.
99186[event_handler]
@@ -118,34 +205,30 @@ poll_interval = 60
118205# full path to the command for manipulating existing jobs
119206scontrol_command = /usr/bin/scontrol
120207
121- [deploycfg]
122- # script for uploading built software packages
123- tarball_upload_script = /mnt/shared/home/bot/eessi-bot-software-layer/scripts/eessi-upload-to-staging
124208
125- # URL to S3/minio bucket
126- # if attribute is set, bucket_base will be constructed as follows
127- # bucket_base=${endpoint_url}/${bucket_name}
128- # otherwise, bucket_base will be constructed as follows
129- # bucket_base=https://${bucket_name}.s3.amazonaws.com
130- # - The former variant is used for non AWS S3 services, eg, minio, or when
131- # the bucket name is not provided in the hostname (see latter case).
132- # - The latter variant is used for AWS S3 services.
133- # endpoint_url = URL_TO_S3_SERVER
209+ # variable 'comment' under 'submitted_job_comments' should not be changed as there are regular expression patterns matching it
210+ [submitted_job_comments]
211+ initial_comment = New job on instance `{app_name}` for architecture `{arch_name}` for repository `{repo_id}` in job dir `{symlink}`
212+ awaits_release = job id `{job_id}` awaits release by job manager
134213
135- # bucket name
136- bucket_name = eessi-staging
137214
138- # upload policy: defines what policy is used for uploading built artefacts
139- # to an S3 bucket
140- # 'all' ..: upload all artefacts (mulitple uploads of the same artefact possible)
141- # 'latest': for each build target (eessi-VERSION-{software,init,compat}-OS-ARCH)
142- # only upload the latest built artefact
143- # 'once' : only once upload any built artefact for the build target
144- # 'none' : do not upload any built artefacts
145- upload_policy = once
215+ [new_job_comments]
216+ awaits_launch = job awaits launch by Slurm scheduler
146217
147- # which GH account has the permission to trigger the deployment (by setting
148- # the label 'bot:deploy' (apparently this cannot be restricted on GitHub)
149- # if value is left/empty everyone can trigger the deployment
150- # value can be a space delimited list of GH accounts
151- deploy_permission = boegel trz42 bedroge
218+
219+ [running_job_comments]
220+ running_job = job `{job_id}` is running
221+
222+
223+ [finished_job_comments]
224+ success = :grin: SUCCESS tarball `{tarball_name}` ({tarball_size} GiB) in job dir
225+ failure = :cry: FAILURE
226+ no_slurm_out = No slurm output `{slurm_out}` in job dir
227+ slurm_out = Found slurm output `{slurm_out}` in job dir
228+ missing_modules = Slurm output lacks message " No missing modules!" .
229+ no_tarball_message = Slurm output lacks message about created tarball.
230+ no_matching_tarball = No tarball matching `{tarball_pattern}` found in job dir.
231+ multiple_tarballs = Found {num_tarballs} tarballs in job dir - only 1 matching `{tarball_pattern}` expected.
232+ job_result_comment_fmt = <details><summary>{summary} _(click triangle for detailed information)_</summary>Details:{details}<br/>Artefacts:{artefacts}</details>
233+ job_result_details_item_fmt = <br/> {item}
234+ job_result_artefacts_item_fmt = <li><code>{item}</code></li>
0 commit comments