all repos — tint2 @ 405c2c9286a719481de59bda030dd1ee99a5f994

fork of the tint2 desktop panel for my custom setup - only minimized windows across all desktops for the taskbar

test/fabfile.py (raw)

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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#!/usr/bin/env python2

# Setup: add tint2-runner, tint2-freebsd and tint2-openbsd in /etc/hosts.
# Run: pip install fabric; pip install fabtools.

# TODO: setup bsd workers
# TODO: prin ssh public key to be added on gitlab

from fabric.api import *
from fabric.contrib.files import *
from fabtools import require
import fabtools
import os


env.use_ssh_config = True
env.user = 'root'
env.sudo_prefix += '-H '
env.roledefs = {
    'runner': ['tint2-runner'],
    'freebsd': ['tint2-freebsd'],
    'openbsd': ['tint2-openbsd'],
}


def str2hex(s):
  return ''.join('{:02x}'.format(ord(c)) for c in s)


def generate_random_password():
  return str2hex(os.urandom(32))


def read_file(path):
  with open(path) as f:
    return f.read()


@task
@roles('runner', 'freebsd', 'openbsd')
def create_users():
  require.user('root', password=generate_random_password())
  require.user('runner', password=generate_random_password())
  sudo('cd; mkdir -p .ssh; chmod 700 .ssh', user='runner')
  if not exists('/home/runner/.ssh/id_rsa'):
    sudo('cd; ssh-keygen -f ~/.ssh/id_rsa -t rsa -N ""', user='runner')


@task
@roles('runner')
def install_deps():
  require.deb.packages([
    # Repo deps
    'git',
    # Build deps
    'build-essential',
    'cmake',
    'libglib2.0-dev',
    'libcairo2-dev',
    'libglib2.0-dev',
    'libgtk2.0-dev',
    'libimlib2-dev',
    'libpango1.0-dev',
    'librsvg2-dev',
    'libstartup-notification0-dev',
    'libx11-dev',
    'libxcomposite-dev',
    'libxdamage-dev',
    'libxinerama-dev',
    'libxrandr-dev',
    'libxrender-dev',
    # Tester deps
    'python-minimal',
    'xvfb',
    'xsettingsd',
    'openbox',
    'compton',
    'x11-utils',
    'gnome-calculator'
  ])


@task
@roles('runner')
def pull_code():
  if not exists('/home/runner/tint2'):
    sudo('cd; git clone https://gitlab.com/o9000/tint2.git', user='runner')
  if not exists('/home/runner/tint2.wiki'):
    sudo('cd; git clone git@gitlab.com:o9000/tint2.wiki.git', user='runner')
  sudo('cd; git config --global user.name "tint2.runner"', user='runner')
  sudo('cd; git config --global user.email "tint2.runner@netperf.tools"', user='runner')


@task
@roles('runner')
def add_cron_jobs():
  fabtools.cron.add_task('tests', '* * * * *', 'runner', '/home/runner/tint2/test/update_test_status.sh')
  fabtools.cron.add_task('packaging_check', '10 */2 * * *', 'runner', '/home/runner/tint2/packaging/update_version_status.sh')


@task(default=True)
@roles('runner')
def full_runner():
  create_users()
  install_deps()
  pull_code()
  add_cron_jobs()