[PYTHON] Procédure pour créer un Job qui extrait une image Docker et la teste avec des actions Github

Cette fois, je me suis exercé à faire du pytest sur l'image de docker-compose avec `` Github Actions '' pour le référentiel du projet Python, donc j'écrirai le mémo.

Conditions préalables

--Créez un jeton pour les packages Github.

Structure des dossiers


repository/             #Répertoire du référentiel
 ├ .github/
 │ ├ workflows/
 │ │ └ sample.yml     #Fichier d'actions Github
 ├ project/
 │ ├ sample/           #(Explication omise)
 │ │ ├ __init__.py
 │ │ └ add.py
 │ └ test/             #(Explication omise)
 │   ├ __init__.py   
 │   └ test_add.py
 ├ docker-compose.yml   #Description détaillée plus tard
 ├ Dockerfile           #Image Python appropriée (explication omise)
 └ requirements.txt     #Décrivez le package approprié (seul pytest est décrit cette fois)

procédure

  1. Entrez l'image ghcr.io dans docker-compose.yml avec le nom d'image spécifié.
  2. Après avoir créé une image avec docker-compose up, poussez l'image avec `` docker-compose push ''
  3. Tirez avec le fichier d'actions github et faites un pytest!

Téléchargez l'image sur ghcr.io.

Spécifiez l'image comme suit.

docker-compose.yml


 services:
    python:
        build: .
        #image: ghcr.io/Nom d'utilisateur Github/Nom du référentiel/Nom de l'image:Nom de la balise
        image: ghcr.io/n-jun-k2/sample-actions/python:v1

Créez une image localement et poussez-la.

#Pour le moment, créez une image comme d'habitude
docker-compose up -d 
#Image push
docker-compose push

À propos des fichiers CI des actions Github

Veuillez modifier `` ... '' de manière appropriée. Vérifiez, connectez-vous et tirez pour faire un test.

yml:.github/workflows/sample.yml


name: ...
on:
  ...

jobs:
  ...:
    name: ...
    runs-on: ubuntu-20.04
    steps:
        - name: Checkout                                         #Check-out
          uses: actions/checkout@v2
        - name: Login to Docker                                  #connexion docker
          uses: docker/login-action@v1
          with:
            registry: ghcr.io
            username: ${{ github.repository_owner }}
            password: ${{ secrets.GHCR_IO_TOKEN }}
        - name: Set up Docker                                    #Tirez pour lancer l'image
          run: |
            docker pull ghcr.io/n-jun-k2/sample-actions/python:v1
            docker-compose up -d
        - name: Run test                                         #Faites un pytest.
          run: docker-compose exec -T python pytest

Ce fichier CI effectuera un pytest sur l'image docker-compose.

Notez que n'oubliez pas d'inclure l'option `` -T '' ci-dessous! J'obtiendrai une erreur

docker-compose exec -T python pytest

Recommended Posts

Procédure pour créer un Job qui extrait une image Docker et la teste avec des actions Github
[Golang] Créer une image de menu fixe avec des actions Github
Étapes pour configurer Pipenv, créer une application CRUD avec Flask et la conteneuriser avec Docker
Je veux créer un fichier pip et le refléter dans le menu fixe
Étapes pour créer un bot Twitter avec Python
J'ai un package Python privé mais je souhaite installer pipenv sur GitHub Actions et créer une image Docker
[Linux] Créez un auto-certificat avec Docker et apache
J'ai créé et publié une image Docker qui lit RSS et tweete automatiquement régulièrement.
Un système simple qui prend automatiquement des photos avec détection d'objet et l'envoie à LINE
Créez rapidement un tableau de bord d'analyse de données Python avec Streamlit et déployez-le sur AWS
Étapes pour créer rapidement un environnement d'apprentissage en profondeur sur Mac avec TensorFlow et OpenCV
Un script qui facilite la création de menus riches avec l'API de messagerie LINE
Créez un script de déploiement avec fabric et cuisine et réutilisez-le
Créez un fichier temporaire avec django sous forme de zip et renvoyez-le
J'ai essayé de créer des taureaux et des vaches avec un programme shell
Créer une image de conteneur Docker avec JRE8 / JDK8 sur Amazon Linux
Étapes pour créer un projet Django
J'ai exécuté GhostScript avec python, divisé le PDF en pages et l'ai converti en image JPEG.
Procédure de création d'un environnement virtuel Python avec VS Code sous Windows
[Python] Créez un linebot pour écrire le nom et l'âge sur l'image
Comment rendre le nom du conteneur accessible dans Docker en tant que sous-domaine
Un programme python qui redimensionne une vidéo et la transforme en image
Démarrez la webcam, prenez une image fixe et enregistrez-la localement
Créez un arbre de décision à partir de 0 avec Python et comprenez-le (5. Entropie des informations)
Comment créer un clone depuis Github
Créez une image factice avec Python + PIL.
J'ai trouvé un moyen de créer un modèle 3D à partir d'une photo Partie 02 Chargement d'images et dessin de sommets
J'ai créé un système qui décide automatiquement de s'exécuter demain avec Python et l'ajoute à Google Agenda.
Créer un service Web avec Docker + Flask
Créez une API pour convertir des fichiers PDF en images TIF avec FastAPI et Docker
Un sort qui élimine les caractères et symboles non japonais et crée un corpus simple japonais
Quand j'ai essayé de créer un environnement virtuel avec Python, cela n'a pas fonctionné
Je veux écrire un élément dans un fichier avec numpy et le vérifier.
Utilisez la commande [shell] pour compresser par zip n'importe quel fichier pour créer un fichier et supprimer le fichier d'origine.
Créer un environnement d'analyse de données qui relie l'authentification GitHub et Django avec JupyterHub
Créez un graphique empilé correspondant aux directions positives et négatives avec matplotlib
Créez une application Web qui convertit le PDF en texte à l'aide de Flask et PyPDF2
J'ai essayé de créer une API de reconnaissance d'image simple avec Fast API et Tensorflow
[Python] Comment créer un environnement de serveur Web local avec SimpleHTTPServer et CGIHTTPServer
Une nouvelle forme d'application qui fonctionne avec GitHub: Comment créer des applications GitHub
J'ai essayé de l'activer / de le désactiver en définissant "Créer un plug-in qui met en évidence les espaces pleine largeur avec Sublime Text 2".
J'ai essayé de créer un projet en utilisant Python sur Docker avec PyCharm, mais cela a fonctionné avec Docker Compose
Créer une page qui se charge indéfiniment avec python
Procédure de création d'application multi-plateforme avec kivy
Script Python qui explore le flux RSS du statut Azure et le publie sur Hipchat
Créez un bot discord qui notifie unilatéralement avec python (seuls les requêtes et json sont utilisés)
Comment créer une clé USB que l'installateur Linux et Win10 et winpe peuvent démarrer UEFI
Créer une image à plage dynamique élevée (HDR) avec OpenCV et Python (Mertens, Robertson, Debevec)
[Introduction au trading système] J'ai dessiné un oscillateur stochastique avec python et joué avec ♬
Création d'une application Web qui mappe les informations sur les événements informatiques avec Vue et Flask
De l'introduction de Flask sur CentOS au service sur Nginx et uWSGI
C'était un peu difficile de faire flacon avec la version docker de nginx-unit
Un mémo qui détecte le visage de l'image acquise à partir de la caméra Web avec OpenCV de Django et le renvoie.
Traitement d'image avec Python (j'ai essayé de le binariser en art mosaïque 0 et 1)