Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix/303 repository improvement #305

Merged
merged 9 commits into from
Jan 24, 2024
Merged

Fix/303 repository improvement #305

merged 9 commits into from
Jan 24, 2024

Conversation

AntoninoBonanno
Copy link
Collaborator

@AntoninoBonanno AntoninoBonanno commented Jan 14, 2024

Descrizione

  1. Ho aggiunto prettier e migliorato le regole eslint per un codice più pulito e affidabile. (5b1e611)
  2. Adesso prima di effettuare un commit verrà effettuato il 'lint' dei file messi in stage. Così i file, se possibile, verranno automaticamente corretti, altrimenti verrà bloccato il commit mostrando gli errori da correggere in console. (58dd807)
  3. Adesso il formato dei messaggi dei commit verrà analizzato prima di effettuare il push, così lo sviluppatore non può sbagliare il formato del commit. Se il formato è errato verrà visualizzato in console. (6c357c4)
  4. Ho aggiunto semantic-release per il versioning automatico ee creazione di tag/release su GitHub (22098d6)
  5. Ho modificato i workflow per adattarli al semantic-release (75cc845)
  6. Aggiornata la documentazione nel CONTRIBUTING.md (91e1d56)

Semantic release

@astagi non so se hai mai usato questa libreria, l'ho introdotta perchè ho notato degli script sul package.json che mi hanno dato la sensazione che il numero di versione lo si imposta manualmente.

Così invece oltre a facilitare il flusso di deploy, genera automaticamente il numero successivo della versione basandosi sui tipi dei messaggi nei commit. Per tale motivo ti chiedo di fare attenzione ai messaggi nei commit, soprattutto nelle PR di nuovi contributor (eventualmente si fa uno squash con un messaggio dedicato).

Quindi la regola è:

  • se devo incrementare il numero di versione, quindi è perchè ho modificato file della libreria, uso i tipi fix,feat e BREAKING CHANGE
  • se non devo modificare il numero di versione posso usare gli altri tipi
    • quindi se devo fare fix o feat sulla documentazione bisogna usare docs e magari nello scope indicare se è fix o feat (Esempio docs(fix): fixed button example)

E' descritto meglio nel file CONTRIBUTING.md.

Magari per adesso che siamo in prerelease e non abbiamo un cambiamento di tipo semver sul tag, tutto questo sembra essere inutile, ma sarà molto comodo appena verrà rilasciata la versione stabile.

Se ho configurato tutto bene, il formato del changelog, il nome del tag e la release dovrebbero generarsi come è stato fin ora. Cambia che è tutto automatizzato al push sulla main.

@astagi ti chiedo gentilmente se puoi verificare i workflow che ho creato, dovrebbero funzionare così:

  1. Lint commits: effettua il lint dei messaggi di commit
    • Eseguito al push sulla main e nelle PR con destinazione main
  2. Run tests: verifica se la documentazione e la libreria vengono compilate correttamente ed effettua i test
    • Eseguito al push sulla main e nelle PR con destinazione main
  3. Publish release: effettua il semantic-release
    • Eseguito solo al push sulla main e se Run tests si è concluso correttamente (Verificare che non si azioni nelle PR)
    • Se ci sono modifiche (fix,feat e BREAKING CHANGE) cambia il numero di versione in entrambi i progetti, rilascia il pacchetto npm, genera changelog, genera il tag, genera la release su GitHub, effettua un commit con i file aggiornati.
    • Se non ci sono modifiche il workflow non fallisce
  4. Update documentation: aggiorna il sito della documentazione
    • Eseguito solo al push sulla main e se Publish release si è concluso correttamente (Quindi anche se non ci sono modifiche alla libreria, la documentazione verrà aggiornata)
  5. Slack notification: notifica a slack
    • Eseguito solo al push tag (Quindi solo se Publish release ha rilasciato un tag)

Copy link

vercel bot commented Jan 14, 2024

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Updated (UTC)
design-angular-kit ✅ Ready (Inspect) Visit Preview Jan 24, 2024 1:18pm

Copy link

codecov bot commented Jan 14, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Comparison is base (7284f5b) 48.96% compared to head (32dad2c) 46.96%.
Report is 34 commits behind head on main.

