DX Heroes logo
#guide
#ruby
#sdk

Automatické vydání nové verze Ruby SDK krok za krokem

Délka: 

8 min

Publikováno: 

21. září 2023

Automatické vydání nové verze Ruby SDK krok za krokem

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:

  1. Nastavíte GitHub Action pro vydání nové verze SDK.
  2. 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):

  1. 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):

  1. V kořenovém adresáři projektu vytvořte složku .github/workflows/. Sem patří konfigurační soubory pro GitHub Actions.
  2. V této složce vytvořte nový YAML soubor. Pojmenujte ho release-please.yml.
  3. 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.

  1. 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“.

  2. 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: nebo feat:), 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

  1. Než SDK poprvé zveřejníte, založte si účet na RubyGems tady.
  2. 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.
  3. API klíč zkopírujte.
  4. Otevřete svůj projekt na GitHubu. Přejděte do Settings > Security > Secrets and Variables > Actions a klikněte na „New repository secret“.
  5. Do pole Name napište RUBYGEMS_API_KEY.
  6. 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:

  1. 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říklad rubygems-publish.yml.
  2. 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.

  1. 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?


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.