Fork me on GitHub

Herr Knedel/Hal-hal keren dengan Atlassian: Pimp my Bamboo Monitor

Created Mon, 01 Jan 0001 00:00:00 +0000 Modified Sat, 01 Oct 2022 10:36:18 +0000 Schwierigkeitsgrad: Richtig anspruchsvoll

711 Words

Bagaimana saya bisa membuat monitor build untuk Bamboo, Jenkins atau Gitlab? Saya akan mengetahuinya malam ini! Saya sudah menulis Tutorial untuk Papan Isu Gitlab yang serupa.

Dasar dari tutorial ini adalah Raspberry Imager dan sistem operasi “Raspberry Pi OS Lite”. Setelah menginstal sistem operasi, kartu SD dapat dimasukkan ke dalam Raspberry. Dalam kasus saya, ini adalah Raspberry Pi Zero.

Langkah 1: Instal Matchbox/Pengelola Jendela

Untuk mengoperasikan Raspberry dalam mode kios, diperlukan window manager dan browser. Ini diinstal dengan perintah berikut:

x
+
Terminal

$ sudo apt-get install xorg nodm matchbox-window-manager uzbl xinit unclutter vim

Langkah 2: Saya membuat pengguna dasbor

Dengan perintah berikut, saya membuat pengguna baru bernama “dashboard”:

x
+
Terminal

$ sudo adduser dashboard

Langkah 3: Konfigurasi xServer dan Window Manager

Semua langkah berikut ini harus dilakukan dalam sesi pengguna “dashboard”. Saya mengubah ke sesi dengan “su”:

x
+
Terminal

$ sudo su dashboard

3.1.) Tombol/Fungsi

Saya ingin Raspberry saya dapat dioperasikan dalam mode kios. Untuk melakukan ini, saya menyimpan dua perintah kunci, Ctrl Alt X untuk terminal dan Alt C untuk menutup terminal. Di terminal, Anda dapat menanyakan IP saat ini dengan ifconfig, matikan Raspberry dengan sudo shutdown -h now etc…..

x
+
Terminal

$ cd ~
$ mkdir .matchbox
$ vim .matchbox/kbdconfig

Tata letak kunci dalam kasus ini adalah sebagai berikut:


##  Jalan pintas pengoperasian jendela
<Alt>c=close
<ctrl><alt>x=!xterm

3.2.) X - Sesi

Baris-baris berikut ini juga harus dimasukkan dalam file “$ vim ~/.xsession”. Skrip ini memeriksa apakah dasbor dapat diakses. Jika tidak dapat dijangkau, maka menunggu 10 detik. Tentu saja, alamat/IP harus disesuaikan.

xset -dpms
xset s off

while ! curl -s -o /dev/null https://192.168.178.61:8085/ sleep 10
done
exec matchbox-window-manager -use_titlebar no & while true; do
   
    uzbl -u https://192.168.178.61:8085/telemetry.action -c /home/pi/uzbl.conf
done

Sangat penting bahwa skrip dapat dieksekusi:

x
+
Terminal

$ sudo chmod 755 ~/.xsession

3.3.) Konfigurasi bersama antarmuka

Baris-baris berikut ini mengonfigurasi antarmuka web. Browser dimaksimalkan dan bilah status disembunyikan.

x
+
Terminal

$ vim ~/uzbl.conf

Konten:

set socket_dir=/tmp
set geometry=maximized
set show_status=0
set on_event = request ON_EVENT
set show_status=0

@on_event LOAD_FINISH script ~/dashboard/verhalten.js

3.4.) Selesai

Sesi “dasbor” bisa ditinggalkan:

x
+
Terminal

$ exit

3.5.) behaviour.js dan teks bergulir

Javascript ini mengontrol perilaku board. Jika build atau tes gagal, ticker besar ditampilkan. Dengan cara ini, saya bisa melihat kesalahan bahkan dari kejauhan.

x
+
Terminal

$ vim ~/verhalten.conf

Konten:

var bamboobUrl = 'https://ip:port';
var bambooUser = 'nutzer';
var bambooPassword = 'password';
var ticker = jQuery('<marquee direction="left" scrollamount="5" scrolldelay="2" style="display:none;background:#962526;position:fixed;bottom:0;left:0;width:100%;line-height:100px;font-size:80px;"></marquee>');

/*--------------------------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();
  }
};

var timer = new Timer(10000);
jQuery('body').append(ticker);

/* login verhalten */
timer.append(
  function()
  {
    if (jQuery('#loginForm_os_username').length > 0)
    {
      jQuery('#loginForm_os_username').val(bambooUser);
      jQuery('#loginForm_os_password').val(bambooPassword);
      jQuery('#loginForm_save').click();
    }
    else if (jQuery('.aui-dropdown2-trigger-group').length > 0)
    {
      window.location.href = window.gitlabUrl + '/telemetry.action';
    }
  }
);

/* roter ticker */
timer.append(
  function()
  {
    if (jQuery('.Failed').length > 0)
    {
      var failedJobs = new Array();

      jQuery.each(
        jQuery('.Failed'),
        function() {
          failedJobs.push( jQuery(this).children('.plan-name').text() + ' (' + jQuery(this).find('time').text() + ')');
        }
      );
      var text = 'Fehlerhafte Jobs: ' + failedJobs.join(' | ');
      if( jQuery(ticker).text() !== text) 
      {
          jQuery(ticker).html('<span>' + text + '</span>');
          jQuery(ticker).show();
      }
      
    }
    else
    {
        jQuery(ticker).hide();
    }
  }
);


Tentu saja, Anda dapat membangun perilaku apa pun yang Anda inginkan, seperti memulai ulang tes yang gagal.

4. autologue ke dalam sesi X

Langkah berikutnya adalah mengatur login otomatis. File ini diadaptasi untuk tujuan ini:

x
+
Terminal

$ sudo vim /etc/default/nodm

Pengguna login “dashboard” dimasukkan di sini dan manajer tampilan dinonaktifkan:

# nodm configuration
# Set NODM_ENABLED to something different than 'false' to enable nodm
NODM_ENABLED=true # <-- hier muss true hin

# User to autologin for
NODM_USER=dashboard # <-- hier muss dashboard hin

# First vt to try when looking for free VTs
NODM_FIRST_VT=7
# X session
NODM_XSESSION=/etc/X11/Xsession
# Options for the X server
NODM_X_OPTIONS='-nolisten tcp'
... usw

Sistem kemudian dapat di-boot ulang.

x
+
Terminal

$ sudo reboot

Siap

Setiap dasboard harus dihidupkan ulang sekali sehari. Saya telah membuat cron untuk ini.