Benutzer-Werkzeuge

Webseiten-Werkzeuge


de:sysadmin:tools:gitlab

gitlab & .gitlab-ci.yml (privat)

Docker Lint

Bevor man Images aus dem Dockerfiles baut


lint dockerfile:
  stage: pre-build
  image: hadolint/hadolint:v2.9.3-alpine

  script:
    - hadolint ./Dockerfile

Gitlab Pipeline - Beispiel: python2 würfel

Dieses Script mit Unittest soll per Gitlab Pipeline erst erfolgreich seinen Unittest durchlaufen, bevor es gestartet wird:

Python3 Unittest - ein ganz kleines Beispiel

Hier ein sehr kleines Script "wuerfel.py" das einfach nur einen Würfelwurf mit dem sechs-seitigen Würfel simuliert.

#!/usr/bin/env python3
"""einmal wuerfeln, bisher nur mit d6"""
 
def d6wuerfeln():
    """d6wuerfeln - ein wurf mit dem D6"""
    import random
    seiten = (1, 2, 3, 4, 5, 6)
    return random.choice(seiten)
 
 
if __name__ == '__main__':
    print(d6wuerfeln())

Und hier der dazupassende Unit-Test "test_wuerfel.py"

#!/usr/bin/env python3
"""teste das wuerfel script"""
 
import unittest
 
import wuerfel
 
class WuerfelTestCase(unittest.TestCase):
    """teste wuerfel modul"""
 
    def test_ist_integer(self):
        """es sollen nur integer zurueck gegeben werden"""
        self.assertTrue(isinstance(wuerfel.d6wuerfeln(), int), "kein Integer")
 
    def test_kleinergleich6(self):
        """die zahl soll kleiner oder gleich 6 sein"""
        self.assertTrue(wuerfel.d6wuerfeln() <= 6, "groesser als 6")
 
    def test_groessergleich1(self):
        """die zahl soll groesser oder gleich 1 sein"""
        self.assertTrue(wuerfel.d6wuerfeln() >= 1, "kleiner als 1")
 
    # eigentlich sinnvoll: testen ob der Wuerfel wirklich zufaellig ist ... aber sehr aufwendig :-)
 
if __name__ == '__main__':
    unittest.main(verbosity=0)

Aufruf mit ./test_wuerfel.py

 

.gitlab-ci.yml

stages:
  - test
  - run

image: python:latest
 
# Change pip's cache directory to be inside the project directory since we can
# only cache local items.
variables:
  PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
 
# Pip's cache doesn't store the python packages
# https://pip.pypa.io/en/stable/topics/caching/
#
# If you want to also cache the installed packages, you have to install
# them in a virtualenv and cache it as well.
cache:
  paths:
    - .cache/pip
    - venv/

before_script:
  - TXT_RED="\e[31m" && TXT_CLEAR="\e[0m"
  - echo -e "${TXT_YELLOW}==== before_script START ====${TXT_CLEAR}"
  - python --version  # For debugging
  - pip install virtualenv
  - virtualenv venv
  - source venv/bin/activate
  - echo -e "${TXT_YELLOW}==== before_script END  ====${TXT_CLEAR}"

lint:
  stage: test
  script:
    - pylint wuerfel.py
    - pylint test_wuerfel.py

unit-test:
  stage: test
  script:
    - python test_wuerfel.py
 

run:
  stage: run
  script:
    - python wuerfel.py
de/sysadmin/tools/gitlab.txt · Zuletzt geändert: 2022-06-25 13:35 von hella

Seiten-Werkzeuge

Mastodon Twitter