Commit dd918b38 authored by Rémi Cailletaud's avatar Rémi Cailletaud

exo2

parent 646240e4
.job_template: &deploy_job
stage: deploy
except:
- /^version-.*$/
when: manual
image: docker
before_script:
- cd python-dice
script:
- docker pull ciformation/dice-server:latest
- if [ "$(docker ps -q -f name=dice-$CI_JOB_NAME)" ]; then docker stop dice-$CI_JOB_NAME; fi;
- docker run --name dice-$CI_JOB_NAME -d --rm -p $PORT:8081 ciformation/dice-server:latest
image : python:3
image : ubuntu
stages :
- test
- doc
- pypi
- build
- deploy
before_script:
- cd python-dice
- python setup.py install
job_test:
stage : test
script:
- python setup.py test
- pip install coverage
- coverage run -m unittest discover
- coverage report
pages:
stage : deploy
only:
variables:
- $CI_COMMIT_MESSAGE =~ /^\[doc\].*/i
script:
- pip install sphinx
- python setup.py build_sphinx
- mv build/sphinx/html ../public
artifacts:
paths:
- public
pypi:
stage : deploy
only:
- /^version-.*$/
script:
- version=$(echo $CI_COMMIT_REF_NAME|cut -d "-" -f 2)
- sed -i -e "s/version='.*',/version='$version',/g" setup.py
- pip install twine
- pip wheel . -w wheelhouse
- twine upload --repository-url https://test.pypi.org/legacy/ wheelhouse/*
build:
stage : build
except:
- /^version-.*$/
image: docker
services:
- docker:dind
before_script:
- docker info
- cd python-dice
script:
- docker build -t $DOCKER_LOGIN/dice-server .
- echo $DOCKER_PASSWORD | docker login -u $DOCKER_LOGIN --password-stdin
- docker push $DOCKER_LOGIN/dice-server
blue:
<<: *deploy_job
variables:
DOCKER_HOST: "osug-docker-ci.u-ga.fr:2376"
PORT: 8090
green:
<<: *deploy_job
variables:
DOCKER_HOST: "osug-docker-ci.u-ga.fr:2376"
PORT: 8091
job_test :
stage: test
script :
- echo "Hello world"
- more /etc/issue
- /bin/running-in-container
- date
Dépôt pour TP CI
# TP intégration et déploiement continus #
note : .gitlab-ci.yml ne peut être un lien symbolique :(
Le TP est une suite de petits exercices consistant à écrire à chaque fois un fichier .gitlab-ci.yml.
Le code source est fourni. Nous allons travailler sur deux (tout) petit code :
python-extension : une extension python en C, pour voir un peu de vraie compilation, quand même.
python-dice : un module pur python d'une ligne, qui tire des dés. Avec lui nous irons des tests au déploiement en production en passant pas la doc et la publication sur pypi
À chaque fois, nous fournissons les mots-clés à chercher dans la documentation très complète de gitlab https://docs.gitlab.com/ee/ci/yaml/README.html. Comme nous sommes gentils, nous fournisson aussi les solutions dans les fichiers .gitlab-ci-\*.yml.
## 1. Mon premier script ##
Mon premier fichier .gitlab-ci.yml. Il s'agit d'un fichier au format YAML décrit une ensemble d'étapes ([stages](https://docs.gitlab.com/ee/ci/yaml/#stage)) qui peuvent comporter plusieurs [jobs](https://docs.gitlab.com/ee/ci/yaml/#jobs). Chaque job contient un [script](https://docs.gitlab.com/ee/ci/yaml/#script), exécuté par le Runner.
But : Afficher "Hello world", /etc/issue et l'heure. Aller dans l'interface (CI/CD) et constater le résultat. On peut voir le nom du Runner qui a exécuté le job.
Note : Chaque job est indépendant (chaque job peut-être exécuté sur un Runner différent...).
1. echo, /etc/issue,
2. changement d'image docker
3. explication pipeline avec des true et false et ajout d'allow_failure
4. when (manual, failure, always, success (default))
5. \[skip ci\] \[ci skip\]
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment