From f523f6c39a6e7afd9db0234a95a34f010dd9f513 Mon Sep 17 00:00:00 2001 From: Anton Vakhrushev Date: Sun, 13 Apr 2025 11:06:20 +0300 Subject: [PATCH] Change deploy to use ansible --- Taskfile.yml | 15 +++++++++++++-- tasks.py | 49 ------------------------------------------------- 2 files changed, 13 insertions(+), 51 deletions(-) delete mode 100644 tasks.py diff --git a/Taskfile.yml b/Taskfile.yml index 73304b0..d2660e3 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -113,7 +113,18 @@ tasks: sh: git rev-parse --short HEAD TIMESTAMP: sh: date +%s - IMAGE_TAG: homepage-nginx:{{.COMMIT_HASH}}-{{.TIMESTAMP}} + DOCKER_IMAGE: homepage-nginx:{{.COMMIT_HASH}}-{{.TIMESTAMP}} cmds: - task: build-prod - - docker build --pull --file docker/Dockerfile.nginx.prod --tag {{.IMAGE_TAG}} . + - docker build --pull --file docker/Dockerfile.nginx.prod --tag {{.DOCKER_IMAGE}} . + - task: deploy-with-ansible + vars: + DOCKER_IMAGE: '{{.DOCKER_IMAGE}}' + + + deploy-with-ansible: + internal: true + requires: + vars: [DOCKER_IMAGE] + dir: '/home/av/projects/private/pet-project-server' + cmd: ansible-playbook -i production.yml playbook-app-homepage.yml --extra-vars 'homepage_web_image={{.DOCKER_IMAGE}}' diff --git a/tasks.py b/tasks.py deleted file mode 100644 index ee23887..0000000 --- a/tasks.py +++ /dev/null @@ -1,49 +0,0 @@ -from fabric import Connection -from invoke import task -from datetime import datetime -import subprocess -import shlex - -APP_NAME = "homepage" -SSH_HOST = "homepage@51.250.85.23" -DOCKER_REGISTRY = "cr.yandex/crplfk0168i4o8kd7ade" - - -def run(args): - return subprocess.run(args, check=True, capture_output=True).stdout - - -@task -def deploy(c): - timestamp = int(datetime.now().timestamp()) - commit = run(["git", "rev-parse", "--short", "HEAD"]).decode("utf-8").strip() - nginx_image_tag = f"{DOCKER_REGISTRY}/homepage-nginx:{commit}-{timestamp}" - - print(f"Build nginx image {nginx_image_tag}") - - run( - [ - "docker", - "build", - "--file", - "docker/Dockerfile.nginx.prod", - "--tag", - nginx_image_tag, - ".", - ] - ) - - print("Push nginx image") - - run(["docker", "push", nginx_image_tag]) - - print("Ready to setup remote host") - - with Connection(SSH_HOST) as c: - c.put( - "./docker/docker-compose.prod.yml", - remote="/home/homepage/docker-compose.yml", - ) - c.run("cp .env .env.prod") - c.run(f"echo NGINX_IMAGE={shlex.quote(nginx_image_tag)} >> .env.prod") - c.run(f"docker-compose --project-name {shlex.quote(APP_NAME)} --env-file=.env.prod up --detach")