Detta är ett verktyg som frågar aktiva instanser i en miljö efter applikationsinformation såsom version, men där kan även finnas annan intressant information som VM-information, java-version, upptid, etc. Informationen används sedan för att uppdatera en confluence-sida.
VersionVisualizer VV konfigureras med hjälp av en yaml-fil som innehåller information för confluence (vilken sida och inloggningsuppgifter), loggning samt vilka instanser som skall tillfrågas och hur informationen skall tolkas.
...
Kodblock | ||
---|---|---|
| ||
--- confluence_settings: url: https://skl-tp.atlassian.net/wiki/ username: <confluence_username> password: <secret_password_or_api_token> pageid: <numeric_pageid> log_config: version: 1 formatters: simple: format: '%(asctime)s - %(name)s - %(levelname)s - %(message)s' handlers: formatter: simple stream: ext://sys.stdout loggers: VersionVisualizer: level: INFO handlers: [ console ] propagate: no node_settings: # VP Dev 2 noder - cfg: parser: JsonInfoUpdater url_template: "http://ind-{env}-{cluster}{nr}.ind1.sth.basefarm.net:{port}/{status_uri}" status_uri: status cluster: vp port: 8080 env: dtjp nodes: 2 response_map: name: Name version: Version javaVersion: JavaVersion |
för För att återanvända delar av en konfiguration så kan advancerade avancerade yaml-funktioner som referens-variabler referensvariabler användas, se en skarp settings.yaml längst ner för exempel.
installation
...
Bygge och publicering av release till Nexus
Versionsnumrering
Filen setup.py
har en konstant kallad VV_VERSION
som håller versionsnumret för VV (I skrivande stund 1.3). Uppdatera värdet om en ny release ska byggas. Värdet används ex när whl-filen skapas, och styr huruvida man ersätter befintliga artefakter i Nexus (om versionsnumret är samma som det gamla) eller skapar nya (om man uppdaterat versionsnumret).
Bygg och publicera
För följande kommandon antas att working dir är VersionVisualizer, och att de körs som Admin på WIndows och sudo eller root på Linux.
Linux:
Kodblock | ||
---|---|---|
| ||
# Activate the env
VV2ENV/bin/activate
# Set up VENV
python -m pip install --upgrade pip build pip2pi # First time only
# Build whl and bundle deps
python -m build
python -mpip wheel --wheel-dir wheels dist/*.whl
dir2pi wheels
# Upload to Nexus
cd wheels
for whl in \$(find simple -name '*.whl')
do
curl --fail -u ${CREDENTIALS} --upload-file \$whl https://nexus.drift.inera.se/repository/maven-snapshots/se/inera/ntjp/pypi/\$whl
done |
Windows:
Kodblock | ||
---|---|---|
| ||
# Activate the env
venv/Scripts/activate.ps1
# Set up VENV
python -m pip install --upgrade pip build pip2pi # First time only
# Build whl and bundle deps
python -m build
python -mpip wheel --wheel-dir wheels $('dist/' + (Get-ChildItem dist/*.whl -Name))
dir2pi wheels
# Upload to Nexus
cd wheels
$creds = Get-Credential -Message "Specify username and pwd for the Nexus repo (Basefarm)"
foreach ($file in (Get-ChildItem simple/*.whl -Recurse))
{
$parameters = @{
Uri = "https://nexus.drift.inera.se/repository/maven-snapshots/se/inera/ntjp/pypi/simple/$($file.Directory.Name)/$($file.Name)"
InFile = "$((Get-Location))\$($file.Name)" # Use the actual file, not the symlink. It's located a level up, in the wheels folder
Credential = $creds
Method = 'Put'
ContentType = 'application/zip'
}
Invoke-WebRequest @parameters
} |
Deployment i produktion
Efter fullgjord publicering på Nexus enligt ovan, logga in på ind-ptjp-misc1.ind1.basefarm.net
och gör ev uppdatering av yaml-filer under /opt/VersionVisualizer2/settings.d
. Därefter körs /opt/VersionVisualizer2/run.sh
som då laddar ner senaste versionen av VV, synkar yaml-filer och startar VersionVisualizer för varje hittad yaml-fil.
Första installation
VV är skrivet för python 3.8 6 (och senare) och distribueras i form av en whl som kan installeras med pip. det Det kan vara bra att installera VersionVisualizer VV tillsamman med dess beroenden i en virtuel python-miljö, en sk venv. följande Följande steg används då:
Kodblock | ||
---|---|---|
| ||
# skapa venv sudo python3 -mvenv /path/to/installdir # ändra ägandeskap för miljön till användaren som skall köra vv sudo chown vvuser -r /path/to/installdir # bli användaren i fråga sudo su - vvuser # gå till och aktivera miljön cd /path/to/installdir source ./bin/activate # installera VV python -mpip install --upgrade /path/to/wheels/VersionVisualizer_NTjP-1.0-py3-none-any.whl #kör VV python -mVersionVisualizer --settings /path/to/settings.yaml |
...