Kun kehittäjä puskee koodia Traconin CI:n piirissä olevan projektin GitHub-repon master-haaraan, seuraavat stepit suoritetaan automaattisesti:
- Build: Docker-imagen rakentaminen
- Test: Testien ajaminen uudessa Docker-imagessa
- Push: Uuden Docker-imagen toimitus Docker Hubiin
- Deploy: Sovelluksesta ajossa olevien instanssien päivittäminen uuteen versioon
Kirjoitushetkellä seuraavat projektit ovat CI:n piirissä:
Pääsääntöisesti projektien CI-putket deplaavat suoraan tuotantoon. Poikkeuksena on Kompassi, jossa development-haara deplataan staging-instanssiin dev.kompassi.eu ja master-haara tuotantoinstanssiin kompassi.eu.
CI-putkea pyörittää Jenkins, jossa buildit laukaistaan GitHubin lähettämällä webhookilla.
Mikä ei tapahdu automaattisesti
- tietokantamigraatiot – esim. sudo docker exec kompassi.eu-gunicorn python manage.py migrate (tai kompassin tapauksessa mieluummin setup kuin migrate)
Uuden projektin lisääminen Jenkinsiin
Käytetään vain Pipeline-tyyppisiä projekteja, jos ei ole erityisen painavaa syytä tehdä vanhanmallista projektia. Pipelinen sisältö tulee Jenkinsfilestä projektin versionhallintareposta. Katso mallia ylläolevista.
- Viritä projektille Jenkinsfile
- Luo projektille buildi Jenkinsiin
- Viritä GitHubiin projektille service joka huutelee Jenkinsille
Haluan tunnuksen Jenkinsiin
TECH-95 - Getting issue details... STATUS
Kysy Japsulta.
Jenkinsin varmuuskopion palauttaminen
Jenkinsin voi saada jojoon esimerkiksi plugarien päivityksen yhteydessä. Jos näin käy, ei hätää! Jenkinsin kaikki data varmuuskopioidaan joka yö.
sudo docker rm -f jenkins.tracon.fi sudo docker volume rm jenkins.tracon.fi-data sudo docker volume create --name jenkins.tracon.fi-data sudo cat /var/backups/jenkins/jenkins.tracon.fi.tar | sudo docker run --rm -i --volume jenkins.tracon.fi-data:/var/jenkins_home debian:jessie tar -xv -C /
Tämän jälkeen nosta Jenkins takaisin pystyyn Ansiblella:
ansible -sKt jenkins -l monokkeli.tracon.fi tracon.yml