Skip to content

Merge pull request #64 from Niolum/add/readme #49

Merge pull request #64 from Niolum/add/readme

Merge pull request #64 from Niolum/add/readme #49

Workflow file for this run

name: Continuous Integration and Delivery
on:
push:
branches:
- 'master'
env:
WEB_IMAGE: ghcr.io/$(echo $GITHUB_REPOSITORY | tr '[:upper:]' '[:lower:]')/web
NGINX_IMAGE: ghcr.io/$(echo $GITHUB_REPOSITORY | tr '[:upper:]' '[:lower:]')/nginx
jobs:
build:
name: Build Docker Images
runs-on: ubuntu-latest
steps:
- name: Checkout master
uses: actions/checkout@v1
- name: Add and set environment variables to .env
env:
SECRET_KEY: ${{secrets.SECRET_KEY}}
DEBUG: ${{secrets.DEBUG}}
ALLOWED_HOSTS: ${{secrets.ALLOWED_HOSTS}}
CACHEOPS_REDIS: ${{secrets.CACHEOPS_REDIS}}
DBUSER: ${{ secrets.DBUSER }}
DBPASS: ${{ secrets.DBPASS }}
DBNAME: ${{ secrets.DBNAME }}
DBHOST: ${{ secrets.DBHOST }}
DBPORT: ${{ secrets.DBPORT }}
POSTGRES_USER: ${{ secrets.POSTGRES_USER }}
POSTGRES_PASSWORD: ${{ secrets.POSTGRES_PASSWORD }}
POSTGRES_DB: ${{ secrets.POSTGRES_DB }}
run: |
echo "WEB_IMAGE=$(echo ${{ env.WEB_IMAGE }} )" >> $GITHUB_ENV
echo "NGINX_IMAGE=$(echo ${{ env.NGINX_IMAGE }} )" >> $GITHUB_ENV
- name: Log in to GitHub Pacheges
run: echo ${REGISTRY_TOKEN} | docker login ghcr.io -u ${{ secrets.NAMESPACE }} --password-stdin
env:
REGISTRY_TOKEN: ${{ secrets.REGISTRY_TOKEN }}
- name: Pull images
run: |
docker pull ${{ env.WEB_IMAGE }} || true
docker pull ${{ env.NGINX_IMAGE }} || true
- name: Build images
run: |
echo 'DEBUG=${{ secrets.DEBUG }}' > .env
echo 'SECRET_KEY=${{ secrets.SECRET_KEY }}' >> .env
echo 'ALLOWED_HOSTS=${{ secrets.ALLOWED_HOSTS }}' >> .env
echo 'CACHEOPS_REDIS=${{secrets.CACHEOPS_REDIS}}' >> .env
echo 'DBUSER=${{ secrets.DBUSER }}' >> ,env
echo 'DBPASS=${{ secrets.DBPASS }}' >> .env
echo 'DBNAME=${{ secrets.DBNAME }}' >> .env
echo 'DBHOST=${{ secrets.DBHOST }}' >> .env
echo 'DBPORT=${{ secrets.DBPORT }}' >> .env
echo 'POSTGRES_USER=${{ secrets.POSTGRES_USER }}' >> .env
echo 'POSTGRES_PASSWORD=${{ secrets.POSTGRES_PASSWORD }}' >> .env
echo 'POSTGRES_DB=${{ secrets.POSTGRES_DB }}' >> .env
docker-compose -f docker-compose.yml build
- name: Push images
run: |
docker push ${{ env.WEB_IMAGE }}
docker push ${{ env.NGINX_IMAGE }}
deploy:
name: Deploy to VPS
runs-on: ubuntu-latest
needs: build
steps:
- name: Checkout master
uses: actions/checkout@v1
- name: Add and set environment variables to .env
run: |
echo "WEB_IMAGE=${{ env.WEB_IMAGE }}" >> .env
echo "NGINX_IMAGE=${{ env.NGINX_IMAGE }}" >> .env
env:
SECRET_KEY: ${{secrets.SECRET_KEY}}
DEBUG: ${{secrets.DEBUG}}
ALLOWED_HOSTS: ${{secrets.ALLOWED_HOSTS}}
CACHEOPS_REDIS: ${{secrets.CACHEOPS_REDIS}}
DBUSER: ${{ secrets.DBUSER }}
DBPASS: ${{ secrets.DBPASS }}
DBNAME: ${{ secrets.DBNAME }}
DBHOST: ${{ secrets.DBHOST }}
DBPORT: ${{ secrets.DBPORT }}
POSTGRES_USER: ${{ secrets.POSTGRES_USER }}
POSTGRES_PASSWORD: ${{ secrets.POSTGRES_PASSWORD }}
POSTGRES_DB: ${{ secrets.POSTGRES_DB }}
- name: Copy repo
uses: appleboy/scp-action@master
with:
HOST: ${{ secrets.HOST }}
USERNAME: ${{ secrets.USERNAME }}
PORT: ${{ secrets.PORT }}
KEY: ${{ secrets.SSH_KEY }}
source: "."
target: "/var/blog"
- name: Executing remote command
uses: appleboy/ssh-action@master
env:
DEBUG: ${{ secrets.DEBUG }}
SECRET_KEY: ${{ secrets.SECRET_KEY }}
ALLOWED_HOSTS: ${{ secrets.ALLOWED_HOSTS }}
CACHEOPS_REDIS: ${{secrets.CACHEOPS_REDIS}}
DBUSER: ${{ secrets.DBUSER }}
DBPASS: ${{ secrets.DBPASS }}
DBNAME: ${{ secrets.DBNAME }}
DBHOST: ${{ secrets.DBHOST }}
DBPORT: ${{ secrets.DBPORT }}
POSTGRES_USER: ${{ secrets.POSTGRES_USER }}
POSTGRES_PASSWORD: ${{ secrets.POSTGRES_PASSWORD }}
POSTGRES_DB: ${{ secrets.POSTGRES_DB }}
with:
HOST: ${{ secrets.HOST }}
USERNAME: ${{ secrets.USERNAME }}
PORT: ${{ secrets.PORT }}
KEY: ${{ secrets.SSH_KEY }}
script: |
cd /var/blog
echo 'DEBUG=${{ secrets.DEBUG }}' > .env
echo 'SECRET_KEY=${{ secrets.SECRET_KEY }}' >> .env
echo 'ALLOWED_HOSTS=${{ secrets.ALLOWED_HOSTS }}' >> .env
echo 'CACHEOPS_REDIS=${{secrets.CACHEOPS_REDIS}}' >> .env
echo 'DBUSER=${{ secrets.DBUSER }}' >> .env
echo 'DBPASS=${{ secrets.DBPASS }}' >> .env
echo 'DBNAME=${{ secrets.DBNAME }}' >> .env
echo 'DBHOST=${{ secrets.DBHOST }}' >> .env
echo 'DBPORT=${{ secrets.DBPORT }}' >> .env
echo 'POSTGRES_USER=${{ secrets.POSTGRES_USER }}' >> .env
echo 'POSTGRES_PASSWORD=${{ secrets.POSTGRES_PASSWORD }}' >> .env
echo 'POSTGRES_DB=${{ secrets.POSTGRES_DB }}' >> .env
source .env
docker login ghcr.io -u ${{ secrets.NAMESPACE }} -p ${{ secrets.REGISTRY_TOKEN}}
docker pull $WEB_IMAGE
docker pull $NGINX_IMAGE
sudo docker compose -f docker-compose.yml up -d