servo/etc/taskcluster/macos
bors-servo 07c43f7ffd
Auto merge of #23426 - servo:jdm-patch-49, r=jdm
Add gnutls dependency for gstreamer plugins build

From one of the newer macOS taskcluster workers:
```
==> Installing gst-plugins-bad dependency: srtp
==> Downloading https://homebrew.bintray.com/bottles/srtp-2.2.0.high_sierra.bottle.tar.gz
==> Pouring srtp-2.2.0.high_sierra.bottle.tar.gz
🍺  /Users/worker/homebrew/Cellar/srtp/2.2.0: 14 files, 408.4KB
==> Installing gst-plugins-bad
Error: An exception occurred within a child process:
  RuntimeError: /Users/worker/homebrew/opt/gnutls not present or broken
Please reinstall gnutls. Sorry :(
Installing ./etc/taskcluster/macos/formula/gst-plugins-bad.rb has failed!
```

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/23426)
<!-- Reviewable:end -->
2019-05-19 20:56:30 -04:00
..
config Add servo-tc-mac6 to TC pool. 2019-05-16 17:07:03 -04:00
Formula Add gst-plugins-bad homebrew formula that enables webrtc. 2019-05-15 14:29:06 -04:00
modules/pillar Bug 1548573 - Upgrade macOS workers to generic-worker 14.1.0 2019-05-03 18:34:43 +02:00
states Improve dependencies for generic-worker deployment. 2019-05-17 16:06:43 -04:00
.gitignore Initial agentless SaltStack config for generic-worker on macOS 2018-11-15 17:38:13 +01:00
Brewfile Install gstreamer libraries for WPT runner tasks on mac. 2019-05-13 12:29:21 -04:00
Brewfile-gstreamer Add gnutls dependency for gstreamer plugins build 2019-05-19 10:23:08 -04:00
Brewfile-wpt Install jq when performing WPT sync job. 2019-05-07 11:09:23 -04:00
README.md Add java setup to mac instructions. 2019-05-09 19:54:36 -04:00
salt-ssh Update MPL license to https (part 1) 2018-11-19 14:46:43 +01:00
Saltfile generic-worker on macOS: run as unprivileged user, start as a service 2018-11-15 17:38:13 +01:00

macOS

This is the configuration for the proj-servo/macos worker type. These macOS workers are configured with SaltStack in agentless mode.

Either run ./salt-ssh to automatically install salt-ssh in machs existing Python virtualenv, or install salt-ssh through some other mean and run in from this directory.

cd etc/taskcluster/macos
./salt-ssh '*' test.ping
./salt-ssh '*' state.apply test=True

Troubleshooting

SSH into servo-tc-mac1.servo.org. generic-worker logs are in less /Users/worker/stderr.log.

If the worker seems stuck but nothing seems wrong in the log, try running launchctl stop net.generic.worker. (It is configured to restart automatically.) This issue is tracked at generic-worker#133.

(Re)deploying a server

  • Place an order or file a ticket with MacStadium to get a new hardware or reinstall an OS.

  • Change the administrator password to one generated with </dev/urandom tr -d -c 'a-zA-Z' | head -c 8; echo (this short because of VNC), and save it in the shared 1Password account.

  • Give the public IPv4 address a DNS name through Cloudflare.

  • Add a correponding entry in the config/roster file.

  • Log in through VNC, and run xcode-select --install

  • Still in VNC, install the jdk8 package from http://adoptopenjdk.net

  • Install an ssh key into /Users/administrator/.ssh/authorized_keys and /var/root/.ssh/authorized_keys.

Taskcluster secrets

This SaltStack configuration has a custom module that uses Taskclusters secrets service. These secrets include an authentication token. Youll need to authenticate with a Taskcluster client ID that has scope secrets:get:project/servo/*. This should be the case if youre a Servo project administrator (the project-admin:servo role).

To authenticate, install taskcluster-cli and run eval \taskcluster signin``. This will set up the TASKCLUSTER_CLIENT_ID and TASKCLUSTER_ACCESS_TOKEN variables to allow retrieving secrets appropriately in the current terminal session.

Workers client ID

Workers are configured to authenticate with client ID project/servo/worker/macos/1. This client has the scopes required to run tasks for this worker type.