Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Kaikki sellainen, joka koskee vain Kompassia itseään avoimen lähdekoodin sovelluksena, kuuluu kooditason dokumentaatioon. Tälle sivulle kuuluvat ne asiat, jotka käsittelevät osoitteessa https://kompassi.eu sijaitsevaa virallista Kompassi-asennusta sekä Kompassin kehitysprosessia osana Traconia, Desuconia ja RopeconiaoRopeconia.

Kehitysprosessi

Backlog sijaitsee Jirassa. Boardille pääsemiseksi tarvitaan kompassi-developers-ryhmäjäsenyys, jonka saa Japsulta. (warning) Ryhmän antaminen Kompassin taka-administa ei riitä, koska se ei päivitä ryhmäjäsenyyttä Crowdiin, vaan se pitää toistaiseksi päivittää käsin myös Crowdiin.

...

  • Japsu kehittää suoraan development-haarassa, jos työ ei jää pitkäksi aikaa kesken. Japsu ei siis välttämättä aina käytä feature-haaroja.
    • Vieraileville kehittäjille feature-haarat ovat pakollisia ja developmentiin mergetään Japsun koodikatselmoinnin kautta.
    • Katselmointia pyydetään lähettämällä GitHubissa pull request, joka kohdistuu kehittäjän omasta feature-haarasta virallisen repon development-haaraan.
  • Japsu tekee tarvittaessa hotfixejä suoraan master-haaraan ja mergeää suoraan masterin developmentiin.
    • Siinä epätodennäköisessä tapauksessa, että vieraileva kehittäjä tekee hotfixin, Japsu katselmoi sen ja mergeää sen ensin masteriin ja developmentiin.
    • Katselmointia pyydetään lähettämällä GitHubissa pull request, joka kohdistuu kehittäjän omasta feature-haarasta virallisen repon development-haaraan.
  • Releaseja ei tehdä GitFlow-tyyliin, vaan Japsu testattuaan uudet ominaisuudet development-haarassa ja Staging-ympäristössä mergeää development-haaran suoraan master-haaraan ja sitä kautta deplaa sen tuotantoon.

...

YmpäristöOsoiteMihin se on tarkoitettuPäivityspolitiikka
Tuotanto

https://kompassi.eu

Kompassin varsinainen tuotantoympäristö. Tätä oikeat tapahtumat ja ihmiset käyttävät.Jatkuvan integraation ns. CI-putki päivittää master-haarasta
Staging

https://dev.kompassi.eu

Kompassin kehittämisen tueksi sekä esittelyyn muille tapahtumaorganisaatioille. Tänne voi antaa vapaammin pääkäyttäjätunnuksia joilla voi mellastaa vapaasti pääsemättä käsiksi henkilötietoihin tai aiheuttamatta tuhoa muille tapahtumille.CI-putki päivittää development-haarasta

Molemmat ympäristöt pyörivät Neula-palvelimella. Ympäristöjä hallitaan Ansible-konfiguraationhallinnan avulla.

Tuotantoonvienti

Olet siis saanut aikaan jotain valmista? Hyvä!

  1. Rebaseta feature-haarasi GitHubin tracon/kompassi-repon development-haaran uusimman version päälle, jos se ei ole jo.
  2. Puske feature-haarasi GitHubiin oman tunnuksesi alle luomaasi kompassi-repon forkkiin kuvaavalla haaranimellä, esim. feature/condb-584. Käytä haaran nimen osana joko Jira-tiketin numeroa tai ytimekästä kuvausta ominaisuudellesi, esim. feature/automatic-shift-generation.
  3. Lähetä feature-haarastasi pull requesttracon/kompassi-repon development-haaraan.
  4. Japsu katselmoi pull requestisi. Toteuta pyydetyt muutokset (tarvittaessa yhdessä Japsun kanssa).
  5. Kun tarvittavat muutokset on tehty, Japsu mergeää feature-haarasi development-haaraan ja se pyörähtää ajoon Staging-ympäristöön.
  6. Auta Japsua testaamaan muutoksesi Staging-ympäristössä.
  7. Jos kaikki meni putkeen, seuraavaksi Japsu mergeää development-haaran master-haaraan eli "tekee julkaisun".
  8. Muutoksesi ovat nyt tuotannossa. Onneksi olkoon!

