Come pubblicare i Fedora Badges

Architettura

Il demone back-end che assegna i badge, fedbadges, si attiva quando riceve un evento fedmsg. Confronta il messaggio e la cronologia in datanommer con una serie di regole. Se un contributore corrisponde ai criteri descritti in una di queste regole, gli viene assegnato un badge.

Il front-end è un’applicazione web chiamata Tahrir. Si tratta per lo più di un’interfaccia che permette agli utenti di guardare i loro badge. Tuttavia, dispone anche di un’interfaccia di amministrazione per aggiungere manualmente nuovi badge, assegnare badge e creare "inviti" (codici QR) per i badge.

Il demone del back-end che assegna i badge, fedbadges, viene eseguito sul nodo badges-backend01. Il processo è fedmsg-hub e i log sono in /var/log/fedmsg/fedmsg-hub.log.

Il front-end viene eseguito sotto apache/mod_wsgi sui nodi badges-web0{1,2}.

Documentazione Upstream

  • Per una descrizione dettagliata del funzionamento del demone fedbadges, consultare fedbadges README.

  • Per un diagramma dei componenti del sistema Fedora Badges che interagiscono tra loro, si veda il sito fedbadges diagrams.

Processo Sysadmin: Come pubblicare un badge

La pubblicazione dei badge consiste in due operazioni:

  1. Pubblica gli asset dei badge (.png, .svg, .yaml) to fedora-badges repository

  2. aggiungi badge a badges.fedoraproject.org

Chiunque abbia i permessi di scrittura su fedora-badges può inserire i badge. Si possono usare anche le richieste di pull. Solo i membri del gruppo FAS sysadmin-badges e amministratori dell’interfaccia web possono aggiungere badge.

Gli artisti dei badge e gli sviluppatori di badge dovrebbero inviare le risorse del design (arte png e svg) e le regole (yaml) al repository fedora-badges.

Preparazione per la creazione di un badge

Una volta che un badge è stato approvato dal team di progettazione e ha il tag ready to push, è pronto per essere inserito. Seguite questa lista di controllo per pubblicare un nuovo badge:

  1. Assicurarsi che la grafica sia approvata dal team di progettazione.

  2. Assicurarsi che il nome e la descrizione del badge siano chiari

  3. Assicuratevi che uno di questi requisiti sia soddisfatto:

    • _Badge assegnati manualmente: Quali account FAS ricevono le autorizzazioni per l’assegnazione dei badge?

    • Awarded via fedmsg rule: Il file YAML con le regole è presente

Se siete confusi o manca qualcosa, commentate il problema e rimuovete il tag ready to push.

Aggiungere le risorse dei badge a Pagure

  1. Scaricare l’artwork e il file delle regole (se applicabile):

    • Verificate che l’artwork sia effettivamente la versione finale del ticket

    • Aprire/visualizzare entrambi i file artistici per verificare che non siano corrotti (in passato, le immagini corrotte sono state inserite accidentalmente).

  2. Dare a entrambi i file delle regole e delle immagini lo stesso nome, inserirli nelle directory pngs/, svg/, rules/.

  3. Solo su richiesta: Generare un file STL per la stampa 3D di un badge:

    • Cambiare directory in bin/ ed eseguire export.sh. Questo crea un file STL per il badge e lo sposta nella posizione corretta.

    • Per ulteriori informazioni sullo script, consultare il file README in bin/.

  4. Fare il commit di tutti i file e fare il push a fedora-badges (o fare un PR)

