Sergey Rymsha GitHub Actions

Sergei Rymsha, arkitekt hos Enonic, holdt nylig en presentasjon der han diskuterte hvordan Enonic har automatisert nesten alt som er mulig ved bruk av GitHub Actions.

Enonic administrerer et stort antall repositorier i sin organisasjon. Historisk sett har vi brukt en blanding av verktøy som Travis, Drone og andre automatiseringsløsninger.

Men siden GitHub Actions ble tilgjengelig, har vi gått helt og holdent over til å bruke det for alle våre automatiseringsbehov. Sergei forklarte her arbeidsflyten og demonstrerte hvordan GitHub Actions har forenklet komplekse prosesser på tvers av flere repositorier.

Se presentasjonen (på engelsk):

Build, Test, and Release Enonic Apps Using GitHub Actions

Kjernearbeidsflyten

Enonics grunnleggende GitHub Actions-arbeidsflyt kretser rundt tre trinn:

  1. Vente på push: Alle kodeendringer utløser arbeidsflyten.
  2. Bygge applikasjonen: Enonics applikasjoner og biblioteker er Gradle-baserte, så arbeidsflyten kjører Gradle-bygger.
  3. Utgi hvis nødvendig: Hvis en utgivelse er nødvendig, genererer arbeidsflyten en utgivelsesside på GitHub, inkludert en endringslogg.

Denne enkle arbeidsflyten brukes i over 250 av Enonics applikasjoner. For å effektivisere dette for hvert prosjekt bruker vi .github-repositoriet – et delt repository i GitHub for lagring av arbeidsflyter. For eksempel har vi en delt arbeidsflyt kalt "Enonic Gradle", som kan brukes på hvilken som helst applikasjon med bare noen få klikk i Actions-fanen.

Utover det grunnleggende håndterer arbeidsflyten også tilleggstjenester, som:

  • Innsamling av kodeovervåkingsdata.
  • Publisering av TypeScript-definisjoner for biblioteker til NPM.
  • Bygging av Docker-bilder for distribusjon i Kubernetes (brukt til prosjekter som vår XP Operator).

Se også: Hvorfor velge Enonics headless CMS når du bygger et Next.js-nettsted »

Dokumentasjonsautomatisering med DocGen

Sergei demonstrerte en annen arbeidsflyt kalt DocGen, som automatiserer dokumentasjonsoppdateringer for Enonics utviklerportal. Eventuelle endringer gjort i dokumentasjonsfilene i repositoriet oppdages, bygges til HTML ved hjelp av Asciidoc, og publiseres deretter direkte til utviklerportalen via en webhook.

Denne arbeidsflyten bruker en blanding av åpne GitHub Actions, Java, Node.js og Bash-skript. I tillegg gjør GitHubs funksjon for sammensatte Actions det mulig å pakke flere steg sammen til én gjenbrukbar action, noe som ytterligere forenkler prosessen.

Komplekse arbeidsflyter for fler-repository-prosjekter

For større prosjekter, som Enonic XP, som involverer flere sammenkoblede repositorier, bruker Enonic mer avanserte arbeidsflyter:

  • Integrasjonstesting på tvers av repositorier: Endringer i ett repository (f.eks. XP) utløser bygging og testing i avhengige repositorier (f.eks. Content Studio).
  • Støtte for flere versjoner: Arbeidsflytene er designet for å håndtere flere grener (f.eks. XP 7.14 og XP 8) ved å bruke spesifikke Gradle-byggefiler for å sikre gren-spesifikke bygg.
  • UI-testing: UI-tester kjøres som en del av arbeidsflyten og tar ofte opptil 40 minutter. For å optimalisere dette deles testene opp i parallelle grupper, noe som reduserer total kjøretid.

Ytterligere bruksområder for automatisering

Sergei delte flere andre bruksområder for GitHub Actions hos Enonic:

  1. Nattlige serverdistribusjoner: GitHub Actions automatiserer distribusjoner til vår nightly-server, kobler seg til Google Cloud og bootstrapper XP med XP Operator.
  2. Applikasjonsdistribusjoner: For eksempel utløser endringer i "site-market" distribusjonspipelines som går gjennom utviklings-, QA- og produksjonsmiljøer.
  3. Docker-bilder for flere arkitekturer: Ved bruk av tredjeparts GitHub Actions bygger vi bilder som kjører på ulike arkitekturer, inkludert forskjellige versjoner av macOS.
  4. Utgivelser til Maven Central: Enonics biblioteker blir nå publisert til Maven Central ved hjelp av GitHub Actions. Selv om noen manuelle trinn fortsatt er nødvendig, er prosessen stort sett automatisert.
  5. Go-baserte prosjekter: Enonic har begynt å bruke Go for enkelte prosjekter og utnytter den sømløse integrasjonen med GitHub Actions.

Dokumentasjon og tilgjengelighet

Enonic har gjort disse arbeidsflytene tilgjengelige og dokumentert dem på vår utviklerportal. Utviklere som jobber med Enonic kan enkelt lage pipelines ved å kopiere og konfigurere disse forhåndsbygde arbeidsflytene. Med minimal innsats kan de automatisere bygg, distribusjoner og andre oppgaver ved hjelp av GitHub Actions.

Oppsummert har Enonic tatt i bruk GitHub Actions som ryggraden i vår automatiseringsstrategi, og utnytter det for å forenkle arbeidsflyter, effektivisere dokumentasjonsoppdateringer og håndtere fler-repository-prosjekter på en effektiv måte. Vi vil fortsette å utforske og utvide mulighetene på tvers av vårt voksende økosystem.

Hva er Composable CMS?

Relaterte blogginnlegg

Få enda mer innsikt 🤓