Загрузка данных


trigger:
  branches:
    include:
      - dev-INFRADEV-67

pr: none

pool:
  name: Infradev

resources:
  repositories:
    - repository: infra
      type: git
      name: Infradev/opsMailArchive
      ref: refs/heads/dev2.0

variables:
- group: vault-access


steps:

- checkout: infra
  clean: true
  path: opsMailArchive

- checkout: self
  clean: true
  path: opsMailArchive/django-ma/src

- bash: |
    set -e

    echo "=== APP ==="
    ls -la $(Pipeline.Workspace)/opsMailArchive/django-ma/src

    echo "=== INFRA ==="
    ls -la $(Pipeline.Workspace)/opsMailArchive
  displayName: 'Debug workspace'


- task: PythonScript@0
  displayName: 'Get secrets from Vault'
  inputs:
    scriptSource: filePath
    scriptPath: '$(Pipeline.Workspace)/opsMailArchive/get_secrets.py'
    arguments: --env dev
  env:
    VAULT_ADDR: $(VAULT_ADDR)
    VAULT_USERNAME: $(VAULT_USERNAME)
    VAULT_PASSWORD: $(VAULT_PASSWORD)
    VAULT_MOUNT: $(VAULT_MOUNT)
    APP_PATH: $(Pipeline.Workspace)/opsMailArchive


- task: PythonScript@0
  displayName: 'Set version + render templates'
  inputs:
    scriptSource: filePath
    scriptPath: '$(Pipeline.Workspace)/opsMailArchive/set_version.py'
  env:
    APP_PATH: $(Pipeline.Workspace)/opsMailArchive
    BRANCH: dev


- bash: |
    set -e

    cd $(Pipeline.Workspace)/opsMailArchive/django-ma/src

    git config user.name "Azure DevOps"
    git config user.email "svc_infradev@avp.ru"

    git add changelog.md pyproject.toml

    if ! git diff --cached --quiet; then
      git commit -m "ci: bump version $(APP_VERSION) [skip ci]"
      git push origin HEAD:dev
    else
      echo "No changes to commit"
    fi
  displayName: 'Commit version changes'


- bash: |
    set -e

    cd $(Pipeline.Workspace)/opsMailArchive/

    docker buildx bake \
      --progress=quiet \
      --push \
      -f docker-bake.hcl
  displayName: 'Build & Push'
  env:
    REGISTRY: it-infradev.repository.avp.ru:443
    BRANCH: dev
    VERSION: $(APP_VERSION)
    DJANGO_ENV: dev

- bash: |
    set -e

    echo "Деплоим на dev.mailarchive.avp.ru"

    SERVER="svcdevmail"
    REMOTE_PATH="/opt/mailarchive"
    LOCAL_COMPOSE="$(Pipeline.Workspace)/opsMailArchive/docker-compose.yml"

    echo "Копируем docker-compose.yml на сервер"
    scp "$LOCAL_COMPOSE" $SERVER:$REMOTE_PATH/docker-compose.yml

    echo "Перезапускаем сервисы..."
    ssh $SERVER "cd $REMOTE_PATH && \
                 docker compose pull --quiet-pull && \
                 docker compose down --remove-orphans && \\
                 docker compose up -d --force-recreate"

    echo "=== Деплой успешно завершен ==="
  displayName: 'Deploy to devmail'
  env:
    VERSION: $(APP_VERSION)

- bash: |
    rm -rf "$(Pipeline.Workspace)/opsMailArchive"
  displayName: 'Cleanup workspace'
  condition: always()