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