Issue-Dashboard mit RaspberryPiZeroW, Javascript und GitLab



Die Installation mit Raspberry-Noobs ist kinderleichtAlles was Sie brauchen ist ein RaspberryZeroW und eine leere SD-Karte.




Fertig! Nun können Sie den RaspberryPiZero am Fernseher anschließen. Anschließend sehen Sie das Installations-Menü.





Wenn Sie NoobsLite auf der Karte haben, dann müssen Sie zunächst eine WLAN – Verbindung herstellen. Bitte wählen Sie anschließend „Rasbian Lite“ aus und klicken auf „Install“. Rasbian Lite ist die Server – Variante ohne Desktop.
Nach dem Booten muss die Paketverwaltung aktualisiert werden.
sudo apt-get update
Danach müssen die folgenden Pakete installiert werden:
sudo apt-get install -y nodm matchbox-window-manager uzbl xinit vim
Außerdem muss ein Nutzer für die Dashboard-Anzeige angelegt werden.
sudo adduser dashboard
Loggen Sie sich als “Dashboard”-Nutzer ein:
sudo su dashboard
Erstellen Sie ein X-Session -Script. Ich kann mit den Cursor-Tasten in diese Zeile wechseln und mit der „i„-Taste in den Insert-Modus wechseln.
sudo vim ~/.xsession
mit folgenden Inhalt
#!/bin/bash
xset s off
xset s noblank
xset -dpms


while true; do
  uzbl -u http://git-lab-ip/host/ -c /home/dashboard/uzbl.conf &
  exec matchbox-window-manager  -use_titlebar no
done
Danach drücken Sie die „esc“-Taste um den Befehls-Modus zu wechseln und dann „:wq“ für „write“ und „quit„. Außerdem benötigt dieses Script die folgenden Rechte:
chmod 755 ~/.xsession
In diesen Script sehen Sie eine Browser-Konfiguration (/home/dashboard/uzbl.conf). Diese Konfiguration sieht wie folgt aus
set config_home = /home/dashboard
set socket_dir=/tmp
set geometry=maximized
set show_status=0
# Because setting show status in the config file doesn't always work
# You can try leaving this out and seeing if it works anyway for you
# but this makes sure the status bar is hidden at the beginning.
set on_event        = request ON_EVENT

@on_event LOAD_FINISH script @config_home/gitlab.js
Halbzeit! Sie sind fast fertig. Nun brauchen Sie ein Javascript, mit diesen Sie ein Nutzerverhalten simulieren können. Wichtig ist, dass Du einen separaten Nutzer anlegst. Dieser Nutzer kann als “Reporter” in Projekten geführt werden.
var gitlabUrl = 'http://git-lab-url:port';
var gitlabUser = 'userName';
var gitlabPassword = 'userPasswort';

/*--------------------------Timer--------------------------*/

var Timer = function(intervallInMsec)
{
  this.caller = new Array();
  this.intervall = window.setInterval(
    this.call.bind(this),
    intervallInMsec
  );
};

Timer.prototype.append = function(callFunction)
{
  this.caller.push(callFunction);
};

Timer.prototype.remove = function(callFunction)
{
  var index = this.caller.indexOf(callFunction);
  if (index > -1) 
  {
    this.caller.splice(index, 1);
  }
};

Timer.prototype.call = function()
{
  for(
    var callerIndex = 0, callerLenght = this.caller.length;
    callerIndex < callerLenght;
    callerIndex++
  ) {
    this.caller[ callerIndex ].call();
  }
};

/* login verhalten */
timer.append(
  function()
  {
    if (jQuery('#user_login').length > 0)
    {
      jQuery('#user_login').val(gitlabUser);
      jQuery('#user_password').val(gitlabPassword);
      jQuery('.btn-save').click();
    }
  }
);

/* wallboard aufrufen */
timer.append(
  function()
  {
    if (jQuery('.js-projects-list-holder').length > 0)
    {
      window.location.href = window.gitlabUrl + '/dashboard/issues?state=opened&utf8=✓&assignee_id=0';
    }
  }
);
/* reload verhalten */
timer.append(
  function()
  {
    if (jQuery('.issues-filters').length > 0)
    {
      window.location.href = window.gitlabUrl + '/dashboard/issues?state=opened&utf8=✓&assignee_id=0';
    }
  }
);
Nun können Sie sich ausloggen. Bitte ändern Sie zu guter Letzt noch die DisplayManager- Einstellung unter “/etc/default/nodm”. Hier müssen Sie den “NODM_USER” zu “dashboard” und “NODM_ENABLED” zu “true” ändern.
# nodm configuration

# Set NODM_ENABLED to something different than 'false' to enable nodm
NODM_ENABLED=true

# User to autologin for
NODM_USER=dashboard

# First vt to try when looking for free VTs
NODM_FIRST_VT=7

# X session
NODM_XSESSION=/etc/X11/Xsession

# Options for nodm itself
NODM_OPTIONS=

# Options for the X server.
#
# Format: [/usr/bin/<Xserver>] [:<disp>] <Xserver-options>
#
# The Xserver executable and the display name can be omitted, but should
# be placed in front, if nodm's defaults shall be overridden.
NODM_X_OPTIONS='-nolisten tcp'

# If an X session will run for less than this time in seconds, nodm will wait an
# increasing bit of time before restarting the session
NODM_MIN_SESSION_TIME=60

# Timeout (in seconds) to wait for X to be ready to accept connections. If X is
# not ready before this timeout, it is killed and restarted.
NODM_X_TIMEOUT=300
Wenn Sie jetzt mit “sudo reboot” restarten, dann sehen Sie folgendes Dashboard:





Kommentare