Kroki postępowania podczas instalacji nowej wersji oprogramowania:
Pobranie plików z serwera
Wyłączenie kontenerów - docker-compose down
Podmiana plików docker-compose oraz .env
Wykonanie migracji SQLMigrations.sql w LDS
Włączenie kontenerów - docker-compose up
Wykonanie migracji wewnątrz kontenerów:
- docker exec -it <id serwisu> bash
- curl -XPOST -H 'Host: localhost' -H 'X-Tenant-Id: placeholder' -H 'Execution-id: placeholder' -H "Content-type: application/json" -d '{}' 'http://localhost/api/database/update'
- exit
Punkt ten można też wykonać skryptem (przetestowany u nas):
Po wgraniu nowej wersji aplikacji, należy wykonać migrację wewnątrz kontenerów wszystkich serwisów skryptem (automatycznie wykonującym je) poniżej. Skrypt należy uruchomić komendąsh migrations.shw katalogu z plikiem.Sprawdzenie wykonania migracji serwisów
Jeżeli migracje zostały wykonane skryptem to wszystkie serwisy dostaną polecenie do wykonania migracji. Kiedy w serwisie brakuje migracji i zostaną one wykonane pomyślnie, output w konsoli będzie wyglądał tak (wszystkie poniższe screeny są z wykonania migracji w ConsentService:
Kiedy w serwisie brakuje migracji i zostaną one wykonane, ale z błędem, w sekcji "error" będzie zwrócony błąd mówiący o niepowodzeniu update, np.:"error" : {
"message" : "An error occurred while deserializing the Id property of class Psd2Hub.Services.ConsentService.Repository.Models.DeletedConsent: Cannot deserialize a 'Guid' from BsonType 'ObjectId'.",
"migration" : "1.0.7 MoveDeletedConsentsHistory"
},
"migrationsRan" : [
"1.0.1 AddAccountIsDeletedFlag",
"1.0.2 ChangeIsBusinessToBusinessContext",
"1.0.3 MigrateConsentAspspDeletion",
"1.0.4 AddDeletionIndexesOnConsetDeleted",
"1.0.5 MoveSoftDeletedConsentsToDeleted",
"1.0.6 MigrateHistoryToNewStructure"
]wtedy należy w NLogu sprawdzić logi z wykonania: .find({'executionData.id':'placeholder'}).sort({date:-1})
Do potwierdzenia pomyślnego wykonania migracji można sprawdzić w bazie danego serwisu w mongo w kolekcji _migrations listę migracji:
przed wykonaniem curl na ConsentService:
po wykonaniu:
Kiedy serwis nie ma żadnej migracji do wykonania to wtedy zostanie zwrócona pusta lista jak poniżej, wtedy wszystko jest ok: