So. Pro 21st, 2024
Gitlab Logo

Funguje to vlastně jednoduše. Máte linuxový kontejner, ve kterém je wine64 a windowsácká verze Pythonu. Stáhnete skript na instalaci pipu do pythonu. Potom updatnete, co se dá a nainstalujete všechny další balíčky pipem.

Určitě věc k diskusi, které se nebráním, je použitý image pro docker a věřím, že kdybych řešení chtěl ještě zlepšit, tak ten něčí container vezmu a použiju jeho „aktualizovanější“ verzi kontejneru bez nutnosti to každou pipu updatovat a instalovat tam něco během pipy. To by rozhodně mělo být již součástí kontejneru.

Časem se možná dostanu ke zefektivnění, nebo si v jednom z příštích článků ukážeme, jak si zbuildit vlastní kontejner, ve kterém už budete mít nejnovější verze všeho, co potřebujete, čímž urychlíte běh pipeliny jako takové.
Toto proto vnímejte zcela bez záruky jako Proof of Concept, že to jde.

A zde již ukázka .gitlab-ci.yml pipeliny:

Build:
  image: 
    name: engineervix/pyinstaller-windows:python3
    entrypoint: [""]
  stage: build
  script:
    - apt-get update -qy
    - apt-get install -y wine64 wget
    - export WINEARCH=win64
    - export WINEPREFIX=/wine
    - wineboot --init
    - wget https://bootstrap.pypa.io/get-pip.py
    - wine64 /wine/drive_c/Python37/python.exe get-pip.py
    - wine64 /wine/drive_c/Python37/python.exe -m pip install --upgrade pip
    - wine64 /wine/drive_c/Python37/python.exe -m pip install pyinstaller
    - wine64 /wine/drive_c/Python37/python.exe -m pip install paramiko
    - wine64 /wine/drive_c/Python37/python.exe -m pip install sshtunnel
    - wine64 /wine/drive_c/Python37/python.exe -m pip install colorama
    - wine64 /wine/drive_c/Python37/python.exe -m pip install requests
    - wine64 C:\\Python37\\Scripts\\pyinstaller.exe --name jmenoVybuildeneExeAplikace ./nazevSouboruKBuildeni.py --onefile --icon="ikona_v_repozitari_32.ico"  
  only:
    refs:
      - branches
  artifacts:
    paths:
      - dist/

Ještě nějaké to okomentování, jedná se o stage build, tedy fázi buildění aplikace. Součástí skriptu vidíme načtení informací o nových verzí balíčků, instalace wine64 a wgetu (pokud je tam starší wine, tak se nainstaluje novější), exportují se proměnné win64 a cesta k wineprefixu je /wine/ kde se odehrává virtuální disk C pro Python. Nastartuje se wine, stáhne se python PIP balíčkovací systém pro python a pak už startujeme windowsácký Python (všimněme si bohužel starší verzi 3.7, proto tento článek vnímejme spíš jako příklad) a další řádky pomocí pipu nainstalují potřebné moduly pro python, které jsou potřebné k buildění aplikace. Poslední řádek wine64 kde je cesta k pyinstalleru pro vybuildění aplikace z názvuSouboru.py do jednoho .exe souboru s načtením .ico ikonky, dojde k vybuildění aplikace v pythonu.
Only refs: lze uvést za pomlčku v jakých branchích se má build volat, v našem případě jsem uvedl branches, tedy, že k vybuildění a spuštění této build pipeliny dojde při commitnutí změny do repozitáře.

Deployment pipelinu tu dávat nebudu, protože každý pak může nasazovat aplikaci různě. Někdo ji nahraje někam do repozitáře, někdo ji nahraje do Azure ke stažení někam do blob storage, jiný devopsák ji třeba nahodí do nějakého kontejneru kdo ví kam, někdo to releasne někam na web apod…

zdroj1 zdroj2 zdroj3 zdroj4 zdroj5 zdroj6 zdroj7 zdroj8 zdroj9

Avatar

By mirra

Hardwaru a počítačům se věnuji již od roku 2003. Za tu dobu jsem poskládal stovky počítačů, opravil tisíce počítačů a vyřešil nespočetně problémů, vad a chyb, se kterými se setkávali uživatelé. Od roku 2005 se zabývám servery, zejména těmi herními, v roce 2007 jsem se začal věnovat Valve Source SDK level designu, který šel od roku 2009 k ledu kvůli studiu Informatiky na univerzitě. Podílel jsem se chvíli i na provozu síťové laboratoře MENDELU, dnes spravuji v jedné osobě cca 100 serverů/diskových polí na univerzitě, řeším IT v malých a středních firmách tak, aby firmy ušetřily nemalé částky při zlepšení kvality a soustředím se na snižování nákladů na IT od licencí až po hardware, software, provádím konsolidace a audity platnosti licencí, které firmám šetří rovněž nemalé peníze. Z velkých firem jsem měl příležitost s dalšími kolegy řešit správu 8000 serverů po celé západní Evropě s vysokou mírou automatizace a poznávání nejrůznějších evropských pracovních mentalit. Dále jsem řešil hybridní cloud ve velké firmě, orientované na trhy střední a východní Evropy. Posledních několik let se věnuji Devops pro velké zákazníky v Azure cloudu, spravuji kubernetes (AKS), Gitlab.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *