Bug 1357147: run taskcluster-worker on linux hardware; r?dragos
MozReview-Commit-ID: 788fMRgqJOx
--- a/manifests/moco-nodes.pp
+++ b/manifests/moco-nodes.pp
@@ -1047,13 +1047,15 @@ node "dhouse-1330169.srv.releng.scl3.moz
$aspects = [ 'low-security' ]
include toplevel::server
}
# See Bug 1343963
node "moonshot-test3.test.releng.scl3.mozilla.com" {
$aspects = [ 'low-security' ]
$slave_trustlevel = 'try'
+ $taskcluster_worker_type = 'gecko-t-linux-talos'
+ $taskcluster_worker_group = 'moonshot-scl3'
$pin_puppet_server = "releng-puppet2.srv.releng.scl3.mozilla.com"
- $pin_puppet_env = "dcrisan"
- include toplevel::slave::releng::test::gpu
+ $pin_puppet_env = "dmitchell"
+ include toplevel::worker::releng::taskcluster_worker::test::gpu
}
--- a/modules/packages/manifests/mozilla/taskcluster_worker.pp
+++ b/modules/packages/manifests/mozilla/taskcluster_worker.pp
@@ -1,13 +1,15 @@
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
class packages::mozilla::taskcluster_worker {
+ include ::users::root
+
anchor {
'packages::mozilla::taskcluster_worker::begin': ;
'packages::mozilla::taskcluster_worker::end': ;
}
$version = '0.0.13'
# Binaries should be downloaded from
@@ -16,18 +18,27 @@ class packages::mozilla::taskcluster_wor
Anchor['packages::mozilla::taskcluster_worker::begin'] ->
case $::operatingsystem {
Darwin: {
file {
'/usr/local/bin/taskcluster-worker':
source => "puppet:///repos/EXEs/taskcluster-worker-${version}-darwin-amd64",
mode => 0755,
- owner => root,
- group => wheel,
+ owner => $::users::root::username,
+ group => $::users::root::group,
+ }
+ }
+ Ubuntu, Fedora, CentOS: {
+ file {
+ '/usr/local/bin/taskcluster-worker':
+ source => "puppet:///repos/EXEs/taskcluster-worker-${version}-linux-amd64",
+ mode => 0755,
+ owner => $::users::root::username,
+ group => $::users::root::group,
}
}
default: {
fail("cannot install on $::operatingsystem")
}
} -> Anchor['packages::mozilla::taskcluster_worker::end']
}
--- a/modules/taskcluster_worker/manifests/init.pp
+++ b/modules/taskcluster_worker/manifests/init.pp
@@ -1,35 +1,52 @@
class taskcluster_worker {
include packages::mozilla::taskcluster_worker
+ include ::users::root
+ include ::users::builder
+
+ $taskcluster_client_id = secret('taskcluster_worker_client_id')
+ $taskcluster_access_token = hiera('taskcluster_worker_access_token')
+
+ file { '/etc/taskcluster-worker.yml':
+ ensure => present,
+ content => template('taskcluster_worker/taskcluster-worker.yml.erb'),
+ mode => 0644,
+ owner => $::users::root::username,
+ group => $::users::root::group
+ }
case $::operatingsystem {
Darwin: {
- $macos_version = regsubst($::macosx_productversion_major, '\.', '-')
- $taskcluster_client_id = secret('taskcluster_worker_client_id')
- $taskcluster_access_token = hiera('taskcluster_worker_access_token')
-
file { '/Library/LaunchAgents/net.taskcluster.worker.plist':
ensure => present,
content => template('taskcluster_worker/taskcluster-worker.plist.erb'),
mode => 0644,
- owner => root,
- group => wheel,
- }
- file { '/etc/taskcluster-worker.yml':
- ensure => present,
- content => template('taskcluster_worker/taskcluster-worker.yml.erb'),
- mode => 0644,
- owner => root,
- group => wheel,
+ owner => $::users::root::username,
+ group => $::users::root::group
}
service { "net.taskcluster.worker":
require => [
File["/Library/LaunchAgents/net.taskcluster.worker.plist"],
],
enable => true;
}
}
+
+ Ubuntu: {
+ file {
+ ["${::users::builder::home}/.config",
+ "${::users::builder::home}/.config/autostart"]:
+ ensure => directory,
+ owner => $users::builder::username,
+ group => $users::builder::group;
+ "${::users::builder::home}/.config/autostart/gnome-terminal.desktop":
+ content => template("taskcluster_worker/gnome-terminal.desktop.erb"),
+ owner => $users::builder::username,
+ group => $users::builder::group;
+ }
+ }
+
default: {
fail("cannot install on $::operatingsystem")
}
}
}
new file mode 100644
--- /dev/null
+++ b/modules/taskcluster_worker/templates/gnome-terminal.desktop.erb
@@ -0,0 +1,15 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+[Desktop Entry]
+Type=Application
+# run the daemon, sending output to syslog and to the terminal
+Exec=gnome-terminal -x sh -c 'exec /usr/local/bin/taskcluster-worker daemon run /etc/taskcluster-worker.yml 2>&1 | logger -t taskcluster-worker -s'
+Hidden=false
+X-GNOME-Autostart-enabled=true
+Name=Taskcluster-Worker
+Comment=Start taskcluster-worker in a terminal session
+StartupNotify=false
+Terminal=false
+Type=Application
+
--- a/modules/taskcluster_worker/templates/taskcluster-worker.yml.erb
+++ b/modules/taskcluster_worker/templates/taskcluster-worker.yml.erb
@@ -7,41 +7,46 @@ transforms:
config:
capacity: 1
credentials:
# Create a client with the scope:
# assume:project:taskcluster:worker-test-scopes
# secrets:get:project/taskcluster/taskcluster-worker/stateless-dns
clientId: <%= @taskcluster_client_id %>
accessToken: <%= @taskcluster_access_token %>
- provisionerId: tc-worker-provisioner
- workerType: gecko-t-osx-<%= @macos_version %>
- workerGroup: macosx-tc-worker
+ provisionerId: releng-hardware
+ workerType : <%= @taskcluster_worker_type %>
+ workerGroup: <%= @taskcluster_worker_group %>
workerId: <%= @hostname %>
engine: native
engines:
native:
createUser: false
- groups: ['staff', 'everyone', 'localaccounts', '_developer', '_lpoperator', 'com.apple.sharepoint.group.1']
logLevel: info
plugins:
+<% if @operatingsystem == 'Darwin' -%>
disabled: ['interactive', 'maxruntime']
reboot:
rebootAfter: 96 # hours
rebootCommand: ['/usr/bin/sudo', '/sbin/reboot']
env:
extra:
TMPDIR: {$env: TMPDIR}
SHELL: '/bin/bash'
LANG: 'en_US.UTF-8'
LC_ALL: 'en_US.UTF-8'
XPC_FLAGS: '0x0'
XPC_SERVICE_NAME: '0'
- IDLEIZER_DISABLE_SHUTDOWN: 'true'
PATH: "/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
+<% else -%>
+ disabled: ['interactive', 'maxruntime', 'env']
+ reboot:
+ rebootAfter: 96 # hours
+ rebootCommand: ['/usr/bin/sudo', '/sbin/reboot']
+<% end -%>
pollingInterval: 10
queueBaseUrl: https://queue.taskcluster.net/v1
reclaimOffset: 120
temporaryFolder: /var/tmp/tc-worker-tmp
serverIp: 127.0.0.1
serverPort: 60000
tlsCertificiate:
$secret: project/taskcluster/taskcluster-worker/stateless-dns
--- a/modules/toplevel/manifests/worker.pp
+++ b/modules/toplevel/manifests/worker.pp
@@ -9,18 +9,13 @@ class toplevel::worker inherits toplevel
include puppet::atboot
include sudoers::reboot
include users::builder
# apply tweaks
include tweaks::dev_ptmx
include tweaks::locale
- case $::operatingsystem {
- 'Darwin': {
- include users::builder::autologin
- }
-
- default: {
- fail("worker not (yet) supported on ${::operatingsystem}")
- }
+ # *all* Darwin and Windows workers need to autologin, not just testers
+ if ($::operatingsystem == "Darwin") or ($::operatingsystem == "Windows") {
+ include users::builder::autologin
}
}
--- a/modules/toplevel/manifests/worker/releng.pp
+++ b/modules/toplevel/manifests/worker/releng.pp
@@ -1,35 +1,56 @@
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
class toplevel::worker::releng inherits toplevel::worker {
include instance_metadata
include clean::appstate
- # packages common to all slaves
+ # packages common to all workers
include dirs::tools
include packages::mozilla::python27
include packages::mozilla::tooltool
include packages::wget
include packages::mozilla::py27_mercurial
# TODO: run mig agent on boot?
include mig::agent::daemon
- include packages::mozilla::py27_virtualenv
- include buildslave::install
+
+ # not sure why these are required on Darwin..
+ if ($::operatingsystem == 'Darwin') {
+ include packages::mozilla::py27_virtualenv
+ include buildslave::install
+ }
case $::kernel {
'Linux': {
# authorize aws-manager to reboot instances
users::builder::extra_authorized_key {
'aws-ssh-key': ;
}
}
}
# ensure runner is actually disabled, in case this machine was once set up
# to run buildbot (temporary)
- file {
- "/Library/LaunchAgents/com.mozilla.runner.plist":
- ensure => absent,
+ case $::operatingsystem {
+ 'Darwin': {
+ file {
+ "/Library/LaunchAgents/com.mozilla.runner.plist":
+ ensure => absent,
+ }
+ }
+
+ 'Ubuntu': {
+ service {
+ 'runner':
+ provider => 'systemd',
+ hasstatus => false,
+ enable => false;
+ }
+ }
+
+ default: {
+ fail("not (yet) supported on ${::operatingsystem}")
+ }
}
}
--- a/modules/toplevel/manifests/worker/releng/taskcluster_worker.pp
+++ b/modules/toplevel/manifests/worker/releng/taskcluster_worker.pp
@@ -1,14 +1,16 @@
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
class toplevel::worker::releng::taskcluster_worker inherits toplevel::worker::releng {
include ::taskcluster_worker
- # ensure generic-worker is disabled, in case this machine previously ran it
- file {
- "/Library/LaunchAgents/net.generic.worker.plist":
- ensure => absent,
+ if ($::operatingsystem == "Darwin") {
+ # ensure generic-worker is disabled, in case this machine previously ran it
+ file {
+ "/Library/LaunchAgents/net.generic.worker.plist":
+ ensure => absent,
+ }
}
}