Skip to content

Opetushallitus/eperusteet

Repository files navigation

Eperusteet

Build Status

1. Palvelun tehtävä

Opetushallituksen ePerusteet-palvelu tutkintojen ja yleissivistävän koulutuksen opetussuunnitelmien perusteiden laadintaan ja julkaisuun.

Palvelukortti

https://wiki.eduuni.fi/display/ophpolku/ePerusteet+palvelukokonaisuus

2. Arkkitehtuuri

Javalla ja Springillä toteutettu web service (eperusteet-service kansio). Tarjoaa rajapinnan eperusteet-ui:lle ja ulkoisille palveluille. Tallentaa tiedot postgreSQL-kantaan.

Sisältää myös vanhan eperusteet käyttöliittymän (eperusteet-app kansio) mutta tämän on jo osin korvannut uusi eperusteet-ui. Uudesta käyttöliittymästä ei kuitenkaan vielä aivan kaikkea toiminallisuutta löydy, mistä johtuen vanha pyörii edelleen tuotannossa.

3. Kehitysympäristö

3.1. Esivaatimukset

Asenna haluammallasi tavalla

  • Amazon Corretto JDK 8
  • Maven 3
  • Docker
  • luo dev-settingsin mukaiset käyttäjäkohtaisten asetusten tiedostot annettuihin polkuihin ja täytä omilla tiedoilla

Riippuvuuksien takia käännösaikana tarvitaan pääsy sisäiseen pakettien hallintaan, koska osa paketeista (lähinnä build-parent) ei ole julkisissa repoissa.

Ajoaikana riippuu mm. keskitetystä autentikaatiosta (CAS), käyttäjähallinnasta, organisaatiopalvelusta ja koodistosta joihin täytyy olla ajoympäristöstä pääsy.

Jos on tarve kehittää vanhaa käyttöliittymää asenna:

  • Nodejs, yo, bower, grunt-cli

3.2. Testien ajaminen

cd eperusteet/eperusteet-service
mvn clean install -Plocal

3.3. Migraatiot

Tietokantamigraatiot on toteutettu flywaylla ja ajetaan automaattisesti kännistyksen yhteydessä. Migraatiotiedostot löytyvät kansioista

eperusteet/eperusteet-service/src/main/resources/db/migration

eperusteet/eperusteet-service/src/main/java/db/migration

3.4. Ajaminen lokaalisti

Tietokantojen lokaalia pyöritystä varten luo koneellesi esim projektin juureen docker-compose.yml tiedosto jonka sisältö on alla:

version: "3.1"
services:
  eperusteet:
    image: postgres:12.10
    environment:
      POSTGRES_USER: oph
      POSTGRES_PASSWORD: test
      POSTGRES_DB: eperusteet
    ports:
      - "127.0.0.1:5432:5432"
    #volumes:
    #  - "./eperusteet:/var/lib/postgresql/data"
  eperusteet-amosaa:
    image: postgres:12.10
    environment:
      POSTGRES_USER: oph
      POSTGRES_PASSWORD: test
      POSTGRES_DB: amosaa
    ports:
      - "127.0.0.1:5433:5432"
    #volumes:
    #  - "./eperusteet:/var/lib/postgresql/data"
  eperusteet-ylops:
    image: postgres:12.10
    environment:
      POSTGRES_USER: oph
      POSTGRES_PASSWORD: test
      POSTGRES_DB: ylops
    ports:
      - "127.0.0.1:5434:5432"
    #volumes:
    #  - "./eperusteet:/var/lib/postgresql/data"   

aja tiedoston kanssa samassa kansiossa komento docker compose up

Tämän jälkeen palvelun saa käyntiin seuraavilla komennoilla:

cd eperusteet/eperusteet-service
mvn jetty:run -Plocal

  API-generointi

Jos muutat tietomallia tai rajapintoja aja tämä:

cd eperusteet/eperusteet-service  
mvn clean compile -Pgenerate-openapi

Tämän jälkeen kopio eperusteet/eperusteet-service/target/openapi/eperusteet.spec.json-tiedoston sisältö tiedostoon eperusteet/generated/eperusteet.spec.json

Päivitys 30.5.2022: API generoidaan buildin yhteydessä github actionsissa joten sitä ei tarvitse enää tehdä käsin.

eperusteet-app (vanha käyttöliittymä)

Jos jostain syystä tulee tarvetta tätä

  Käynnistys

cd eperusteet/eperusteet-app/yo
npm install
bower install
npm run dev

  Testaus

cd eperusteet/eperusteet-app/yo
npm run unit

3.4.1. Kikkoja lokaaliin kehitykseen

3.5. IDE setup

IDEAssa saattaa olla helpompi avata vain eperusteet-service koko repon juuren sijaan, sillä joillakin on tullut ide:n sekoilua koko repon avauksen tapauksessa.

3.6. Versiohallinta

Git käytäntönä projektissa on suosittu kehityshaaran squashausta päähaaraan mergettäessä.

4. Ympäristöt

4.1. Testiympäristöt

Testiympäristöjen swaggerit löytyvät seuraavista osoitteista

4.3. Lokit

Lokit löytyvät AWS:n cloudwatchista

4.4. Continuous integration

Buildipalveluna käytetään Github Actionsia (build.yml). Pushaaminen remoteen aiheuttaa sen että eperusteet-app ja eperusteet-service buildataan, servicen api:sta generoidaan json tiedosto uusia käyttöliittymiä varten. Tämän jälkeen luodaan kontti-image OPH:n deploytyökaluja varten.

ePerusteet-projektit

Projekti Build status Maintainability Test Coverage Known Vulnerabilities
ePerusteet Build Status
ePerusteet-amosaa Build Status
ePerusteet-ylops Build Status
ePerusteet-ui Build Status
eperusteet-ylops-ui Build Status Maintainability Test Coverage
ePerusteet-amosaa-ui Build Status
ePerusteet-opintopolku Build Status Maintainability Test Coverage
ePerusteet-backend-utils Build Status
ePerusteet-frontend-utils Build Status Maintainability Test Coverage