Salta el contingut
 

Ferramentes de gestió de projectes a GitHub

Joan Puigcerver Ibáñez

Llicència: CC BY-NC-SA 4.0

(Reconeixement - NoComercial - CompartirIgual) 🅭

Ferramentes de gestió de projectes a GitHub

Els serveis d'allotjament de repositoris en línia, com GitHub, GitLab o Codeberg, ofereixen una sèrie de ferramentes i funcionalitats que permeten gestionar de manera fàcil i eficaç projectes col·laboratius de desenvolupament de programari.

Aquests apunts se centren en la part de gestió de projectes: crear debats, comunicar incidències i organitzar tasques.

Debats

Els debats (Discussions) són un espai de comunicació on les persones que formen part d'un projecte o d'una comunitat poden intercanviar idees i opinions, fer suggeriments o debatre sobre temes concrets.

Aquesta funcionalitat no està habilitada per defecte. Per activar-la, cal anar al menú de configuració del repositori, Settings, i habilitar-la.

Configuració dels debats en un repositori de GitHub

Figura 1. Configuració dels debats (Discussions) en un repositori de GitHub.

Exemple: Debats en aquest repositori

Aquest lloc web està allotjat a GitHub i té habilitada la funcionalitat de debats. S'hi pot accedir mitjançant la secció Discussions del menú superior o en aquest enllaç.

Debats en el repositori d'aquest curs a GitHub

Figura 2. Debats en el repositori d'aquest curs a GitHub.

Exemple: Debats a Material for MkDocs

Material for MkDocs és el tema per al generador de llocs web estàtics MkDocs que s'utilitza per a generar aquest lloc web.

El codi font d'aquest tema està allotjat en el seu repositori a GitHub, on s'han habilitat els debats perquè la comunitat puga intercanviar idees i suggeriments o plantejar dubtes.

Debats a Material for MkDocs

Figura 3. Debats en el repositori mkdocs-material a GitHub.

Els debats s'organitzen en categories, que permeten classificar-los per temes i facilitar-ne la cerca. A més de les categories per defecte, se'n poden afegir de noves o eliminar les existents. Les categories per defecte són les següents:

  • 📣 Announcements: anuncis oficials. Només les persones propietàries del repositori poden crear debats en aquesta categoria.
  • 💬 General: debats generals.
  • 💡 Ideas: suggeriments i propostes.
  • 🗳 Polls: enquestes.
  • 🙏🏻 Q&A: preguntes i respostes.
  • 🙌🏻 Show and Tell: projectes i treballs relacionats amb el repositori.

Incidències

Les incidències (Issues) són una ferramenta per a crear i fer el seguiment de les incidències relacionades amb un projecte. A més, permeten que les persones del projecte es comuniquen i col·laboren per a aportar informació sobre la incidència i debatre'n la resolució.

Exemple: Incidències a Material for MkDocs

Material for MkDocs també utilitza les incidències per a informar de problemes, suggeriments o millores del tema. S'hi pot accedir mitjançant la secció Issues del menú superior.

Llista d'incidències en un repositori de GitHub

Figura 4. Llista d'incidències en el repositori mkdocs-material a GitHub.

Les incidències contenen la informació següent:

  • Títol: descripció breu de la incidència.
  • Descripció: informació detallada de la incidència. En aquesta secció és important proporcionar tota la informació necessària per a entendre la incidència i poder resoldre-la. A més, les persones propietàries del repositori poden configurar plantilles per a la creació d'incidències, que faciliten la recopilació d'aquesta informació.
  • Assignació: permet assignar la incidència a una o més persones del projecte.
  • Etiquetes: permeten classificar les incidències per a facilitar-ne la gestió.
  • Fites: permeten agrupar les incidències per a complir un objectiu específic.
  • Referències: permeten relacionar la incidència amb altres incidències o consultar si altres incidències l'han referenciada.
  • Pull Requests: indiquen si la incidència està relacionada amb alguna sol·licitud d'incorporació de canvis.

Les incidències es creen amb l'estat Oberta, que es pot canviar a Tancada una vegada resolta la incidència.

Exemple: Incidència a Material for MkDocs

La imatge següent mostra una incidència en el repositori Material for MkDocs, on s'informa d'un problema per a deshabilitar la barra de cerca.

Incidència en un repositori de GitHub

Figura 5. Incidència en el repositori mkdocs-material a GitHub.

Exemple: Plantilla per a incidències

En aquest repositori s'ha configurat una plantilla per a informar d'una correcció en la documentació. Se'n pot vore el funcionament triant la plantilla Correcció en la creació d'una incidència nova.

Les plantilles es defineixen en fitxers Markdown, que s'han de guardar en la carpeta .github/ISSUE_TEMPLATE.

.github/ISSUE_TEMPLATE/correccio.md
---
name: Correcció
about: Comunica l'error per ajudar-nos a millorar!
title: "[CORRECCIO]"
labels: bug, documentation
assignees: ''
---

**Localització l'error**
Indica l'enllaç a la pàgina que conté l'error.


**Descriu l'error**
Indica de manera clara quin és l'error.


