Azure DevOps, czyli spinamy proces

Instalacja skryptów bazodanowych na kolejnym środowisku to zawsze ważne wydarzenie w Twoim projekcie? Wydarzenie, które zabiera czas i energię dla wielu osób. Od programistów, przez administratorów, po osoby, które muszę zatwierdzić kod, którego nie widziały na oczy. W poniższym artykule przedstawię proces, który sprawia, że instalacje stają się codziennością.

Do prezentacji wykorzystam Azure DevOps oraz opisane we wcześniejszych artykułach metody i narzędzia. Głównie skupię się tutaj na tym, co może stać się z kodem i w jaki sposób może zostać zainstalowany po uzyskaniu akceptacji w Pull Requeście. Wykorzystam konfigurację utworzoną na Azure DevOps. Repozytorium będzie utrzymywane właśnie tam. Dla potrzeb artykułu uruchomiłem lokalnie na swoim komputerze bazę danych w kontenerze Dockera. Mój komputer został połączony jako maszyna wirtualna do Azuee, dzięki czemu mogę wykorzystać go w procesie instalacji.

Kroki procesu wyglądają następująco. W pierwszym z nich Programista commituje kod do repozytorium, które jest hostowane na Azure DevOps. Tworzy Pull Requesta, który uruchamia zdefiniowanego wcześniej Pipeline. Pipeline uruchamia proces na wcześniej zdefiniowanej maszynie, na której jest uruchomiona baza danych w kontenerze. Ściąga tam repozytorium, uruchamia liquibase instalującego skrypty bazodanowe, uruchamia testy sprawdzające poprawność instalacji i zamyka proces. Całość trwa kilkanaście sekund, po których mamy pewność i wiedzę, że kod, który utworzyliśmy, instaluje się poprawnie, a testy nie wykryły żadnych zmian.

Kod konfiguracyjny może wyglądać w ten sposób:

# azure-pipelines.yml

# Starter pipeline
# Start with a minimal pipeline that you can customize to build and deploy your code.
# Add steps that build, run tests, deploy, and more:
# https://aka.ms/yaml

trigger:
  branches:
    include:
    - master

stages:
- stage: deploy
  jobs:
  - deployment: Test_Deploy
    displayName: Test_Deploy_from_Azure_to_PC
# wskazanie, na środowisko uruchomienia skryptu - w tym przypadku wcześniej dodany PC
    environment: 
      name: dev-local-pc
      resourceType: VirtualMachine
    strategy:
      runOnce:
        deploy:
          steps:
# Pobranie kodu z repozytorium
          - checkout: self
            displayName: 'Checkout git repository'

          - script: ./utils/liquibase.bat --changeLogFile=master.xml --defaultsFile=utils\liquibase.properties status --verbose
            displayName: 'List scripts to install'
          - script: ./utils/liquibase.bat --changeLogFile=master.xml --defaultsFile=utils\liquibase.properties --log-level=info update
            displayName: 'Install scripts on database'
          - script: ./utils/ci/check_invalid.bat  
            displayName: 'Recompile invalid objects'
          - script: ./utils/utPLSQL-cli/bin/utplsql.bat run user/password@localhost:1521/orclpdb1
            displayName: 'Run Database Tests'

Jest to tylko przykładowa konfiguracja, która umożliwia automatyczną instalację skryptów na bazie danych. Można ją rozszerzyć o inne środowiska i dodać kolejne kroki.

Mam nadzieję, że dzięki serii artykułów proces CI oraz CD został przybliżony i przestał być tak mocno skomplikowany. Liczę, że wszystkie te wskazówki pomogą w automatyzacji deploymentów, dzięki czemu przyśpiesza proces wytwarzania oprogramowania w bazach danych Oracle.

W przypadku, jeśli któryś z czytelników miałby jakieś pytania lub uwagi do artykułu, zachęcam do kontaktu. Z chęcią pomogę wdrożyć proces CI i CD w Twoim projekcie oraz odpowiem na nurtujące pytania.

Możesz również polubić…

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *