-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathexample_config.py
86 lines (69 loc) · 3.41 KB
/
example_config.py
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
# Copyright 2016 Peter Dahlberg
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import os
import logging
from apscheduler.triggers.cron import CronTrigger
from apscheduler.triggers.date import DateTrigger
if __name__ == "__main__":
raise SystemExit("Not meant to be run directly!")
def _rsync_cmd(dest):
cmd = ("rsync --delete-delay --recursive --times --stats --delay-updates "
"'{output}/' '{dest}'")
return cmd.format(dest=dest, output="{output}")
# configure the logger
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(message)s')
# make sure git does not block giving pw prompts, git 2.3+ only
os.environ["GIT_TERMINAL_PROMPT"] = "0"
os.environ["GIT_ASKPASS"] = "echo" # also to avoid interactiveness
os.environ["GIT_EDITOR"] = "true" # also to avoid interactiveness
os.environ["GIT_PAGER"] = "cat" # also to avoid interactiveness
# avoid system config, we want default behaviour
os.environ["GIT_CONFIG_NOSYSTEM"] = "yes"
# needs to be a byte like object
GITHUB_SECRET = b"changetosomethingrandomlong"
RUNNERS = {
# unique name of the runner, avoid spaces and other obscure characters
"website_master": {
# directory where building takes place, will be created if not there
# multiple runners may point to the same one
"working_directory": "/tmp/test",
# upstream url of the repository which contains the website
# use https://git::@github.com... to avoid pw prompts and instead fail
# (e.g. if github gives errornously 401 temporarily, git would block)
# os.environ["GIT_TERMINAL_PROMPT"] = "0" does the same but git 2.3+only
"clone_url": "https://git::@github.com/IEEE-SB-Passau/pelican-ieee-passau.git",
# branch which will be built
"git_branch": "master",
# command which installs the generated directory tree to it's final
# destination (the wwwroot) e.g. rsync. {output} will be replaced by
# the path to the generator output
"final_install_command": _rsync_cmd("/tmp/testroot"),
# command which builds the website
# important: specify {output} as output path of the generator
# if you use toy you may use {toxresult} as the path to the result.json
"build_command": ('tox -e pelican --result-json "{toxresult}" '
'--recreate -- -d --output "{output}"'),
# will be added to env when running build_command
"build_env": {"PELICAN_SITEURL": "//apu:800"}
}
}
# define crojobs as sequence of (runner, trigger) pairs, for cron triggers see
# http://apscheduler.readthedocs.io/en/latest/modules/triggers/cron.html
SCHEDULED_BUILD_JOBS = [
("website_master", CronTrigger(minute="*/30")),
("website_master", DateTrigger()) # once at start
]
# user, pass for /status/... subpages, if not set or None no auth is done
def STATUS_AUTH_BASIC_FN(user, passw):
return user == "powerpoint" and passw == "karaoke"