❗ Current head 32dad2c differs from pull request most recent head 8dec82b. Consider uploading reports for the commit 8dec82b to get more accurate results

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #305      +/-   ##
==========================================
- Coverage   48.96%   46.96%   -2.01%     
==========================================
  Files          74       81       +7     
  Lines        1162     1169       +7     
  Branches      220      242      +22     
==========================================
- Hits          569      549      -20     
- Misses        574      596      +22     
- Partials       19       24       +5     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

commitlint.config.js Outdated Show resolved Hide resolved
message="chore(release): %s :tada:"
registry=https://registry.npmjs.org/
always-auth=true
tag=unstable
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Quando bisogna rilasciare la versione stabile: rimuovere tag=unstable

branches: [
{
name: "main",
prerelease: true
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Quando bisogna rilasciare la versione stabile: rimuovere prerelease: true

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@astagi ho notato che non è possibile non avere una branch di release (qui ne ho configurata una ma solo di prerelease)

semantic-release/semantic-release#2503 (comment)

La soluzione sembrerebbe usare un'altra branch per i rilasci di pre-release

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@AntoninoBonanno ho letto tutta la questione, alla fine mi son convinto di aprire una branch prerelease dove direi di attivare le varie action. Quando si lancia una action possiamo decidere se lanciarla su main oppure su prerelease penso che a questo punto semanticrelase riesca a riconoscere il branch e capire cosa rilasciare.

@astagi
Copy link
Member

astagi commented Jan 15, 2024

Descrizione

  1. Ho aggiunto prettier e migliorato le regole eslint per un codice più pulito e affidabile. (5b1e611)
  2. Adesso prima di effettuare un commit verrà effettuato il 'lint' dei file messi in stage. Così i file, se possibile, verranno automaticamente corretti, altrimenti verrà bloccato il commit mostrando gli errori da correggere in console. (58dd807)
  3. Adesso il formato dei messaggi dei commit verrà analizzato prima di effettuare il push, così lo sviluppatore non può sbagliare il formato del commit. Se il formato è errato verrà visualizzato in console. (6c357c4)
  4. Ho aggiunto semantic-release per il versioning automatico ee creazione di tag/release su GitHub (22098d6)
  5. Ho modificato i workflow per adattarli al semantic-release (75cc845)
  6. Aggiornata la documentazione nel CONTRIBUTING.md (91e1d56)

Semantic release

@astagi non so se hai mai usato questa libreria, l'ho introdotta perchè ho notato degli script sul package.json che mi hanno dato la sensazione che il numero di versione lo si imposta manualmente.

Così invece oltre a facilitare il flusso di deploy, genera automaticamente il numero successivo della versione basandosi sui tipi dei messaggi nei commit. Per tale motivo ti chiedo di fare attenzione ai messaggi nei commit, soprattutto nelle PR di nuovi contributor (eventualmente si fa uno squash con un messaggio dedicato).

Quindi la regola è:

  • se devo incrementare il numero di versione, quindi è perchè ho modificato file della libreria, uso i tipi fix,feat e BREAKING CHANGE

  • se non devo modificare il numero di versione posso usare gli altri tipi

    • quindi se devo fare fix o feat sulla documentazione bisogna usare docs e magari nello scope indicare se è fix o feat (Esempio docs(fix): fixed button example)

E' descritto meglio nel file CONTRIBUTING.md.

Magari per adesso che siamo in prerelease e non abbiamo un cambiamento di tipo semver sul tag, tutto questo sembra essere inutile, ma sarà molto comodo appena verrà rilasciata la versione stabile.

Se ho configurato tutto bene, il formato del changelog, il nome del tag e la release dovrebbero generarsi come è stato fin ora. Cambia che è tutto automatizzato al push sulla main.

@astagi ti chiedo gentilmente se puoi verificare i workflow che ho creato, dovrebbero funzionare così:

  1. Lint commits: effettua il lint dei messaggi di commit

    • Eseguito al push sulla main e nelle PR con destinazione main
  2. Run tests: verifica se la documentazione e la libreria vengono compilate correttamente ed effettua i test

    • Eseguito al push sulla main e nelle PR con destinazione main
  3. Publish release: effettua il semantic-release

    • Eseguito solo al push sulla main e se Run tests si è concluso correttamente (Verificare che non si azioni nelle PR)
    • Se ci sono modifiche (fix,feat e BREAKING CHANGE) cambia il numero di versione in entrambi i progetti, rilascia il pacchetto npm, genera changelog, genera il tag, genera la release su GitHub, effettua un commit con i file aggiornati.
    • Se non ci sono modifiche il workflow non fallisce
  4. Update documentation: aggiorna il sito della documentazione

    • Eseguito solo al push sulla main e se Publish release si è concluso correttamente (Quindi anche se non ci sono modifiche alla libreria, la documentazione verrà aggiornata)
  5. Slack notification: notifica a slack

    • Eseguito solo al push tag (Quindi solo se Publish release ha rilasciato un tag)

Gran bel lavoro! La libreria è molto interessante, bisognerebbe capire se possiamo utilizzare un versionamento "custom" come già stiamo facendo su Bootstrap Italia e sui kit, ovvero la major version sarà sulla second cifra invece che sulla prima (da 1.0.0 a 1.1.0 è una major version).. quando faremo Bootstrap Italia 3 allora passeremo alla 2.0.0 e così via.

@AntoninoBonanno
Copy link
Collaborator Author

AntoninoBonanno commented Jan 15, 2024

@astagi si certo per ogni tipologia di commit puoi decidere come aggiornare il semver

https://github.com/semantic-release/commit-analyzer?tab=readme-ov-file#releaserules

Puoi configurare tu questa parte?

@astagi
Copy link
Member

astagi commented Jan 15, 2024

@astagi si certo per ogni tipologia di commit puoi decidere come aggiornale il semver

https://github.com/semantic-release/commit-analyzer?tab=readme-ov-file#releaserules

Puoi configurare tu questa parte?

Perfetto! Ci guardo, grazie mille @AntoninoBonanno!

@AntoninoBonanno
Copy link
Collaborator Author

AntoninoBonanno commented Jan 15, 2024

@astagi Credo che potresti usare delle regole in modo che se si usa feat + uno scope deciso da te -> allora solo in questo caso si aggiorna la major. E dovresti disabilitare il fatto che con i breaking changes si aggiorna la major.

Perchè di default funziona così:

  • fix: un commit di tipo fix risolve un errore nel codice (correlato al PATCH in un
    versionamento SemVer).

  • feat: un commit di tipo feat introduce una nuova funzionalità al codice (correlato al MINOR in un
    versionamento SemVer).

  • BREAKING CHANGE: un commit che contiene in un piè di pagina BREAKING CHANGE:, o aggiunge un ! subito dopo il
    tipo/contesto, all’inizio delle sezioni opzionali corpo o piè di pagina, introduce una breaking API change (correlato
    al MAJOR in un versionamento SemVer).

// default Angular
{ breaking: true, release: "major" },
{ revert: true, release: "patch" },
{ type: "feat", release: "minor" },
{ type: "fix", release: "patch" },
{ type: "perf", release: "patch" },

@astagi astagi linked an issue Jan 18, 2024 that may be closed by this pull request
4 tasks
// This will increase the version in the main project without publishing it
"@semantic-release/npm",
{
"npmPublish": false
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@AntoninoBonanno perchè abbiamo disattivato la pubblicazione?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Questa è il numero di versione della documentazione. Quindi aggiorna il numero di versione senza rilasciare. Il comando sotto invece pubblica la libreria

@astagi astagi force-pushed the fix/303-repository-improvement branch from 32dad2c to 8dec82b Compare January 24, 2024 13:16
@astagi astagi merged commit daea2e3 into main Jan 24, 2024
4 checks passed
Copy link
Contributor

🎉 This PR is included in version 0.14.0-prerelease.1 🎉

The release is available on:

Your semantic-release bot 📦🚀

Copy link
Contributor

🎉 This PR is included in version 1.0.0-prerelease.1 🎉

The release is available on:

Your semantic-release bot 📦🚀

@astagi astagi deleted the fix/303-repository-improvement branch January 29, 2024 13:14
@astagi astagi restored the fix/303-repository-improvement branch January 29, 2024 13:14
@astagi astagi deleted the fix/303-repository-improvement branch January 29, 2024 13:15
Copy link
Contributor

🎉 This PR is included in version 1.0.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Miglioramento repository
2 participants