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()