GNU/Linux >> Znalost Linux >  >> Linux

Automatizace upstream vydání s release-botem

Pokud vlastníte nebo udržujete repo GitHub a někdy jste z něj vložili balíček do PyPI a/nebo Fedory, víte, že to vyžaduje nějakou další práci pomocí infrastruktury Fedory.

Dobrá zpráva:Vyvinuli jsme nástroj nazvaný release-bot, který tento proces automatizuje. Vše, co musíte udělat, je zadat problém do vašeho upstream úložiště a release-bot se postará o zbytek. Ale nepředbíhejme. Nejprve se podívejme na to, co je potřeba nastavit, aby k této automatizaci došlo. Vybral jsem si rodinu meta-testů upstream úložiště jako příklad.

Konfigurační soubory pro release-bot

Existují dva konfigurační soubory pro release-bot:conf.yaml a release-conf.yaml .

conf.yaml

conf.yaml musí být přístupné během inicializace robota; určuje, jak získat přístup k úložišti GitHub. Abych to ukázal, vytvořil jsem nové úložiště git s názvem mtf-release-bot , který obsahuje conf.yaml a další tajné soubory.

název_úložiště:jméno
vlastník_úložiště:vlastník
# https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/
github_token:xxxxxxxxxxxxxxxxxxxxxxxxx
# čas v sekundách během kontrol nových vydání
interval obnovy:180

V případě meta-test-family vypadá konfigurační soubor takto:

název_úložiště:meta-test-family
vlastník_úložiště:fedora-modularity
github_token:xxxxxxxxxxxxxxxxxxxxx
interval_obnovení:180

release-conf.yaml

release-conf.yaml musí být uloženy v samotném úložišti; specifikuje, jak provádět vydání GitHub/PyPI/Fedora.

# seznam hlavních verzí pythonu, pro které bot vytvoří samostatná kola
verze pythonu:
 - 2
  - 3
# volitelné:
changelog:
 - Příklad záznamu v changelogu
  - Další záznam v changelogu
# toto jsou informace o autorství v changelogu
#, pokud toto není nastaveno, bude jako autor použita osoba, která sloučila PR vydání
jméno_autora:John Doe
email_autora:[email protected]
# zda vydat na fedoru. False ve výchozím nastavení
fedora:false
# seznam větví fedory by měl bot vydat. Master je vždy implikován
fedora_branches:
 - f27

V případě meta-test-family vypadá konfigurační soubor takto:

python_versions:
-       2
fedora:true
fedora_branches:
-       f29
-       f28
trigger_on_issue:true

Konfigurační soubor PyPI

Soubor .pypirc , uložené ve vašem mtf-release-bot soukromý repozitář, je potřeba pro nahrání nové verze balíčku do PyPI:

[pypi]
uživatelské jméno =phracek
heslo =xxxxxxxx

Soukromý klíč SSH, id_rsa , který jste nakonfigurovali ve FAS.

Konečná struktura úložiště git s conf.yaml a ostatní, vypadá takto:

$ ls -la
celkem 24
drwxrwxr-x   3 phracek phracek 4096 24. září 12:38 .
drwxrwxr-x. 20 phracek phracek 4096 24. září 12:37 ..
-rw-rw-r--   1 phracek phracek  199 24. září 12:26 conf.yaml
drwxrwxr-x   4 04 8 phrace 38 .git
-rw-rw-r--   1 phracek phracek 3243 24. září 12:38 id_rsa
-rw-------   1 phracek phracek   78 září 24 12:28<. /před>

Požadavky

Další zdroje Pythonu

  • Co je to IDE?
  • Cheat sheet:Python 3.7 pro začátečníky
  • Nejlepší Python GUI frameworky
  • Stáhnout:7 základních knihoven PyPI
  • Vývojáři Red Hat
  • Nejnovější obsah Pythonu

Vydání do PyPI vyžaduje balíček Wheel pro Python 2 i Python 3, proto si nainstalujte requirements.txt s oběma verzemi pip. Musíte také nastavit své přihlašovací údaje k PyPI v $HOME/.pypirc , jak je popsáno v dokumentaci PyPI. Pokud vydáváte Fedora, musíte mít aktivní lístek Kerberos, zatímco robot běží, nebo zadat cestu k souboru tabulky klíčů Kerberos pomocí -k/–keytab . Také fedpkg vyžaduje, abyste měli klíč SSH ve svazku klíčů, který jste nahráli do FAS.

