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
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# @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' |