Gestione delle Release
La Gestione delle Release traccia i deploy come oggetti di prima classe nel tuo workspace architetturale. Ogni release è collegata a un elemento C4, dando ai tuoi diagrammi una vista live di ciò che è effettivamente in esecuzione.
Concetti Fondamentali
Release
Una release rappresenta una versione specifica deployata in un ambiente. Ogni release ha:
| Campo | Descrizione |
|---|---|
| Versione | Tag semver o identificatore (es. v2.4.0, 3.12.0-rc.2) |
| Stato | Stato corrente nel ciclo di vita del deploy |
| Ambiente | Ambiente di destinazione (Produzione, Staging, ecc.) |
| Changelog | Cosa è cambiato in questa release |
| Sorgente | Come la release è stata creata (manuale, API, GitHub Action, webhook) |
| Elemento Collegato | Il sistema o container a cui appartiene questa release |
Ambienti
Gli ambienti rappresentano destinazioni di deploy. Sono definiti dall'utente e con codifica colore.
Configurazioni comuni includono:
- Development → Staging → Production
- Dev → QA → Pre-prod → Production
Crea quanti ambienti richiede il tuo workflow. Ogni release è taggata con il suo ambiente di destinazione.
Ciclo di Vita degli Stati
Le release attraversano questi stati:
| Stato | Descrizione |
|---|---|
| Pianificata | La release esiste ma non è stata ancora deployata. Utile per tracciare versioni future. |
| In Corso | Il deploy è in corso. Impostato automaticamente dalle integrazioni CI/CD. |
| Deployata | La release è live nel suo ambiente di destinazione. |
| Fallita | Il deploy non è andato a buon fine. La voce rimane come record di ciò che è stato tentato. |
| Rollback | La release è stata deployata ma successivamente annullata. |
Configurare il Tracciamento delle Release
1. Crea gli Ambienti
- Vai nelle Impostazioni del progetto
- Apri la scheda Release
- Sotto Ambienti, clicca su Aggiungi Ambiente
- Inserisci un nome e scegli un colore
- Trascina per riordinare gli ambienti per fase di deploy
2. Configura un Collegamento di Destinazione Predefinito
Imposta il sistema e opzionalmente un container dove le release dovrebbero essere collegate per impostazione predefinita:
- Nella scheda impostazioni Release, trova Collegamento di Destinazione Predefinito
- Seleziona un sistema dal dropdown
- Opzionalmente seleziona un container all'interno di quel sistema
- Questa destinazione viene usata quando le release ingerite non specificano un elemento
3. Scegli un Metodo di Integrazione
Archyl supporta tre modi per ingerire release automaticamente.
Metodi di Integrazione
GitHub Actions
Aggiungi la GitHub Action ufficiale di Archyl al tuo workflow di deploy.
Setup minimale:
- uses: archyl/release-action@v1
with:
api-key: ${{ secrets.ARCHYL_API_KEY }}
version: ${{ github.ref_name }}
Configurazione completa:
- uses: archyl/release-action@v1
with:
api-key: ${{ secrets.ARCHYL_API_KEY }}
version: ${{ github.ref_name }}
environment: production
system-id: <your-system-uuid>
container-id: <your-container-uuid>
changelog: "Bug fix e miglioramenti delle prestazioni"
status: deployed
L'action invia versione, commit SHA, ambiente e changelog ad Archyl ad ogni deploy riuscito.
Webhook
Configura l'ingestione webhook per ricevere eventi di release da GitHub o GitLab.
- Nella scheda impostazioni Release, abilita Webhook
- Copia l'URL del webhook visualizzato
- In GitHub o GitLab, aggiungi un nuovo webhook che punta a quell'URL
- Seleziona il tipo di evento Release o Tag push
Opzioni di configurazione:
| Impostazione | Descrizione |
|---|---|
| Pattern Tag | Filtra quali tag creano release (es. v* per tag che iniziano con v) |
| Ambiente Predefinito | Ambiente assegnato alle release create da webhook |
| Segreto Webhook | Segreto condiviso per la verifica del payload |
Quando una nuova release viene pubblicata o un tag corrispondente viene pushato, Archyl crea automaticamente una voce di release.
API REST
Per qualsiasi strumento CI/CD che può effettuare richieste HTTP -- Jenkins, CircleCI, Bitbucket Pipelines o pipeline personalizzate.
Endpoint: POST /api/v1/projects/:projectId/releases
Header:
Authorization: Bearer <api-key>
Content-Type: application/json
Payload:
{
"version": "v2.4.0",
"status": "deployed",
"changelog": "Aggiunta logica di retry per i pagamenti",
"environmentId": "<environment-uuid>",
"systemId": "<system-uuid>",
"containerId": "<container-uuid>",
"sourceUrl": "https://github.com/org/repo/releases/tag/v2.4.0"
}
La scheda impostazioni mostra snippet di codice copiabili con chiavi API e ID elementi auto-popolati.
Viste
Timeline delle Release
La vista principale. Le release sono raggruppate per mese in ordine cronologico inverso. Ogni voce mostra:
- Badge della versione
- Indicatore di stato
- Tag dell'ambiente (con codifica colore)
- Sistema o container collegato
- Sorgente (GitHub Action, webhook, API, manuale)
- Timestamp relativo
Clicca su qualsiasi release per aprire il pannello dettagli con il changelog completo, le date e un link alla sorgente.
Filtri:
- Per ambiente (es. mostra solo i deploy in produzione)
- Per stato (es. mostra solo i deploy falliti)
- Per elemento collegato
Matrice di Deploy
Una vista a griglia per team che gestiscono più servizi su più ambienti.
- Righe -- Sistemi e container
- Colonne -- Ambienti
- Celle -- Ultima release deployata per quella combinazione
La matrice rende visibile la divergenza degli ambienti a colpo d'occhio. Quando le versioni di staging e produzione divergono, lo noti immediatamente.
Collegare le Release all'Architettura
Ogni release può essere collegata a un sistema, un container o entrambi.
Collegamento Automatico
Quando si usano GitHub Actions o webhook, le release vengono collegate alla destinazione predefinita configurata nelle impostazioni. Puoi sovrascrivere la destinazione per release specificando system-id e container-id.
Collegamento Manuale
Quando crei una release tramite l'interfaccia:
- Clicca su Nuova Release
- Compila versione, stato e changelog
- Seleziona il sistema e/o container di destinazione
- Scegli l'ambiente
- Clicca su Crea
Visualizzazione sul Diagramma
Fai clic destro su qualsiasi elemento nel diagramma C4 per aprire il pannello dettagli. Le release collegate appaiono nella sezione Release insieme a relazioni, ADR e contratti API. L'elemento mostra la versione e l'ambiente della release più recente.
Creare Release Manualmente
Non tutte le release vengono da una pipeline. Per creare una release manualmente:
- Naviga alla scheda Release
- Clicca su Nuova Release
- Inserisci la versione, seleziona stato e ambiente
- Scrivi un changelog (supporto markdown)
- Collega a un sistema e/o container
- Clicca su Crea
Le release manuali hanno la sorgente marcata come Manuale nella timeline.
Best Practice
Usa il Versionamento Semantico
- Tagga le release con semver (es.
v1.2.3) - Includi identificatori pre-release per release non di produzione (es.
v2.0.0-rc.1) - Mantieni le stringhe di versione consistenti tra gli ambienti
Traccia Tutti gli Ambienti
- Crea ambienti per ogni fase di deploy
- Non saltare lo staging -- la matrice di deploy è più utile quando mostra la pipeline completa
- Usa la vista matrice per individuare precocemente la divergenza degli ambienti
Automatizza l'Ingestione
- Usa GitHub Actions o webhook invece dell'inserimento manuale
- Configura l'integrazione una volta e ogni deploy fluisce automaticamente
- Riserva la creazione manuale per hotfix o deploy eccezionali
Scrivi i Changelog
- Includi un changelog significativo con ogni release
- Riassumi cosa è cambiato e perché
- Collega a issue o pull request correlate quando possibile
Collega al Livello Giusto
- Collega ai sistemi quando deployi un'intera applicazione
- Collega ai container quando deployi servizi individuali all'interno di un sistema
- Sii consistente -- scegli una convenzione e mantienila
Prossimi Passi
- Contratti API -- Documentare le tue specifiche API
- Insight Architetturali -- Rilevare problemi architetturali
- Richieste di Modifica Architetturale -- Proporre modifiche attraverso un workflow di revisione