-
Notifications
You must be signed in to change notification settings - Fork 3
/
README
49 lines (30 loc) · 1.38 KB
/
README
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
Scallywag, or how does this daisy-chain of hacks work?
======================================================
1. gitolite
In .gitolite.rc, LOCAL_CODE points to $HOME/.gitlite/local.
$LOCAL_CODE/hooks/common contains a link to the post-receive script, which is
linked to in all repositories hooks directory.
2. post-receive
GL_REPO is set in the environment by gitolite.
CYGNAME is set in the environment by .ssh/authorized_keys.
If the git receive updated the master reference, this queues build using the
Appveyor REST API, with PACKAGE and MAINTAINER environment variables.
3. .appveyor.yml
a. Installs Cygwin
b. Invokes scallywag
Stores PACKAGE, MAINTAINER, COMMIT and ARCH in a log message using the AppVeyor
build worker API.
Builds packages using cygport.
c. POSTs to a notification webhook when the build is complete
4. hook.cgi
Extracts status and artifacts information from the job result.
Extracts PACKAGE, MAINTAINER, COMMIT and ARCH from log message in the job result.
Stores all that information in an sqlite db. Marks the artifacts as ready to
fetch (for an opt-in list of packages, at the moment).
jobs.cgi provides a web interface to examine that information.
5. fetch.py
Fetch the build artifacts from Appveyor, unpack them into CYGNAME's upload area
on sourceware, and request upload processing by calm.
TODO:
- don't use appveyor as our build backend
- don't be terrible