CI/CD alapok¶
A verziókezelők lehetőséget adnak arra, hogy az egyes műveleteik különféle programok lefutását triggereljék. Ez az alapja az ún CI/CD (Continuous Integration (CI): folyamatos integráció és Continuous Delivery (CD): folyamatos szállítás.) megoldásoknak.
SSH kulcs felvétele a GitHubba¶
Amennyiben a GitHubba ssh-n szeretnél bejelentkezni, érdemes felvenned az adott projekthez hozzáférést biztosító nyilvános kulcsokat. Ehhez a Profil
/ Settings
/ SSH and GPK Keys
menüben kell hozzáadnod mindazok kulcsát, akik számára hozzáférést szeretnél biztosítani.

A Kulcsot a Title mezőben érdemes elnevezned, meghatároznod a felhasználási körét és be kell illesztened magát a nyilvános kulcsot. Unixon a kulcsodat a ~/.ssh/id_rsa.pub
fájl tartalmazza, az én esetemben ez az alábbi:
koczka@columbo:~$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDMTTLjL9YctmaKeoKRlYEC0H3Q1LyQkrWUPt9FHYxLM1+ZbSpSJwtKqzk4XPiHCzUJ/nch5ilaOFcA0MUkH7kkgonRbyuS2uNSgYGTmwosKZC88TaeF2ICkWwjC5AZUzRJ2JKg4/PPE6Ei15p+dANS55WktEvEpZcaNZLkNZXyUXS35mSDQAuLCgfmFGO+xV2bQyvCJcXL1+tX+kTm2+90KgHb83/AS8px3gqQr+PYI5sdSsvADnApUSgfSHQ4plssS/5Mv5/Z047qQZ1Zt+ltIxY9c5wIHVbU8ThNYvveLI6mOEp6ghqgsKXN9x9QC6C5l9KTkP0Wi1Izu8/FQvWUHR4dwiRQUT7/mes30LR98fgTktYP7zdF5BN119V5rReIiGJiWd3tGGNmCQ08S3w2dh2xh7yRBlU4suMEOxw1f76gEV30Tqoo4skJKf5bodVB48OuAiPrEfXImGX6F7lcm22EDEaQvek29QGZQDC6BsxyV4bCIe0hxznozpcSEp0= koczka@columbo.uni-eszterhazy.hu
Amennyiben nem lenne ilyen fájlod, generálj egy kulcsprát az ssh-keygen paranccsal:
koczka@columbo:~$ ssh-keygen

Példa¶
Készítsünk egy GitHub repository-t, mely a feltöltött programfájlokat egy linterrel ellenőrzi! A Git-et most parancssorból fogjuk kezelni.
Repó elkészítése¶
Jelentkezz be a GitHubba a saját felhasználói hozzáféréseddel!
Hozz létre egy új repository-t
ci-cd-demo
néven! Tültsd ki a leírás és a Licensz mezőket is!A tesztelést végző action scripteket nem szeretnénk mozgatni, ezért a
.github
könyvtárat hozzáadjuk a.gitignore
fájl tartalmához, majd commitoljuk. (Add file
/Create new file
/.gitignore
)

A következő lépés a munkafolyamat (workflow) beállítása. Egy olyan scriptet készítünk, amely minden feltöltéskor lefut, és végrehajtja az abban foglaltakat. Ehhez a GitHub felületén az Actions
menüt kell kiválasztani. Számos előre definiált konfiguráció közül választhatunk, nekünk most egy Simple workflow
kell majd.

Nyomd meg a Create
gombot, és elkészítjük a workflow fájlt. A folyamatok fájljai a .github/workflows/
könyvtárba kerülnek. Az új fájl neve legyen linter.yml
, a tartalma pedig az alábbi:
name: Linter
on:
push:
branches: [ "main" ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install pyLint
run: pip install pylint
- name: Run the linter
run: python3 linter.py
continue-on-error: false
Ezzel előkészítettük a Github környezetét, teszteljük egy projekten! Először hozzuk létre a repó munkaterületét a saját gépünkön!
koczka@columbo:~$ git clone git@github.com:koczkaferenc/ci-cd-demo.git
Cloning into 'ci-cd-demo'...
remote: Enumerating objects: 16, done.
remote: Counting objects: 100% (16/16), done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 16 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (16/16), 15.22 KiB | 15.22 MiB/s, done.
cd ci-cd-demo
Hozzuk létre a linter számára nem „barátságos” helloworld.py
programot:
def helloworld():
print('Hello world')
helloworld()
És az előző órán tanult linter.py
-t:
import sys
from pylint import lint
THRESHOLD = 8
run = lint.Run(["helloworld.py"], do_exit=False)
score = run.linter.stats.global_note
if score < THRESHOLD:
print("Linter failed: Score < threshold value")
sys.exit(1)
sys.exit(0)
Töltsük fel ezeket a repóba, de előtte a webes felületen kattints az Actions
menüre!
git add linter.py
git commit -m "Added linter.py"
git push origin main
git add helloworld.py
git commit -m "Added helloworld.py"
git push origin main

Tegyük Linter-konformmá a helloworld.py
fájlt!
""" Hello World program """
def helloworld():
""" Koszonto fuggvény """
print('Hello world')
helloworld()
Push-oljuk újra a változásokat, és ellenőrizzük a Linter eredményét!
git add helloworld.py ; git commit -m "WIP" ; git push origin main
Most máér hiba nélkül fut a Linter!

További részletek a https://docs.github.com/en/actions/using-workflows oldalon érhetők el.