diff --git a/.github/workflows/deploy-staging.yml b/.github/workflows/deploy-staging.yml new file mode 100644 index 00000000..6f17c34b --- /dev/null +++ b/.github/workflows/deploy-staging.yml @@ -0,0 +1,39 @@ +name: Deploy Prod configuration + +on: + workflow_run: + workflows: ["Create and publish a Docker image"] + types: [completed] + branches: + - 'main' + - 'v*' + +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - name: Deploy to SSH target + uses: appleboy/ssh-action@v1.0.3 + with: + host: ${{ secrets.HOST }} + username: ${{ secrets.USERNAME }} + key: ${{ secrets.ACCESS_KEY }} + script: | + temp_env_file=$(mktemp) + + echo """${{secrets.COMPOSE_ENV}}""" >> $temp_env_file + echo "ENV_PATH=$temp_env_file" >> $temp_env_file + if [ ! -d socialpredict-deploy ] + then + git clone ${{ github.server_url }}/${{ github.repository }} socialpredict-deploy + else + cd socialpredict-deploy + git fetch origin + fi + git checkout ${{ github.sha }} + + echo "${{ secrets.DOCKER_TOKEN }}" | docker login ghcr.io -u j4qfrost --password-stdin + + docker compose -f ./scripts/docker-compose-prod.yaml \ + --env-file $temp_env_file \ + up -d --no-deps frontend backend \ No newline at end of file diff --git a/scripts/dev/env_writer_dev.sh b/scripts/dev/env_writer_dev.sh index 8ad74484..445ac9cc 100755 --- a/scripts/dev/env_writer_dev.sh +++ b/scripts/dev/env_writer_dev.sh @@ -12,7 +12,7 @@ init_env() { # Update APP_ENV sed -i -e "s/APP_ENV=.*/APP_ENV='development'/g" "$SCRIPT_DIR/.env" - + echo "ENV_PATH=$SCRIPT_DIR/.env" >> "$SCRIPT_DIR/.env" } if [[ ! -f "$SCRIPT_DIR/.env" ]]; then diff --git a/scripts/docker-compose-prod.yaml b/scripts/docker-compose-prod.yaml index a4e71dec..adf67efd 100644 --- a/scripts/docker-compose-prod.yaml +++ b/scripts/docker-compose-prod.yaml @@ -14,6 +14,8 @@ services: - "${DB_PORT}:${POSTGRES_PORT}" networks: - database_network + env_file: + - ${ENV_PATH} backend: container_name: "${BACKEND_CONTAINER_NAME}" @@ -24,18 +26,18 @@ services: DB_HOST: db DB_USER: ${POSTGRES_USER} DB_PASS: ${POSTGRES_PASSWORD} - env_file: - - ../.env ports: - "${BACKEND_HOSTPORT}:${BACKEND_PORT}" volumes: - ../backend:/backend - - ../.env:/backend/.env.dev + - ${ENV_PATH}:/backend/.env.dev command: reflex -r '\.go$' -s -- sh -c './supervisor.sh' tty: true networks: - database_network - frontend_network + env_file: + - ${ENV_PATH} depends_on: - db @@ -48,7 +50,7 @@ services: networks: - frontend_network env_file: - - ../.env + - ${ENV_PATH} volumes: - ../frontend:/app - /app/node_modules @@ -77,6 +79,8 @@ services: networks: - database_network - frontend_network + env_file: + - ${ENV_PATH} depends_on: - backend - frontend @@ -94,4 +98,3 @@ networks: driver: bridge frontend_network: driver: bridge -