Jak nasadit release-bot

Release-bot lze použít dvěma způsoby:jako obrázek Dockeru nebo jako šablonu OpenShift.

Obrázek dockeru

Vytvořme obrázek pomocí s2i příkaz:

$ s2i build $CONFIGURATION_REPOSITORY_URL usercont/release-bot app-name 

kde $CONFIGURATION_REPOSITORY_URL je odkaz na úložiště GitHub, jako je https:///mtf-release-conf.

Podívejme se na obrázky Docker:

 $ Docker snímky 
úložiště TAG ID vytvořený formát
MTF-release-bot poslední 08897871e65e 6 minutami 705 MB
docker.io/usercont/release-bot poslední 5b34aa670639 9 dny 705 MB

Nyní zkusme spustit mtf-release-bot obrázek pomocí tohoto příkazu:

$ docker spustí mtf-release-bot
---> Nastavení klíče ssh...
Agent pid 12
Přidaná identita:./.ssh/id_rsa (./. ssh/id_rsa)
12:21:18.982 configuration.py  DEBUG  Načtena konfigurace pro fedora-modularity/meta-test-family
12:21:18.982 releasebot.py      INFO   hlášení release-bot v0.4.1 pro povinnost!
12:21:18.982 github.py          DEBUG  Načítání release-conf.yaml
12:21:37.611 releasebot.py      DEBUG  Nenalezeno žádné sloučené vydání PR robota
38.282:py      INFO   Nalezen problém s novým vydáním verze:0.8.5
12:21:42.565 releasebot.py      DEBUG  Nebyly nalezeny žádné další otevřené problémy
12:21:43.190 releasebot.py      INFO   Vytvoření nového PR pro vydání verze 0.8.5 na základě problému.
12:21:46.709 utils.py           DEBUG  ['git', 'clone', 'https://github.com/fedora-modularity/meta-test-family. git', '.']

12:21:47.401 github.py          LADĚNÍ  {"message":"Pobočka nenalezena","documentation_url":"https://developer.github.com/ v3/repos/branc hes/#get-branch"}
12:21:47.994 utils.py           DEBUG  ['git', 'config', 'user.email', '[email protected]']

12:21:47.996 utils.py           DEBUG  ['git', 'config', 'user.name', 'Release bot']

12:21:48.009 utils. py           DEBUG  ['git', 'checkout', '-b', '0.8.5-release']

12:21:48.014 utils.py           CHYBA  Nebyly nalezeny žádné soubory verze. Přerušení aktualizace verze.
12:21:48.014 utils.py           VAROVÁNÍ V úložišti není přítomen CHANGELOG.md
[Errno 2] Žádný takový soubor nebo adresář:'/tmp/tmpmbvb05jq/CHANGELOG.md'12:21:48.020 utils.py           DEBUG  ['git', 'commit', '--allow-empty', '-m', '0.8.5 release']
[0.8.5-release 7ee62c6] 0.8.5 vydání

12:21:51.342 utils.py           DEBUG  ['git', 'push', 'origin', '0.8.5-release']