Assicurarsi che i file abbiano un nome ragionevole (ad esempio, all-lowercase-dashes-only.png). Alcuni tipi di badge seguono una convenzione di denominazione, come i badge di appartenenza al gruppo FAS (ad esempio fas-badge-name.png) o i badge di costruzione Koji (ad esempio koji-badge-name.png). Seguire i precedenti, se possibile. In seguito, il nome del file viene utilizzato per il file sul server front-end (ad esempio, https://badges.fedoraproject.org/pngs/all-lowercase-dashes-only.png).

Eseguire il push delle risorse al server back-end tramite Ansible

Nota_: Tutte le risorse devono essere nel ramo master di fedora-badges prima di procedere. È inoltre necessario essere un membro di sysadmin-badges in FAS perché questo funzioni.

Successivamente, è necessario spostare tutte le risorse dal repository Pagure al server back-end. Questo viene fatto tramite un Ansible playbook dal server batcave. Seguire questi passi per portare le risorse in produzione.

  1. SSH in batcave01.iad2.fedoraproject.org

  2. Eseguire il playbook: sudo rbac-playbook manual/push-badges.yml

  3. Inserire la password FAS e token 2FA.

  4. Una volta terminato, assicurarsi che il badge sia visibile pubblicamente (ad esempio, https://badges.fedoraproject.org/pngs/<nome>.png).

Aggiungere badge assegnati automaticamente

Nota: Prestare molta attenzione quando si seguono questi passaggi. È facile creare un badge, ma è molto più difficile modificarlo in seguito. Controllare due volte che le informazioni siano inserite correttamente nel file YAML al primo tentativo, altrimenti si dovranno scrivere istruzioni SQL per correggerle in seguito.

I badge assegnati automaticamente sono creati dal file di regole YAML. Una volta terminato il playbook di Ansible, il badge viene creato e inserito nell’indice badges index. L’unica parte che non viene creata automaticamente sono i tag (vedere Metadati del badge più avanti per informazioni sui tag). Per aggiungere nuovi tag, trovare il badge su badges.fedoraproject.org. Se si è connessi come amministratori, c’è un campo di testo per inserire nuovi tag.

Aggiungere badge assegnati manualmente

Nota: Prestare molta attenzione quando si seguono questi passaggi. È facile creare un badge, ma è molto più difficile modificarlo in seguito. Controllare due volte che le informazioni siano inserite correttamente al primo tentativo, altrimenti si dovranno scrivere istruzioni SQL per correggerle in seguito.

Una volta che le risorse del badge sono state inviate al back-end, aggiungere il badge al front-end, Tahrir. Il front-end è ospitato su badges.fedoraproject.org. Seguire questi passaggi per aggiungere il badge a Tahrir.

  1. Apri_interfaccia_Admin su badges.fedoraproject.org

  2. Vai alla _Sezione_Aggiungi Badge.

  3. Inserire tutte le informazioni fornite nel ticket del badge (vedere Metadati del badge qui sotto.)

  4. Ricontrollate che tutte le informazioni inserite siano corrette e accurate

  5. Fare clic su Crea badge per creare un nuovo badge

Il badge è stato creato. Dovresti essere in grado di trovarlo in indice dei badge.

Concedi autorizzazioni

I badge assegnati manualmente richiedono l’emissione di un badge da parte di utenti autorizzati. È possibile farlo nella parte inferiore dell’interfaccia Admin, vicino a Creare autorizzazioni. Aggiungete la persona che deve ricevere i privilegi di assegnazione nel campo Person Email. Questo deve essere formattato come l’indirizzo e-mail di fedoraproject.org (ad esempio, FASuser [at] fedoraproject [dot] org). Per il nome del badge, utilizzare lo slug (o il nome del badge) dell’URL del badge (ad esempio, per badges.fedoraproject.org/badge/commops-superstar, questo è commops-superstar).

Per aggiungere più utenti, ripetere questa procedura per ogni utente.

Metadata Badge

  • Nome: nome del badge - determina l’URL del badge, quindi controllare tre volte che non ci siano errori di battitura.

  • Immagine: link completo al PNG (ad es. https://badges.fedoraproject.org/pngs/all-lowercase-dashes-only.png)

  • Descrizione: testo di descrizione del badge (assicurarsi che non ci siano spazi vuoti).

  • Criteri: link to the issue in fedora-badges

  • Issuer: mantenere l’impostazione predefinita

  • Tags: elenco dei tag delimitato da virgole:

    • *Esaminare altri badge simili per assicurarsi che le etichette siano corrette. Alcuni tag sono speciali e fungono da categorie.

    • Seguire i precedenti per i tag. Se possibile, evitare di creare nuovi tag.

    • Rimuovere i tag non è facile. Aggiungerli in seguito è facile.

Chiudere il ticket

Dopo aver pubblicato il badge, eseguire alcuni controlli finali per assicurarsi che il badge sia stato pubblicato correttamente. Assicurarsi che la pagina sia visualizzabile e verificare che sia categorizzata correttamente nell’indice badges.

Tornare alla pagina del badge. Inserite il link del badge pubblicato. Se sono state concesse le autorizzazioni, elencare i nomi degli utente FAS a cui sono state concesse le autorizzazioni. Dopo aver commentato, chiudere il problema come pubblicato.

Congratulazioni, hai appena pubblicato il tuo Fedora Badge personale!

Come assegnare manualmente un badge

Per eseguire questa operazione, è necessario far parte del gruppo FAS sysadmin-badges.

C’è uno script installato su badges-backend01 in /usr/local/bin/award-badge. Ha delle opzioni di aiuto che possono essere richiamate con award-badge -h. Richiede l’opzione --user FAS_USERNAME e l’opzione --badge BADGE_ID. Per esempio, la seguente invocazione assegnerà il badge "Associate Editor" a "ralph":

sudo /usr/local/bin/award-badge --user ralph --badge associate-editor

Il BADGE_ID di un badge può essere trovato visitando la sua pagina sull’interfaccia web. Il badge si trova all’indirizzo https://badges.fedoraproject.org/badge/associate-editor.

Lo script award-badge e il codice sorgente sono gestiti da ansible.git. Il codice sorgente si trova in roles/badges/backend/files/award-badge.

Spesso c’è bisogno di un flusso di lavoro per assegnare in batch un badge a un certo numero di persone. Per esempio, il badge Keepin' Fedora Beautiful è il risultato dell’invio di un ticket da parte di un membro del Design Team con un elenco di nomi utente FAS (ad esempio fedora-badges#129).

For cases, like that you can wget the file with the list of FAS usernames on badges-backend01 and run something like:

$ for i in $(cat keepingbeautiful-list ) ; do
    sudo /usr/local/bin/award-badge --user $i --badge keepin-fedora-beautiful-f20;
done

Come revocare manualmente un badge o un’autorizzazione

È possibile revocare le autorizzazioni per badge o badge in modo simile allo script award-badges. È possibile concatenare l’invocazione dello script revoke-badge o revoke-authorization nello stesso modo dello script award-badges.

Revoca di un badge:
sudo /usr/local/bin/revoke-badge --user ralph --badge associate-editor
Revoca di un’autorizzazione:
sudo /usr/local/bin/revoke-authorization --user ralph --badge associate-editor

Come aggiungere amministratori a Tahrir

Sarebbe bello poter concedere automaticamente l’accesso come amministratore nell’interfaccia web ai membri del gruppo FAS sysadmin-badges. Attualmente non disponiamo di questa funzione e dobbiamo gestire separatamente l’elenco degli amministratori dell’interfaccia web.

Il file di configurazione per la web app front-end dei badge è gestito da ansible.git. Il codice sorgente si trova in roles/badges/frontend/templates/tahrir.ini.

In questo file, trovare l’opzione tahrir.admin. Si tratta di un elenco separato da virgole d’indirizzi e-mail ai quali, una volta effettuato il login, devono essere concessi i diritti d’accesso ai pannelli di amministrazione di badges.fedoraproject.org.

Per aggiungere un nuovo amministratore, aggiungere la sua email FAS_USERNAME@fedoraproject.org a questa riga, eseguire il commit e il push. Usare Ansible per eseguire il playbook groups/badges-web.yml per pubblicare la modifica della configurazione ai nodi web front-end.

Come creare un invito e un codice QR

La procedura viene eseguita attraverso il pannello di amministrazione dell’interfaccia web (anche se probabilmente si può scrivere uno script da utilizzare sul nodo di back-end).

Gli inviti e i codici QR sono tipicamente creati per gli eventi Fedora. Ad esempio, in occasione della conferenza Flock 2013 Fedora Contributors, abbiamo creato un badge per premiare i partecipanti. È stata seguita la procedura seguente per generare un invito e un codice QR. Successivamente, il codice QR è stato distribuito agli organizzatori della conferenza. Questi hanno aggiunto il codice QR alla brochure del programma che è stata consegnata a ogni partecipante. Quindi, ogni partecipante che ha scansionato il codice è stato reindirizzato sul proprio telefono all’app Badge, dove ha ottenuto il badge.

Creare un invito

  1. Assicurarsi di essere un amministratore nell’interfaccia web e di aver effettuato l’accesso a badges.fedoraproject.org

  2. Fare clic sul link Admin nell’interfaccia utente

  3. Nella sezione Inviti, aggiungete queste informazioni:

    • Data di creazione: Opzionale. La data predefinita è quella corrente.

    • Data di scadenza: Opzionale, ma probabilmente si desidera specificarne una. L’impostazione predefinita è di 2 ore dall’ora corrente. Ad esempio, alla conferenza Flock 2013, abbiamo impostato la data di scadenza alla fine della conferenza. Chiunque avesse provato a richiedere il badge con il codice QR dopo quell’ora sarebbe stato respinto, con il messaggio questo invito è scaduto.

    • Badge ID: "ID" del badge che si vuole assegnare. Vedere la sezione sopra per trovare l’ID di un badge.

    • Email della persona: Email di una persona nel database dei badge. Nel nostro caso, utilizzare l’email di Fedora (ad esempio, FAS_USERNAME@fedoraproject.org).

A questo punto, l’utente specificato avrà un link al codice QR e un link di invito sulla sua pagina del profilo. L’utente potrà distribuire e condividere il badge come desidera.

Script utili per il controllo manuale

See ansible/roles/badges/backend/files/ for the motherload. These all get deployed to /usr/local/bin/ on badges-backend01 where you can login to execute them.

Modifica-badge

Aggiornare la descrizione e il link ai criteri di un badge. Utile nel caso in cui il badge sia stato creato in modo errato o nel caso in cui il feedback di altre parti interessate richieda di modificare qualcosa.

award-badge

Assegnare un badge a un utente specifico.

revocare-badge

Revoca un badge a un utente a cui è stato assegnato erroneamente. *Se si revoca l’assegnazione di un badge a un utente, si dovrebbe anche dargli il badge consolation-prize come segno di scuse.

concedere-autorizzazioni

Concedete i diritti di autorizzazione su un badge a un utente privilegiato. Questi può quindi creare link di invito e codici QR per quel badge e assegnarlo direttamente ad altri utenti dall’interfaccia web.

revocare autorizzazioni

Revocare i diritti di autorizzazione per un utente su un determinato badge.

Informazioni di contatto

Proprietario

Community Fedora Badges

Contatti

#fedora-badges

Server

badges-web0*, badges-backend0*

Scopo

Assegnare "badge" ai collaboratori Fedora