Gå till slutet av bannern
Gå till början av bannern

VersionVisualizer (VV)

Hoppa till slutet på meta-data
Gå till början av metadata

Du visar en gammal version av den här sidan. Visa nuvarande version.

Jämför med nuvarande Visa sidhistorik

« Föregående Version 3 Nästa »

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.

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.

Här är ett exempel på en konfiguration som läser två vp-noder i dev-miljön.

---
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 att återanvända delar av en konfiguration så kan avancerade yaml-funktioner som referensvariabler användas, se en skarp settings.yaml längst ner för exempel.

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:

# 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:

# 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.6 (och senare) och distribueras i form av en whl som kan installeras med pip. Det kan vara bra att installera VV tillsamman med dess beroenden i en virtuel python-miljö, en sk venv. Följande steg används då:

# 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

  • Inga etiketter