Skip to content
This repository has been archived by the owner on Mar 21, 2024. It is now read-only.

Merge pull request #156 from crimsonstrife/dev #64

Merge pull request #156 from crimsonstrife/dev

Merge pull request #156 from crimsonstrife/dev #64

Workflow file for this run

# @format
name: Build & Deploy
on:
push:
branches: [prod]
jobs:
deploy:
runs-on: ubuntu-latest
environment:
name: capstone-app
url: ${{ vars.APP_URL }}
steps:
- name: Set and Escape Env Variables
run: |
echo "APP_NAME=${{ vars.APP_NAME }}" >> $GITHUB_ENV
echo "APP_ENV=${{ vars.APP_ENV }}" >> $GITHUB_ENV
echo "APP_DEBUG=${{ vars.APP_DEBUG }}" >> $GITHUB_ENV
echo "APP_URL=${{ vars.APP_URL }}" >> $GITHUB_ENV
echo "COMPANY_NAME=${{ vars.COMPANY_NAME }}" >> $GITHUB_ENV
echo "COMPANY_URL=${{ vars.COMPANY_URL }}" >> $GITHUB_ENV
echo "CONTACT_EMAIL=${{ vars.CONTACT_EMAIL }}" >> $GITHUB_ENV
echo "DB_CONNECTION=${{ vars.DB_CONNECTION }}" >> $GITHUB_ENV
echo "DB_HOST=${{ secrets.DB_HOST }}" >> $GITHUB_ENV
echo "DB_PORT=${{ secrets.DB_PORT }}" >> $GITHUB_ENV
echo "DB_DATABASE=${{ secrets.DB_DATABASE }}" >> $GITHUB_ENV
echo "DB_USERNAME=${{ secrets.DB_USERNAME }}" >> $GITHUB_ENV
echo "DB_PASSWORD=${{ secrets.DB_PASSWORD }}" >> $GITHUB_ENV
echo "MAIL_MAILER=${{ vars.MAIL_MAILER }}" >> $GITHUB_ENV
echo "MAIL_HOST=${{ vars.MAIL_HOST }}" >> $GITHUB_ENV
echo "MAIL_PORT=${{ vars.MAIL_PORT }}" >> $GITHUB_ENV
echo "MAIL_AUTH_REQ=${{ vars.MAIL_AUTH_REQ }}" >> $GITHUB_ENV
echo "MAIL_ENCRYPTION=${{ vars.MAIL_ENCRYPTION }}" >> $GITHUB_ENV
echo "MAIL_FROM_ADDRESS=${{ vars.MAIL_FROM_ADDRESS }}" >> $GITHUB_ENV
echo "MAIL_FROM_NAME=${{ vars.MAIL_FROM_NAME }}" >> $GITHUB_ENV
echo "MAIL_USERNAME=${{ secrets.MAIL_USERNAME }}" >> $GITHUB_ENV
echo "MAIL_PASSWORD=${{ secrets.MAIL_PASSWORD }}" >> $GITHUB_ENV
echo "MAILER_PASSWORD_ENCRYPTION_KEY=${{ secrets.MAILER_PASSWORD_ENCRYPTION_KEY }}" >> $GITHUB_ENV
- name: Deploy TalentFlow
uses: appleboy/ssh-action@v1.0.3
with:
# Hostname or IP address of the server.
host: ${{secrets.SSH_HOST}}
# Username for authentication.
username: ${{secrets.SSH_USERNAME}}
# private key for either key-based or hostbased user authentication (OpenSSH format)
key: ${{secrets.SSH_KEY}}
# Command to execute on the remote server.
script: |
# Change to the domain directory
cd /var/www/capstone.hostedprojects.net
# Make the deployment folder
mkdir public
# Enter the folder
cd public
# Clone the repository
git clone git@github.com:crimsonstrife/rym2.git
# Enter the repo directory
cd rym2
# Update repo in the event it is already there
git fetch --all
# Backup Current Version
git branch backup-prod
# Jump to latest commit on origin/prod and checkout
git reset --hard origin/prod
# Clone Success Message
echo 'Deployment Complete'
- name: Pull LFS Files
uses: appleboy/ssh-action@v1.0.3
with:
# Hostname or IP address of the server.
host: ${{secrets.SSH_HOST}}
# Username for authentication.
username: ${{secrets.SSH_USERNAME}}
# private key for either key-based or hostbased user authentication (OpenSSH format)
key: ${{secrets.SSH_KEY}}
# Command to execute on the remote server.
script: |
# Enter the application directory
cd /var/www/capstone.hostedprojects.net/public/rym2
# Update repo
git fetch --all
# Initialize LFS (in case it isn't already)
git lfs install
# Pull current LFS files
git lfs fetch --all
# Checkout LFS Files
git lfs checkout
# Success Message
echo 'LFS Files Updated'
- name: Configure Environment
uses: appleboy/ssh-action@v1.0.3
env:
# set the environment variables from the $github_env
INPUT_APPNAME: ${{ env.APP_NAME }}
INPUT_APPENV: ${{ env.APP_ENV }}
INPUT_APPDEBUG: ${{ env.APP_DEBUG }}
INPUT_APPURL: ${{ env.APP_URL }}
INPUT_COMPANY: ${{ env.COMPANY_NAME }}
INPUT_COMPANYURL: ${{ env.COMPANY_URL }}
INPUT_CONTACT: ${{ env.CONTACT_EMAIL }}
INPUT_DBCONNECTION: ${{ env.DB_CONNECTION }}
INPUT_DBHOST: ${{ secrets.DB_HOST }}
INPUT_DBPORT: ${{ secrets.DB_PORT }}
INPUT_DBNAME: ${{ secrets.DB_DATABASE }}
INPUT_DBUSER: ${{ secrets.DB_USERNAME }}
INPUT_DBPASS: ${{ secrets.DB_PASSWORD }}
INPUT_MAIL_MAILER: ${{ env.MAIL_MAILER }}
INPUT_MAIL_HOST: ${{ env.MAIL_HOST }}
INPUT_MAIL_PORT: ${{ env.MAIL_PORT }}
INPUT_MAIL_AUTH_REQ: ${{ env.MAIL_AUTH_REQ }}
INPUT_MAIL_FROM_ADDRESS: ${{ env.MAIL_FROM_ADDRESS }}
INPUT_MAIL_FROM_NAME: ${{ env.MAIL_FROM_NAME }}
INPUT_MAIL_USERNAME: ${{ secrets.MAIL_USERNAME }}
INPUT_MAIL_PASSWORD: ${{ secrets.MAIL_PASSWORD }}
INPUT_MAIL_ENCRYPTION: ${{ env.MAIL_ENCRYPTION }}
INPUT_MAILER_PASSWORD_ENCRYPTION_KEY: ${{ secrets.MAILER_PASSWORD_ENCRYPTION_KEY }}
with:
# Hostname or IP address of the server.
host: ${{secrets.SSH_HOST}}
# Username for authentication.
username: ${{secrets.SSH_USERNAME}}
# private key for either key-based or hostbased user authentication (OpenSSH format)
key: ${{secrets.SSH_KEY}}
# Export all Env Vars
allenvs: true
# Command to execute on the remote server.
script: |
# Enter the application directory
cd /var/www/capstone.hostedprojects.net/public/rym2
# Copy the .env.example file to .env
cp .env.example .env
# Replace the .env file with the new values
sed -i "s/APP_NAME=.*$/APP_NAME=${{ env.INPUT_APPNAME}}/g" .env
sed -i "s/APP_ENV=.*$/APP_ENV=${{ env.INPUT_APPENV }}/g" .env
sed -i "s/APP_DEBUG=.*$/APP_DEBUG=${{ env.INPUT_APPDEBUG }}/g" .env
sed -i "s/APP_URL=.*$/APP_URL=${{ env.INPUT_APPURL }}/g" .env
sed -i "s/COMPANY_NAME=.*$/COMPANY_NAME=${{ env.INPUT_COMPANY }}/g" .env
sed -i "s/COMPANY_URL=.*$/COMPANY_URL=${{ env.INPUT_COMPANYURL }}/g" .env
sed -i "s/CONTACT_EMAIL=.*$/CONTACT_EMAIL=${{ env.INPUT_CONTACT }}/g" .env
sed -i "s/DB_CONNECTION=.*$/DB_CONNECTION=${{ env.INPUT_DBCONNECTION }}/g" .env
sed -i "s/DB_HOST=.*$/DB_HOST=${{ env.INPUT_DBHOST }}/g" .env
sed -i "s/DB_PORT=.*$/DB_PORT=${{ env.INPUT_DBPORT }}/g" .env
sed -i "s/DB_DATABASE=.*$/DB_DATABASE=${{ env.INPUT_DBNAME }}/g" .env
sed -i "s/DB_USERNAME=.*$/DB_USERNAME=${{ env.INPUT_DBUSER }}/g" .env
sed -i "s/DB_PASSWORD=.*$/DB_PASSWORD=${{ env.INPUT_DBPASS }}/g" .env
sed -i "s/MAIL_MAILER=.*$/MAIL_MAILER=${{ env.INPUT_MAIL_MAILER }}/g" .env
sed -i "s/MAIL_HOST=.*$/MAIL_HOST=${{ env.INPUT_MAIL_HOST }}/g" .env
sed -i "s/MAIL_PORT=.*$/MAIL_PORT=${{ env.INPUT_MAIL_PORT }}/g" .env
sed -i "s/MAIL_ENCRYPTION=.*$/MAIL_ENCRYPTION=${{ env.INPUT_MAIL_ENCRYPTION }}/g" .env
sed -i "s/MAIL_AUTH_REQ=.*$/MAIL_AUTH_REQ=${{ env.INPUT_MAIL_AUTH_REQ }}/g" .env
sed -i "s/MAIL_FROM_ADDRESS=.*$/MAIL_FROM_ADDRESS=${{ env.INPUT_MAIL_FROM_ADDRESS }}/g" .env
sed -i "s/MAIL_FROM_NAME=.*$/MAIL_FROM_NAME=${{ env.INPUT_MAIL_FROM_NAME }}/g" .env
sed -i "s/MAIL_USERNAME=.*$/MAIL_USERNAME=${{ env.INPUT_MAIL_USERNAME }}/g" .env
sed -i "s/MAIL_PASSWORD=.*$/MAIL_PASSWORD=${{ env.INPUT_MAIL_PASSWORD }}/g" .env
sed -i "s/MAILER_PASSWORD_ENCRYPTION_KEY=.*$/MAILER_PASSWORD_ENCRYPTION_KEY=${{ env.INPUT_MAILER_PASSWORD_ENCRYPTION_KEY }}/g" .env
# Success Message
echo 'Environment Configured'
- name: Install Composer Dependencies
uses: appleboy/ssh-action@v1.0.3
with:
# Hostname or IP address of the server.
host: ${{secrets.SSH_HOST}}
# Username for authentication.
username: ${{secrets.SSH_USERNAME}}
# private key for either key-based or hostbased user authentication (OpenSSH format)
key: ${{secrets.SSH_KEY}}
# Command to execute on the remote server.
script: |
# Enter the application directory
cd /var/www/capstone.hostedprojects.net/public/rym2
# Install Composer Dependencies
composer install
# Success Message
echo 'Composer Dependencies Installed'
- name: Install NPM Dependencies
uses: appleboy/ssh-action@v1.0.3
with:
# Hostname or IP address of the server.
host: ${{secrets.SSH_HOST}}
# Username for authentication.
username: ${{secrets.SSH_USERNAME}}
# private key for either key-based or hostbased user authentication (OpenSSH format)
key: ${{secrets.SSH_KEY}}
# Command to execute on the remote server.
script: |
# Enter the application directory
cd /var/www/capstone.hostedprojects.net/public/rym2
# Install NPM Dependencies
npm install
# Success Message
echo 'NPM Dependencies Installed'
- name: Update Dependencies
uses: appleboy/ssh-action@v1.0.3
with:
# Hostname or IP address of the server.
host: ${{secrets.SSH_HOST}}
# Username for authentication.
username: ${{secrets.SSH_USERNAME}}
# private key for either key-based or hostbased user authentication (OpenSSH format)
key: ${{secrets.SSH_KEY}}
# Command to execute on the remote server.
script: |
# Enter the application directory
cd /var/www/capstone.hostedprojects.net/public/rym2
# Update Dependencies
composer update
# Success Message
echo 'Dependencies Updated'