Skip to content

Commit 32cfd13

Browse files
authored
Merge pull request #240 from boegel/bot_cfg
add configuration file for production build-and-deploy bot in AWS CitC cluster
2 parents 25943f5 + 6299c9b commit 32cfd13

File tree

1 file changed

+151
-0
lines changed

1 file changed

+151
-0
lines changed

bot/bot-eessi-aws-citc.cfg

Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
# Also see documentation at https://github.com/EESSI/eessi-bot-software-layer/blob/main/README.md#step5.5
2+
3+
[github]
4+
# replace '123456' with the ID of your GitHub App
5+
app_id = 281041
6+
7+
# a short (!) name for your app instance that can be used for example
8+
# when adding/updating a comment to a PR
9+
# (!) a short yet descriptive name is preferred because it appears in
10+
# comments to the PR
11+
# for example, the name could include the name of the cluster the bot
12+
# runs on and the username which runs the bot
13+
# NOTE avoid putting an actual username here as it will be visible on
14+
# potentially publicly accessible GitHub pages.
15+
app_name = eessi-bot-citc-aws
16+
17+
# replace '12345678' with the ID of the installation of your GitHub App
18+
# (can be derived by creating an event and then checking for the list
19+
# of sent events and its payload either via the Smee channel's web page
20+
# or via the Advanced section of your GitHub App on github.com)
21+
installation_id = 33078935
22+
23+
# 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
25+
26+
27+
[buildenv]
28+
# name of the job script used for building an EESSI stack
29+
build_job_script = /mnt/shared/home/bot/eessi-bot-software-layer/scripts/bot-build.slurm
30+
31+
# The container_cachedir may be used to reuse downloaded container image files
32+
# across jobs. Thus, jobs can more quickly launch containers.
33+
container_cachedir = /mnt/shared/home/bot/eessi-bot-software-layer/containers-cache-dir
34+
35+
# it may happen that we need to customize some CVMFS configuration
36+
# the value of cvmfs_customizations is a dictionary which maps a file
37+
# name to an entry that needs to be added to that file
38+
cvmfs_customizations = {}
39+
40+
# if compute nodes have no internet connection, we need to set http(s)_proxy
41+
# or commands such as pip3 cannot download software from package repositories
42+
# for example, the temporary EasyBuild is installed via pip3 first
43+
# http_proxy = http://PROXY_DNS:3128/
44+
# https_proxy = http://PROXY_DNS:3128/
45+
46+
# directory under which the bot prepares directories per job
47+
# structure created is as follows: YYYY.MM/pr_PR_NUMBER/event_EVENT_ID/run_RUN_NUMBER/OS+SUBDIR
48+
jobs_base_dir = /mnt/shared/home/bot/eessi-bot-software-layer/jobs
49+
50+
# configure environment
51+
# list of comma-separated modules to be loaded by build_job_script
52+
# useful/needed if some tool is not provided as system-wide package
53+
# (read by bot and handed over to build_job_script via parameter
54+
# --load-modules)
55+
load_modules =
56+
57+
# PATH to temporary directory on build node ... ends up being used for
58+
# for example, EESSI_TMPDIR --> /tmp/$USER/EESSI
59+
# escaping variables with '\' delays expansion to the start of the
60+
# build_job_script; this can be used for referencing environment
61+
# variables that are only set inside a Slurm job
62+
local_tmp = /tmp/$USER/EESSI
63+
64+
# parameters to be added to all job submissions
65+
# NOTE do not quote parameter string. Quotes are retained when reading in config and
66+
# then the whole 'string' is recognised as a single parameter.
67+
# NOTE 2 '--get-user-env' may be needed on systems where the job's environment needs
68+
# to be initialised as if it is for a login shell.
69+
# note: hardcoded 24h time limit until https://github.com/EESSI/eessi-bot-software-layer/issues/146 is fixed
70+
slurm_params = --hold --time=24:0:0
71+
72+
# full path to the job submission command
73+
submit_command = /usr/bin/sbatch
74+
75+
# which GH account has the permission to trigger the build (by setting
76+
# the label 'bot:build' (apparently this cannot be restricted on GitHub)
77+
# if value is left/empty everyone can trigger the build
78+
# value can be a space delimited list of GH accounts
79+
build_permission = boegel trz42 bedroge
80+
81+
[architecturetargets]
82+
# defines both for which architectures the bot will build
83+
# and what submission parameters shall be used
84+
# medium instances (8 cores, 16GB RAM)
85+
#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"}
86+
# 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"}
88+
89+
[repo_targets]
90+
# defines for which repository a arch_target should be build for
91+
#
92+
# 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"]}
94+
95+
# 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
97+
98+
# configuration for event handler which receives events from a GitHub repository.
99+
[event_handler]
100+
# path to the log file to log messages for event handler
101+
log_path = /mnt/shared/home/bot/eessi-bot-software-layer/eessi_bot_event_handler.log
102+
103+
104+
[job_manager]
105+
# path to the log file to log messages for job manager
106+
log_path = /mnt/shared/home/bot/eessi-bot-software-layer/eessi_bot_job_manager.log
107+
108+
# directory where job manager stores information about jobs to be tracked
109+
# e.g. as symbolic link JOBID -> directory to job
110+
job_ids_dir = /mnt/shared/home/bot/eessi-bot-software-layer/jobs
111+
112+
# full path to the job status checking command
113+
poll_command = /usr/bin/squeue
114+
115+
# polling interval in seconds
116+
poll_interval = 60
117+
118+
# full path to the command for manipulating existing jobs
119+
scontrol_command = /usr/bin/scontrol
120+
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
124+
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
134+
135+
# bucket name
136+
bucket_name = eessi-staging
137+
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
146+
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

0 commit comments

Comments
 (0)