chat_back/.forgejo/workflows/deploy.yml
urec56 5e51e28425
All checks were successful
/ deploy (push) Successful in 5m37s
/ prepare (push) Successful in 5m5s
/ build (push) Successful in 15m17s
тест ci/cd
2025-04-12 13:38:39 +03:00

138 lines
4.5 KiB
YAML

on: [push]
jobs:
prepare:
runs-on: docker
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 }}
build:
runs-on: docker
needs: prepare
steps:
- name: Check env
run: |
echo '${{ needs.prepare.outputs.chat_back_image }}'
echo '${{ needs.prepare.outputs.celery_image }}'
- 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: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build and push backend
uses: https://git.urec56.ru/urec/build-push-action@v6
with:
context: .
file: docker/Dockerfile_back
push: true
tags: ${{ needs.prepare.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: ${{ needs.prepare.outputs.celery_image }}
cache-from: type=gha
cache-to: type=gha,mode=max
deploy:
runs-on: deploy
needs:
- prepare
- 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: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Generate .env
run: |
touch .env
echo 'MODE=${{ env.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=${{ env.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=${{ env.IMAGE_UPLOAD_SERVER }}' >> .env
echo 'INVITATION_LINK_HOST=${{ env.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=${{ env.ADMIN_USER }}' >> .env
echo 'ADMIN_USER_ID=${{ env.ADMIN_USER_ID }}' >> .env
echo 'REGISTRATED_USER=${{ env.REGISTRATED_USER }}' >> .env
echo 'VERIFICATED_USER=${{ env.VERIFICATED_USER }}' >> .env
echo 'MODE=${{ env.MODE }}'
echo 'ADMIN_USER=${{ env.ADMIN_USER }}'
echo 'ADMIN_USER_ID=${{ env.ADMIN_USER_ID }}'
echo 'REGISTRATED_USER=${{ env.REGISTRATED_USER }}'
echo 'VERIFICATED_USER=${{ env.VERIFICATED_USER }}'
cat .env
- name: Pull and run container
run: |
export 'CHAT_BACK_IMAGE=${{ needs.prepare.outputs.chat_back_image }}'
export 'CHAT_CELERY_IMAGE=${{ needs.prepare.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