Automatické vydání nové verze Ruby SDK krok za krokem
Délka:
8 min
Publikováno:
21. září 2023

Udržovat pořádek v changelogu, otagovat novou verzi SDK a pak ji nahrát do balíčkového repozitáře. Jsou to opakující se rutinní úkoly a každý z nich jde zautomatizovat. Vašim vývojářům tím vrátíte čas, který by jinak strávili papírováním.
V tomto návodu vám ukážeme, jak to nastavit. Projdete tyto kroky:
- Nastavíte GitHub Action pro vydání nové verze SDK.
- Zveřejníte novou verzi SDK:
- Založíte si účet na RubyGems.
- Vytvoříte API klíč pro RubyGems a bezpečně ho uložíte do GitHubu.
- Nastavíte GitHub workflow, který každou novou verzi SDK automaticky zveřejní.
Co budete potřebovat
Předpokládáme, že už máte funkční SDK a nahráli jste ho do repozitáře na GitHubu.
Vydejte novou verzi
Vlastník + vývojář: Nastavte GitHub Action pro vydávání nových verzí SDK
Abyste nemuseli changelog upravovat a verze tagovat ručně, doporučujeme GitHub Action release-please. Sleduje změny v kódu od posledního vydání a podle vašich commit zpráv drží otevřený pull request s changelogem a navýšením verze. Když chcete novou verzi vydat, stačí ten pull request mergnout.
Action nastavte takto:
Vlastník (Owner):
- V repozitáři na GitHubu přejděte do Settings > Actions > General a zaškrtněte volbu „Allow GitHub Actions to create and approve pull requests“.
Vývojář (Developer):
- V kořenovém adresáři projektu vytvořte složku
.github/workflows/. Sem patří konfigurační soubory pro GitHub Actions. - V této složce vytvořte nový YAML soubor. Pojmenujte ho
release-please.yml. - Do konfiguračního souboru zkopírujte následující kód:
# This workflow opens and updates a pull request with a new package version
# based on code changes.
# The pull request updates the version in version.rb, updates the changelog
# and creates release tags.
# https://github.com/marketplace/actions/release-please-action
on:
push:
branches:
- master
permissions:
contents: write
pull-requests: write
name: release-please
jobs:
release-please:
runs-on: ubuntu-22.04
steps:
- uses: google-github-actions/release-please-action@v3.7.10
with:
release-type: ruby
package-name: release-please-action
version-file: "lib/your_gem_name/version.rb"
pull-request-title-pattern: "chore(release): ${version}"
pull-request-header: ":robot: Merge this PR to release a new version"
Řádek version-file: "lib/your_gem_name/version.rb" upravte tak, aby ukazoval na váš skutečný soubor version.rb. Pokud se vaše hlavní větev nejmenuje master, ale třeba main, změňte to na řádku 13.
-
Pokud jste SDK už dřív vydávali, ujistěte se, že commit s posledním vydáním má připojený tag verze (ve formátu „v2.1.1“) a že jste tento tag nahráli na GitHub. release-please podle něj určuje další číslo verze. Bez takového tagu navrhne jako další verzi „v1.0.0“.
-
Tyto změny zacommitujte a nahrajte na GitHub. Tím je workflow hotové. Až příště někdo přidá něco vydatelného s commit zprávou podle konvence (prefix
fix:nebofeat:), release-please otevře pull request. Jak přidáváte další kód, automaticky tento pull request aktualizuje. Až budete připraveni vydat novou verzi SDK, pull request mergnete. Verze se vydá a aktualizované SDK se zveřejní na RubyGems.
release-please se řídí specifikací sémantického verzování (SemVer), takže čísla verzí volí podle toho, jak velké vaše změny jsou. Zpětně nekompatibilní změna zvedne hlavní (major) verzi, nová funkce zvedne vedlejší (minor) verzi a oprava chyby zvedne patch verzi. Vaši uživatelé tak hned vidí, jak moc se každá nová verze SDK mění.
Aby release-please rozpoznal význam vašich změn a zvolil správné číslo verze, musí vaše commit zprávy dodržovat formát Conventional Commits. Používejte pevný prefix: „feat: add new feature“ pro novou funkci, „fix: resolve bug“ pro opravu chyby a „chore: update dependencies“ pro změnu mimo kód. Když budete konzistentní, release-please vygeneruje správná čísla verzí i changelog. Changelog navíc můžete v otevřeném pull requestu před vydáním kdykoli upravit ručně.
Zveřejněte novou verzi
Vlastník: Založte si účet na RubyGems, získejte API klíč a bezpečně ho uložte do GitHubu
- Než SDK poprvé zveřejníte, založte si účet na RubyGems tady.
- Přejděte do Settings > API keys a po vyzvání zadejte heslo. Klikněte na „New API key“. Zvolte pro klíč název, ujistěte se, že je vybraný scope „Push rubygem“, a klíč vytvořte.
- API klíč zkopírujte.
- Otevřete svůj projekt na GitHubu. Přejděte do Settings > Security > Secrets and Variables > Actions a klikněte na „New repository secret“.
- Do pole Name napište
RUBYGEMS_API_KEY. - Do pole Secret vložte API klíč z kroku 3. Potvrďte tlačítkem „Add secret“.
Vývojář: Zautomatizujte publikování SDK pomocí GitHub workflow
Můžete nastavit GitHub workflow, který vaše SDK automaticky zveřejní na RubyGems, jakmile do origin repozitáře na GitHubu pošlete release commit:
- V projektu přejděte do složky
.github/workflows(pokud ještě neexistuje, vytvořte ji) a vytvořte nový YAML soubor. Pojmenujte ho napříkladrubygems-publish.yml. - Do konfiguračního souboru zkopírujte následující kód:
# This workflow will publish a gem to rubygems.org when a release is created
name: Publish Gem
on:
push:
branches:
- master
jobs:
publish:
if: contains(github.event.head_commit.message, 'chore(release)')
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3.5.3
- uses: ruby/setup-ruby@v1
with:
ruby-version: "2.7"
- run: gem build
# add RubyGems API key into the credentials file and update permissions
- run: |
cat << EOF > ~/.gem/credentials
---
:rubygems_api_key: ${RUBYGEMS_API_KEY}
EOF
chmod 0600 ~/.gem/credentials
env:
RUBYGEMS_API_KEY: ${{ secrets.RUBYGEMS_API_KEY }}
- run: gem push *.gem
Pokud se vaše hlavní větev nejmenuje master, ale třeba main, změňte název na řádku 8.
- Tento nový soubor zacommitujte do hlavní větve projektu a změny nahrajte do origin repozitáře na GitHubu.
GitHub Action je teď připravený. Aby fungoval, musíte nejdřív přidat RUBYGEMS_API_KEY do GitHub secrets.
Action se spustí, když do hlavní větve pošlete commit, jehož zpráva obsahuje frázi chore(release). Pokud jste prošli kroky ze sekce „Vydejte novou verzi“, spustí se publish Action ve chvíli, kdy mergnete pull request, který otevřel release-please.
Závěr
Teď máte automatizované nástroje, které vydají novou verzi Ruby SDK a zveřejní ji na RubyGems. S tímhle nastavením ušetříte čas i peníze, které váš tým může věnovat psaní kódu místo administrativy.
Pokud potřebujete pomoct s vývojem SDK nebo s automatizací, náš tým je připravený. Pomůžeme vám zefektivnit vývoj SDK, nastavit automatizaci a ušetřit přitom čas i peníze.
Ozvěte se nám a pojďme se o vašem SDK pobavit.
Potřebujete automatické vydání pro jinou technologii?
- Automatické vydání pro JavaScript
- Automatické vydání pro PHP
- Prohlédněte si náš nástroj, který automatizuje všechny technologie najednou
Mohlo by vás také zajímat:
Chcete být o krok napřed?
Nenechte si utéct naše nejlepší postřehy. Žádný spam, jen praktické analýzy, pozvánky na exkluzivní eventy a shrnutí podcastů přímo do vaší schránky.