forked from Bitcoin-ABC/bitcoin-abc
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathabcbot.py
executable file
·78 lines (65 loc) · 2.13 KB
/
abcbot.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
#!/usr/bin/env python3
#
# Copyright (c) 2017-2019 The Bitcoin ABC developers
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
import argparse
import logging
import os
import sys
from logging.handlers import RotatingFileHandler
import slack
import server
from cirrus import Cirrus
from phabricator_wrapper import PhabWrapper
from slackbot import SlackBot
from teamcity_wrapper import TeamCity
# Setup global parameters
conduit_token = os.getenv("TEAMCITY_CONDUIT_TOKEN", None)
db_file_no_ext = os.getenv("DATABASE_FILE_NO_EXT", None)
tc_user = os.getenv("TEAMCITY_USERNAME", None)
tc_pass = os.getenv("TEAMCITY_PASSWORD", None)
phabricatorUrl = os.getenv("PHABRICATOR_URL", "https://reviews.bitcoinabc.org/api/")
slack_token = os.getenv("SLACK_BOT_TOKEN", None)
tc = TeamCity("https://build.bitcoinabc.org", tc_user, tc_pass)
phab = PhabWrapper(host=phabricatorUrl, token=conduit_token)
phab.update_interfaces()
slack_channels = {
# #dev
"dev": "C62NSDC6N",
# #abcbot-testing
"test": "CQMSVCY66",
# #infra-support
"infra": "G016CFAV8KS",
}
slackbot = SlackBot(slack.WebClient, slack_token, slack_channels)
cirrus = Cirrus()
def main(args):
parser = argparse.ArgumentParser(
description="Continuous integration build bot service."
)
parser.add_argument(
"-p", "--port", help="port for server to start", type=int, default=8080
)
parser.add_argument(
"-l",
"--log-file",
help="log file to dump requests payload",
type=str,
default="log.log",
)
args = parser.parse_args()
port = args.port
log_file = args.log_file
app = server.create_server(
tc, phab, slackbot, cirrus, db_file_no_ext=db_file_no_ext
)
formater = logging.Formatter(
"[%(asctime)s] %(levelname)s in %(module)s: %(message)s"
)
fileHandler = RotatingFileHandler(log_file, maxBytes=10000, backupCount=1)
fileHandler.setFormatter(formater)
app.logger.addHandler(fileHandler)
app.run(host="0.0.0.0", port=port)
if __name__ == "__main__":
main(sys.argv)