chat_back/.forgejo/workflows/deploy.yml
urec56 8903ecd254
All checks were successful
/ deploy (push) Successful in 8m2s
/ build (push) Successful in 8m58s
Заменил логин/пароль на токен в ci/cd
2025-08-11 00:29:33 +03:00

115 lines
3.9 KiB
YAML

on: [push]
jobs:
build:
runs-on: build
outputs:
chat_back_image: ${{ steps.set-vars.outputs.CHAT_BACK_IMAGE }}
celery_image: ${{ steps.set-vars.outputs.CELERY_IMAGE }}
steps:
- name: Set vars
id: set-vars
run: |
echo 'CHAT_BACK_IMAGE=git.urec56.ru/${{ env.GITHUB_REPOSITORY_OWNER }}/chat_back:${{ env.GITHUB_SHA }}' >> ${{ env.GITHUB_OUTPUT }}
echo 'CELERY_IMAGE=git.urec56.ru/${{ env.GITHUB_REPOSITORY_OWNER }}/celery:${{ env.GITHUB_SHA }}' >> ${{ env.GITHUB_OUTPUT }}
- name: Get code
uses: https://git.urec56.ru/urec/checkout@v4
- name: Set up Docker Buildx
uses: https://git.urec56.ru/urec/setup-buildx-action@v3
- name: Log in to container registry
uses: https://git.urec56.ru/urec/login-action@v3
with:
registry: git.urec56.ru
username: ${{ forge.actor }}
password: ${{ secrets.DOCKER_TOKEN }}
- name: Build and push backend
uses: https://git.urec56.ru/urec/build-push-action@v6
with:
context: .
file: docker/Dockerfile_back
push: true
tags: ${{ steps.set-vars.outputs.CHAT_BACK_IMAGE }}
cache-from: type=gha
cache-to: type=gha,mode=max
- name: Build and push celery
uses: https://git.urec56.ru/urec/build-push-action@v6
with:
context: .
file: docker/Dockerfile_celery
push: true
tags: ${{ steps.set-vars.outputs.CELERY_IMAGE }}
cache-from: type=gha
cache-to: type=gha,mode=max
deploy:
runs-on: deploy
needs:
- build
steps:
- name: Checkout repo
uses: https://git.urec56.ru/urec/checkout@v4
- name: Log in to container registry
uses: https://git.urec56.ru/urec/login-action@v3
with:
registry: git.urec56.ru
username: ${{ forge.actor }}
password: ${{ secrets.DOCKER_TOKEN }}
- name: Generate .env
run: |
touch .env
echo 'MODE=${{ vars.MODE }}' >> .env
echo 'DB_HOST=${{ secrets.DB_HOST }}' >> .env
echo 'DB_PORT=${{ secrets.DB_PORT }}' >> .env
echo 'DB_USER=${{ secrets.DB_USER }}' >> .env
echo 'DB_PASS=${{ secrets.DB_PASS }}' >> .env
echo 'DB_NAME=${{ secrets.DB_NAME }}' >> .env
echo 'JWT_SECRET_KEY=${{ secrets.JWT_SECRET_KEY }}' >> .env
echo 'JWT_ALGORITHM=${{ vars.JWT_ALGORITHM }}' >> .env
echo 'REDIS_HOST=${{ secrets.REDIS_HOST }}' >> .env
echo 'REDIS_PORT=${{ secrets.REDIS_PORT }}' >> .env
echo 'REDIS_DB=${{ secrets.REDIS_DB }}' >> .env
echo 'MONGO_HOST=${{ secrets.MONGO_HOST }}' >> .env
echo 'MONGO_PORT=${{ secrets.MONGO_PORT }}' >> .env
echo 'SMTP_HOST=${{ secrets.SMTP_HOST }}' >> .env
echo 'SMTP_PORT=${{ secrets.SMTP_PORT }}' >> .env
echo 'SMTP_USER=${{ secrets.SMTP_USER }}' >> .env
echo 'SMTP_PASS=${{ secrets.SMTP_PASS }}' >> .env
echo 'IMAGE_UPLOAD_SERVER=${{ vars.IMAGE_UPLOAD_SERVER }}' >> .env
echo 'INVITATION_LINK_HOST=${{ vars.INVITATION_LINK_HOST }}' >> .env
echo 'INVITATION_LINK_TOKEN_KEY=${{ secrets.INVITATION_LINK_TOKEN_KEY }}' >> .env
echo 'SENTRY_DSN=${{ secrets.SENTRY_DSN }}' >> .env
echo 'ADMIN_USER=${{ vars.ADMIN_USER }}' >> .env
echo 'ADMIN_USER_ID=${{ vars.ADMIN_USER_ID }}' >> .env
echo 'REGISTRATED_USER=${{ vars.REGISTRATED_USER }}' >> .env
echo 'VERIFICATED_USER=${{ vars.VERIFICATED_USER }}' >> .env
- name: Pull and run container
run: |
export 'CHAT_BACK_IMAGE=${{ needs.build.outputs.chat_back_image }}'
export 'CHAT_CELERY_IMAGE=${{ needs.build.outputs.celery_image }}'
docker pull ${CHAT_BACK_IMAGE}
docker pull ${CHAT_CELERY_IMAGE}
docker compose -f docker/deploy-docker-compose.yml up -d --force-recreate