Skip to content

Commit 1e86502

Browse files
authored
update readme
1 parent d008492 commit 1e86502

File tree

1 file changed

+112
-7
lines changed

1 file changed

+112
-7
lines changed

README.md

Lines changed: 112 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,116 @@
11
# Jenkins-based CI for the Scala project
22

3-
What it does:
3+
Used for
4+
- Scala 2.12 / 2.13 PR validation
5+
- Scala 2.12 / 2.13 [community build](https://github.com/scala/community-builds)
46

5-
* validate all commits, including the ones in pull requests
6-
* run the [community build](https://github.com/scala/community-builds)
7-
* build nightly releases
8-
* run scripts at release time
7+
Old documentation in [doc](doc/) directory; some pieces are still relevant, some are outdated.
98

10-
To learn more, see the doc directory, beginning with
11-
[overview.md](doc/overview.md).
9+
## History
10+
11+
The AWS infra was originally deployed and maintanied using ansible (this repo).
12+
We no longer use ansible to update the infra, but manage it manually (AWS console, ssh to the machines, jenkins UI, artifactory UI).
13+
14+
We are gradually moving away from using this infra
15+
- releases and integration builds are published on travis / appveyor
16+
- mergely tests for windows and on various jdks on github actions
17+
18+
But we still need it because
19+
- where would we put PR / integration builds?
20+
- where would we get enough resources to run the community build?
21+
22+
## SSH access
23+
24+
<details>
25+
<summary>Add the following to your <code>~/.ssh/config</code></summary>
26+
27+
```
28+
Host jenkins-master
29+
HostName 54.67.111.226
30+
User admin
31+
32+
Host jenkins-worker-behemoth-1
33+
HostName 54.153.2.9
34+
User admin
35+
36+
Host jenkins-worker-behemoth-2
37+
HostName 54.153.1.99
38+
User admin
39+
40+
Host jenkins-worker-behemoth-3
41+
HostName 54.183.156.89
42+
User admin
43+
44+
# no public ip, jumphost through master
45+
Host influxdb
46+
HostName 172.31.0.100
47+
User ubuntu
48+
ProxyCommand ssh -q -W %h:%p jenkins-master
49+
```
50+
51+
</details>
52+
53+
54+
55+
## Installed Services
56+
57+
### nginx
58+
59+
Nginx for `scala-ci.typesafe.com` on `jenkins-master`, `/etc/nginx/conf.d/jenkins.conf`.
60+
61+
Handles jenkins, `/artifactory`, `/grafana`, `/benchq`, ...
62+
63+
### Jenkins
64+
65+
Auth goes via GitHub.
66+
67+
TODO: how to get logs?
68+
- After a recent upgrade, scabot was no longer receiving job notifications from jenkins (it fixed itself...)
69+
- lrytz didn't figure out how to enable debug logs in jenkins
70+
- The notifications plugin [produces logs](https://github.com/jenkinsci/notification-plugin/blob/notification-1.17/src/main/java/com/tikal/hudson/plugins/notification/Phase.java#L386), but no idea how to enable / find them
71+
72+
### Artifactory
73+
74+
`scala-ci.typesafe.com/artifactory/` to log in to the UI.
75+
76+
Repositories:
77+
- `scala-pr-validation-snapshots`
78+
- `scala-integration` for mergely builds
79+
- `dbuild` is an aggregate of cached remote repositories. used for the community build.
80+
81+
The config file is `/opt/jfrog/artifactory/var/etc/system.yaml`.
82+
83+
`/opt/jfrog/artifactory/var/log/console.log` has aggregated logs, logs for individual services in the same directory.
84+
85+
`/opt/jfrog/artifactory/var/data/derby` is the main database for our artifactory; its large (19G in Aug 2024).
86+
87+
The `access` service has its own db at `/opt/jfrog/artifactory/var/data/access/derby`.
88+
89+
### Scabot
90+
91+
[Scabot](https://github.com/scala/scabot) triggers Jenkins builds and updates their state on github commits / PRs.
92+
93+
## Details
94+
95+
### Unattended Upgrades
96+
97+
Enabled on master and behemoths
98+
- default config on behemoths, installs all updates.
99+
- only security updates on master, plus jenkins. Not artifactory because an `apt upgrade` of it doesn't restart the service. Also, artifactory updates tend to be more breaking.
100+
101+
### JVM installations
102+
103+
Only a basic jre is installed through apt (eg `openjdk-17-jre-headless`).
104+
105+
Use `sudo su` and cd to `/usr/lib/jvm`, see the `README` file.
106+
Install new JDKs here, we default to adoptium.
107+
108+
### chrony
109+
110+
On all machines (`chronyc tracking` to check):
111+
112+
```
113+
root@ip-172-31-10-237:~# cat /etc/chrony/sources.d/aws.sources
114+
#https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configure-ec2-ntp.html
115+
server 169.254.169.123 prefer iburst minpoll 4 maxpoll 4
116+
```

0 commit comments

Comments
 (0)