129 lines
4.5 KiB
YAML
129 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: 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
|
|
|
|
- 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=registry,ref=git.urec56.ru/${{ env.GITHUB_REPOSITORY_OWNER }}/chat_back:buildcache
|
|
cache-to: type=registry,ref=git.urec56.ru/${{ env.GITHUB_REPOSITORY_OWNER }}/chat_back:buildcache,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=registry,ref=git.urec56.ru/${{ env.GITHUB_REPOSITORY_OWNER }}/celery:buildcache
|
|
cache-to: type=registry,ref=git.urec56.ru/${{ env.GITHUB_REPOSITORY_OWNER }}/celery:buildcache,mode=max
|
|
|
|
|
|
deploy:
|
|
runs-on: docker
|
|
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: Pull and run container
|
|
run: |
|
|
CHAT_BACK_IMAGE=${{ needs.prepare.outputs.chat_back_image }}
|
|
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
|
|
|
|
|