Skip to content

Fix appending env vars to prod env-file #21

Fix appending env vars to prod env-file

Fix appending env vars to prod env-file #21

Workflow file for this run

name: Deploy Docker
on:
push:
branches:
- feat/build-on-push
jobs:
deploy:
runs-on: self-hosted
environment:
name: production
url: 'https://${{ vars.SERVER_HOST }}'
steps:
- name: SSH to VM and Execute Docker-Compose Down
uses: appleboy/ssh-action@master
with:
host: ${{ vars.VM_HOST }}
username: ${{ vars.VM_USERNAME }}
key: ${{ secrets.VM_SSH_PRIVATE_KEY }}
proxy_host: ${{ vars.DEPLOYMENT_GATEWAY_HOST }}
proxy_username: ${{ vars.DEPLOYMENT_GATEWAY_USER }}
proxy_key: ${{ secrets.DEPLOYMENT_GATEWAY_SSH_KEY }}
proxy_port: ${{ vars.DEPLOYMENT_GATEWAY_PORT }}
script: |
docker compose -f docker-compose.prod.yml --env-file=.env.prod down --remove-orphans
- name: checkout
uses: actions/checkout@v4
- name: Copy Docker Compose File From Repo to VM Host
uses: appleboy/[email protected]
with:
host: ${{ vars.VM_HOST }}
username: ${{ vars.VM_USERNAME }}
key: ${{ secrets.VM_SSH_PRIVATE_KEY }}
proxy_host: ${{ vars.DEPLOYMENT_GATEWAY_HOST }}
proxy_username: ${{ vars.DEPLOYMENT_GATEWAY_USER }}
proxy_key: ${{ secrets.DEPLOYMENT_GATEWAY_SSH_KEY }}
proxy_port: ${{ vars.DEPLOYMENT_GATEWAY_PORT }}
source: "./docker-compose.prod.yml"
target: /home/${{ vars.VM_USERNAME }}
- name: SSH to VM and create .env.prod file
uses: appleboy/ssh-action@master
with:
host: ${{ vars.VM_HOST }}
username: ${{ vars.VM_USERNAME }}
key: ${{ secrets.VM_SSH_PRIVATE_KEY }}
proxy_host: ${{ vars.DEPLOYMENT_GATEWAY_HOST }}
proxy_username: ${{ vars.DEPLOYMENT_GATEWAY_USER }}
proxy_key: ${{ secrets.DEPLOYMENT_GATEWAY_SSH_KEY }}
proxy_port: ${{ vars.DEPLOYMENT_GATEWAY_PORT }}
script: |
rm -f .env.prod # Delete if exists
touch .env.prod
echo "INFLUXDB_TOKEN=\"${{ secrets.INFLUXDB_TOKEN }}\"" >> .env.prod
echo "INFLUXDB_ORG=${{ vars.INFLUXDB_ORG }}" >> .env.prod
echo "INFLUXDB_BUCKET=${{ vars.INFLUXDB_BUCKET }}" >> .env.prod
echo "DOCKER_INFLUXDB_INIT_USERNAME=${{ vars.DOCKER_INFLUXDB_INIT_USERNAME }}" >> .env.prod
echo "DOCKER_INFLUXDB_INIT_PASSWORD=\"${{ secrets.DOCKER_INFLUXDB_INIT_PASSWORD }}\"" >> .env.prod
echo "REPOSITORY_OWNER=${{ vars.REPOSITORY_OWNER }}" >> .env.prod
echo "REPOSITORY_NAME=${{ vars.REPOSITORY_NAME }}" >> .env.prod
echo "GITHUB_TOKEN=${{ secrets.GH_PULL_TOKEN }}" >> .env.prod
- name: Copy Caddyfile
uses: appleboy/[email protected]
with:
host: ${{ vars.VM_HOST }}
username: ${{ vars.VM_USERNAME }}
key: ${{ secrets.VM_SSH_PRIVATE_KEY }}
proxy_host: ${{ vars.DEPLOYMENT_GATEWAY_HOST }}
proxy_username: ${{ vars.DEPLOYMENT_GATEWAY_USER }}
proxy_key: ${{ secrets.DEPLOYMENT_GATEWAY_SSH_KEY }}
proxy_port: ${{ vars.DEPLOYMENT_GATEWAY_PORT }}
source: "./Caddyfile"
target: /home/${{ vars.VM_USERNAME }}
- name: SSH to VM and Execute Docker-Compose Up
uses: appleboy/ssh-action@master
with:
host: ${{ vars.VM_HOST }}
username: ${{ vars.VM_USERNAME }}
key: ${{ secrets.VM_SSH_PRIVATE_KEY }}
proxy_host: ${{ vars.DEPLOYMENT_GATEWAY_HOST }}
proxy_username: ${{ vars.DEPLOYMENT_GATEWAY_USER }}
proxy_key: ${{ secrets.DEPLOYMENT_GATEWAY_SSH_KEY }}
proxy_port: ${{ vars.DEPLOYMENT_GATEWAY_PORT }}
script: |
docker compose -f docker-compose.prod.yml --env-file=.env.prod up --pull=always -d