**Correcció**
Indica com es pot corregir l'error.


**Captures de pantalla**
Si és necessari, pots adjuntar una captura de pantalla.


**Context addicional**
Pots indicar context addicional a la correció (ex. navegador web utilitzat, sistema operatiu...)

GitHub Projects

Els projectes de GitHub (GitHub Projects) són una ferramenta de gestió de tasques que permet organitzar, classificar i prioritzar les tasques d'un projecte.

Exemple: Projecte d'exemple

He creat un projecte d'exemple dins de l'organització del curs. Aquest projecte està buit, però és útil perquè pugues entrar-hi i vore les diferents vistes i opcions que ofereix.

Exemple de projecte en un repositori de GitHub

Figura 6. Exemple de projecte en un repositori de GitHub.

Exemple: Projecte utilitzat a l'aula

La imatge següent mostra l'estat d'un projecte utilitzat a l'aula per a organitzar les tasques de l'alumnat en un projecte col·laboratiu de desenvolupament de programari.

Exemple de projecte en un repositori de GitHub utilitzat a l'aula

Figura 7. Exemple de projecte en un repositori de GitHub utilitzat a l'aula.

Els projectes s'organitzen en diferents pestanyes, cadascuna amb una vista i una organització diferents de les tasques:

  • Backlog: tauler Kanban amb les tasques pendents organitzades per columnes.
  • Current iteration: tasques planificades per a la iteració o sprint actual.
  • Roadmap: diagrama de Gantt amb les tasques planificades al llarg del temps.
  • Team planning: vista més detallada de cada tasca, organitzades per estat, prioritat i assignació.
  • My items: vista semblant a Team planning, però que només mostra les tasques assignades a la persona usuària.

Cada tasca es crea com un esborrany (draft), que es pot convertir en una incidència del repositori. Cada tasca conté la mateixa informació que una incidència, però a més es pot especificar:

  • Persona assignada: qui s'encarrega de la tasca.
  • Prioritat: importància de la tasca respecte de la resta.
  • Mida: magnitud de la tasca.
  • Estimació de temps: temps previst per a completar la tasca.
  • Data d'inici: data en què comença la tasca.
  • Data de finalització: data en què ha d'acabar la tasca.
  • Iteració: iteració a la qual pertany la tasca.
Exemple: Tasca

La imatge següent mostra una tasca creada com a esborrany (draft) en un projecte de GitHub.

Exemple de tasca en un projecte de GitHub

Figura 8. Exemple de tasca en un projecte de GitHub.

Fites

Les fites (Milestones) són un mecanisme per a agrupar incidències i pull requests dins d'un repositori. S'utilitzen per a definir objectius específics en el desenvolupament del projecte.

Cada fita conté la informació següent:

  • Títol: nom de la fita.
  • Descripció: objectiu de la fita.
  • Data de venciment: (opcional) data límit per a assolir la fita.
  • Percentatge de progrés: es calcula a partir de les incidències obertes i tancades.

Les fites són accessibles amb el botó Milestones, des de la vista Issues o Pull Requests del repositori.

Exemple: Fites en aquest repositori

En aquest repositori s'ha creat una fita per a agrupar les incidències relacionades amb la preparació de la documentació del curs.

Fita en aquest repositori

Figura 9. Fita en aquest repositori.

Llançaments

Els llançaments (Releases) són una funcionalitat de GitHub que permet indicar que s'ha publicat una versió del projecte, amb informació rellevant sobre els canvis realitzats i les persones que hi han contribuït.

Els llançaments sempre estan associats a una etiqueta, que pot existir prèviament o es pot crear en el moment. Encara que són semblants, no s'han de confondre: els llançaments són elements de GitHub, mentre que les etiquetes són objectes de Git.

Exemple: Llançaments a Material for MkDocs

Material for MkDocs també utilitza els llançaments per a indicar que s'ha publicat una versió nova del tema. S'hi pot accedir mitjançant la secció Releases del lateral de la pàgina principal del repositori.

Exemple de llançament en un repositori de GitHub

Figura 10. Exemple de llançament en el repositori mkdocs-material a GitHub.

Des de la secció de llançaments es pot crear un llançament nou, que ha d'incloure la informació següent:

  • Títol: descripció breu del llançament o número de versió.
  • Descripció: informació detallada dels canvis realitzats.
  • Etiqueta: etiqueta associada al llançament.
  • Fitxers binaris: fitxers binaris associats al llançament.

GitHub permet generar automàticament les notes de llançament, amb informació sobre les pull requests i les persones que hi han contribuït.

Exemple: Creació d'un llançament

La imatge següent mostra la creació d'un llançament nou en un repositori de GitHub.

Creació d'un llançament en un repositori de GitHub

Figura 11. Creació d'un llançament en un repositori de GitHub.

📌 Aquest document pot quedar desactualitzat després d’imprimir-lo. Pots consultar la versió més recent a la pàgina web.
🌿 Abans d’imprimir aquest document, considera si és realment necessari. Redueix el consum de paper i ajuda a protegir el nostre entorn.