12:21:51.905 github.py          DEBUG  Nebyly nalezeny žádné otevřené PR
12:21:51.905 github.py          DEBUG  Pokus o PR pro větev 0.8.5-release:21.
5153.21. INFO   Vytvořeno PR:https://github.com/fedora-modularity/meta-test-family/pull/243
12:21:53.216 releasebot.py      INFO   Právě jsem požádal o vydání verze 0.8. 5
12:21:54.154 github.py          DEBUG  Komentář přidán do PR:Právě jsem požádal o PR pro verzi 0.8.5
 Zde je [odkaz na PR](https://github .com/fedora-modularity/meta-test-family/pull/2 43)
12:21:54.154 github.py          DEBUG  Pokus o uzavření problému č. 242
12:21:54.992 github.py          DEBUG  Uzavřený problém č. 242

Jak můžete vidět, release-bot automaticky uzavřel následující problém a požádal o nové upstream vydání meta-test-family:https://github.com/fedora-modularity/meta-test-family/issues/243.

Release-bot navíc vytvořil nový PR s changelogem. Můžete aktualizovat PR – například squash changelog – a jakmile jej sloučíte, automaticky se uvolní na GitHub a spustí se PyPI a Fedora.

Nyní máte funkční řešení pro snadné uvolnění upstream verzí vašeho balíčku do PyPi a Fedory.

Šablona OpenShift

Další možností, jak dodávat automatizovaná vydání pomocí release-bota, je nasazení v OpenShift.

Šablona OpenShift vypadá následovně:

druh:Template
apiVersion:v1
metadata:
  název:release-bot
  anotace:
    description:S2I Relase-bot image builder
tags:release-bot s2i
    iconClass:icon-python
štítky:
  šablona:release-bot
  role:releasebot_application_builder
objekty:
  - druh :ImageStream
    apiVersion :v1
    metadata :
        název :${APP_NAME}
        štítky :
          druh appid :release-bot-${APP_NAME}
  - :ImageStream
    apiVersion :v1
    metadata :
      název :${APP_NAME}-s2i
      štítky :
        appid :release-bot-${APP_NAME}
    spec :
      tagy :
        - název :nejnovější
          od :
            druh :DockerImage
       <    e  popř. jméno :user-cont/rel
         #  naplánováno:true
  - druh :BuildConfig
    apiVersion :v1
    metadata :
      název :${APP_NAME}
      štítky :
        appid :release-bot-${APP_NAME}
    spec :
      spouštěče :
        - typ :ConfigChange
        - typ :Změnit obrázek zdroj :
        typ :Git
        git :
          uri :${CONFIGURATION_REPOSITORY}
          contextDir :${CONFIGURATION_REPOSITORY:  CONFIGURATION_REPOSITORY :  název KONFIGURACE_returace     název bota
ret-       název zdroje /      ret-       název zdroje /    -secret
      strategie :
        typ :Zdroj
        sourceStrategy :
          from :
            druh :Název ImageStreamTag
      výstup :
        to :
          druh :ImageStreamTag
          název :${APP_NAME}:nejnovější
  - druh :DeploymentConfig
  metadata /: apiV
      název:${APP_NAME}
      labels :
        appid :release-bot-${APP_NAME}
    spec :
      strategie :
        typ :Rolling
      spouštěče :
         - typ :ConfigC Hange
- Typ:imagechange
imagechangeParams:
Automatické:true
Kontejnery:
- $ {app_name}
od:
z:
druh:imagestramtag
               název :${APP_NAME}:nejnovější
      repliky :1
      selector :
        deploymentconfig :${APP_NAME}
   <  šablona metadat :
:
>          labels :
            appid:release-bot-${APP_NAME}
            deploymentconfig :${APP_NAME}
        spec :
        BR _ } název kontejneru:  
Obrázek:$ {app_name}:Nejnovější
Zdroje:
Žádosti:
Paměť:"64MI"
CPU:"50m"
Limity:
                  paměť:"128Mi"
                  cpu:"100m"

parametry :
  - název :APP_NAME
    popis :Název ap plication
    hodnota :
    povinné :true
  - název :CONFIGURATION_REPOSITORY
    popis :Úložiště Git s konfigurací
    hodnota :
    povinné :true

Nejjednodušší způsob nasazení mtf-release-bot úložiště s tajnými soubory do OpenShift je použít následující dva příkazy:

$ curl -sLO https://github.com/user-cont/release-bot/raw/master/openshift-template.yml 

Ve své instanci OpenShift nasaďte šablonu spuštěním následujícího příkazu:

oc process -p APP_NAME="mtf-release-bot" -p CONFIGURATION_REPOSITORY="git@<git_lab_path>/mtf-release-conf.git" -f openshift-template.yml | oc apply 

Shrnutí

Podívejte se na příklad žádosti o stažení v upstream úložišti meta-test-family, kde najdete informace o tom, co release-bot vydal. Jakmile se dostanete do tohoto bodu, můžete vidět, že release-bot je schopen vložit nové upstream verze do GitHubu, PyPI a Fedory bez velkého zásahu uživatele. Automatizuje všechny kroky, takže nemusíte ručně nahrávat a vytvářet nové upstream verze vašeho balíčku.


Linux
  1. Trasování jádra pomocí trace-cmd

  2. Moje 3 oblíbené verze Linuxu

  3. Jak sestavit modul jádra Linuxu tak, aby byl kompatibilní se všemi verzemi jádra?

  1. Příkaz Nohup s příklady

  2. JQ Command v Linuxu s příklady

  3. Oprava binárního kódu pomocí Dd?

  1. Nainstalujte Linux pomocí LVM

  2. Nahradit du prachem v Linuxu

  3. wc Linux Command s příklady