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 (huom. suoraan tuotantoon – harkitaan mahdollisia staging-instansseja jos tästä tulee ongelmia)
Kirjoitushetkellä seuraavat projektit ovat CI:n piirissä:
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