Tietokantamigraatiot ja setup-skriptit

Tietokantamigraatiot tehdään Djangon omalla migraatiotyökalulla. Niiden vastuulla on tietokannan rakenteen (taulujen, kenttien ja indeksien) päivittäminen ajan tasalle.

Migraatioiden lisäksi käytetään ns. idempotentteja setup-skriptejä. Idempotentti tarkoittaa sitä, että setup-skriptiä voi ajaa samaan asennukseen uudestaan ja uudestaan, eikä se myöhemmillä ajokerroilla riko mitään saati hajoa omaan mahdottomuuteensa, vaan varmistaa vain haluttujen resurssien olevan olemassa.

Setup-skriptin vastuut pähkinänkuoressa:

  1. luo organisaatiot, tapahtumat ja muun rakenteellisen informaation Kompassin tietokantaan
  2. luo uudet ryhmät Atlassian-tuotteiden Crowd-kertakirjautumispalveluun, jos se on konfiguroitu

Omassa kehitysympäristössäsi voit ajaa setup-skriptin tai pelkät migraatiot Docker Composen avulla näin:

Code Block
languagebash
titleMigraatioiden ja setup-skriptin ajaminen lokaalissa kehitysympäristössä
# käynnistä ensin kehitysympäristö toisessa terminaali-ikkunassa
docker-compose up
 
# setup-skriptin ajaminen
docker-compose exec web python manage.py setup
 
# pelkkien tietokantamigraatioiden ajaminen
docker-compose exec web python manage.py migrate

Staging- ja tuotantoympäristöissä setup-skriptin ja migraatioiden ajoon käytetään Jenkinsistä löytyvää kompassi-ops-työtä. Jenkins käyttää puolestaan näiden ajamiseen Ansible-skriptejä. Kuha pääsee Jenkinsiin, voi ajaa tietokantamigraatiot tai setup-skriptin vaikka ei ole SSH-pääsyä tai paikallista Ansible-ympäristöä.

Jenkins like it's 2010Image Added

Tietokanta

Tuotanto- ja Staging-ympäristöissä tietokannan käyttöoikeudet on eriytetty siten, että tietokannan rakenteeseen vaikuttavat operaatiot – siis käytännössä migrate- ja setup-skriptit – ajetaan tietokannan omistajakäyttäjällä (ei kuitenkaan pääkäyttäjällä) ja sovellusta itseään pyöritetään matalammin oikeuksin. Lisää tästä voit lukea kooditason dokumentaatiosta.

Molempien tietokannat sijaitsevat tätä kirjoitettaessa vielä Neulan dockeroidussa PostgreSQL:ssä ja tätä lukiessasi ehkä jo Siilolla. Tietokantoja varmuuskopioidaan jatkuvasti Piiloon. Lue lisää tietokannoista.

Ympäristö

Tietokanta missä nyt

(16.9.2017)

Tietokanta missä toivottavasti pian

Tavallinen käyttäjä

(Sovelluksen ajo)

Tietokannan omistajakäyttäjä

(Migrate- ja setup-skriptit)

Tuotanto

palvelin neula.kompassi.eu

kontti kompassi.eu-docker (PostgreSQL 9.5)

tietokanta kompassi

palvelin siilo.tracon.fi

kontittamaton PostgreSQL 10

tietokanta kompassi

kompassikompassi_ddl
Staging

palvelin neula.kompassi.eu

kontti kompassi.eu-docker (PostgreSQL 9.5)

tietokanta kompassidev

palvelin siilo.tracon.fi

kontittamaton PostgreSQL 10

tietokanta kompassi

kompassidevkompassidev_ddl