Skip to content

Commit

Permalink
Updated deploy script
Browse files Browse the repository at this point in the history
  • Loading branch information
blt950 committed May 19, 2022
1 parent 0e2465f commit ce2ed53
Show file tree
Hide file tree
Showing 5 changed files with 155 additions and 56 deletions.
92 changes: 92 additions & 0 deletions .docker/deploy.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
# ! /bin/sh
# deploy.sh
#
# = = = = = = = = = = = = = = = = = = = = = = = = = = = =
# Easy deploy script for deploying inside docker container
# = = = = = = = = = = = = = = = = = = = = = = = = = = = =
#

ENV=$1

# Run the supported PHP versions or work backwards to the one we find. Useful in environments with more versions installed
function run_php () {
if [ -e "/usr/bin/php8.1" ]; then
/usr/bin/php8.1 $@
elif [ -e "/usr/local/bin/php8.1" ]; then
/usr/local/bin/php8.0 $@
elif [ -e "/usr/bin/php8.0" ]; then
/usr/bin/php8.1 $@
elif [ -e "/usr/local/bin/php8.0" ]; then
/usr/local/bin/php8.0 $@
else
php $@
fi
}

# Print out the version for reference in console
run_php -v

# Turn maintenance mode on, unless it's the initial run
if [ "$ENV" != "init" ]; then
run_php artisan down --render="errors.maintenance"
fi

# Pull latest updates from Git
git pull origin master

# Install dependecies
if [ "$ENV" = "dev" ]; then
run_php /usr/local/bin/composer install
else
run_php /usr/local/bin/composer install -q --no-dev --no-ansi --no-interaction --no-scripts --no-suggest --no-progress --prefer-dist
fi

run_php /usr/local/bin/composer dump-autoload

if [ "$ENV" = "dev" ]; then
# Install all dependecies
npm install
else
#Install without dev dependecies
npm ci --production
fi

# Adjust directory permissions
chmod -R 777 storage bootstrap/cache

# Artisan magic
run_php artisan migrate

# Clear All Cache
run_php artisan optimize:clear

if [ "$ENV" = "dev" ]; then

# Create front-end assets
npm run dev

elif [ "$ENV" = "init" ]; then

# Generate PHP key
run_php artisan key:generate

# Init Passport
php artisan passport:install
php artisan passport:keys

# Create front-end assets
npm run dev

else

# Create front-end assets
npm run prod

fi

# Turn maintenance mode off
if [ "$ENV" != "init" ]; then
run_php artisan up
fi


75 changes: 19 additions & 56 deletions deploy.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,64 +2,27 @@
# deploy.sh
#
# = = = = = = = = = = = = = = = = = = = = = = = = = = = =
# Easy deploy script for manual deployment
# Run deployment inside the docker container
# = = = = = = = = = = = = = = = = = = = = = = = = = = = =
#

COMMAND=$1

# Turn maintenance mode on
php artisan down

# Pull latest from Git
git pull

# Create env if it doesn't work
php -r "file_exists('.env') || copy('.env.example', '.env');"

# Install dependecies
composer install -q --no-ansi --no-interaction --no-scripts --no-suggest --no-progress --prefer-dist
composer dump-autoload

if [ "$COMMAND" = "dev" ]; then
# Install all dependecies
npm install
else
#Install without dev dependecies
npm ci --production
fi

# Adjust directory permissions
chmod -R 777 storage bootstrap/cache

# Artisan magic
php artisan migrate
php artisan cache:clear
php artisan config:clear
php artisan view:cache

if [ "$COMMAND" = "dev" ]; then

# Create front-end assets
npm run dev

elif [ "$COMMAND" = "init" ]; then

# Generate PHP key
php artisan key:generate

# Init Passport
php artisan passport:install
php artisan passport:keys
ENV=$1
CONTAINER=$2

# Check if we have a docker file
if [ -z "$ENV" ]
then
# Don't allow not specifying environment
echo "Missing environment argument. Usage: ./deploy.sh <init/dev/prod> <container name>"
exit 0
else

# Create front-end assets
npm run prod

fi

# Turn maintenance mode off
php artisan up

# Don't allow not specificing container to avoid running in wrong environment
if [ -z "$CONTAINER" ]
then
echo "Missing container name argument. Usage: ./deploy.sh <init/dev/prod> <container name>"
exit 0
else
echo "Running deployment into $ENV and '$CONTAINER' container..."
docker exec -it $CONTAINER bash .docker/deploy.sh $ENV
fi
fi
5 changes: 5 additions & 0 deletions resources/views/errors/maintenance.blade.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
@extends('errors::minimal')

@section('title', __('Service Unavailable'))
@section('code', '503')
@section('message', __('We will be back shortly. Updating.'))
38 changes: 38 additions & 0 deletions resources/views/errors/minimal.blade.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">

<title>@yield('title')</title>

<!-- Fonts -->
<link rel="preconnect" href="https://fonts.gstatic.com">
<link href="https://fonts.googleapis.com/css2?family=Nunito&display=swap" rel="stylesheet">

<style>
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}a{background-color:transparent}code{font-family:monospace,monospace;font-size:1em}[hidden]{display:none}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{box-sizing:border-box;border:0 solid #e2e8f0}a{color:inherit;text-decoration:inherit}code{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}svg,video{display:block;vertical-align:middle}video{max-width:100%;height:auto}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f7fafc;background-color:rgba(247,250,252,var(--bg-opacity))}.border-gray-200{--border-opacity:1;border-color:#edf2f7;border-color:rgba(237,242,247,var(--border-opacity))}.border-gray-400{--border-opacity:1;border-color:#cbd5e0;border-color:rgba(203,213,224,var(--border-opacity))}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.flex{display:flex}.grid{display:grid}.hidden{display:none}.items-center{align-items:center}.justify-center{justify-content:center}.font-semibold{font-weight:600}.h-5{height:1.25rem}.h-8{height:2rem}.h-16{height:4rem}.text-sm{font-size:.875rem}.text-lg{font-size:1.125rem}.leading-7{line-height:1.75rem}.mx-auto{margin-left:auto;margin-right:auto}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.ml-2{margin-left:.5rem}.mt-4{margin-top:1rem}.ml-4{margin-left:1rem}.mt-8{margin-top:2rem}.ml-12{margin-left:3rem}.-mt-px{margin-top:-1px}.max-w-xl{max-width:36rem}.max-w-6xl{max-width:72rem}.min-h-screen{min-height:100vh}.overflow-hidden{overflow:hidden}.p-6{padding:1.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.pt-8{padding-top:2rem}.fixed{position:fixed}.relative{position:relative}.top-0{top:0}.right-0{right:0}.shadow{box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.text-center{text-align:center}.text-gray-200{--text-opacity:1;color:#edf2f7;color:rgba(237,242,247,var(--text-opacity))}.text-gray-300{--text-opacity:1;color:#e2e8f0;color:rgba(226,232,240,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#a0aec0;color:rgba(160,174,192,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#718096;color:rgba(113,128,150,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#4a5568;color:rgba(74,85,104,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#1a202c;color:rgba(26,32,44,var(--text-opacity))}.uppercase{text-transform:uppercase}.underline{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tracking-wider{letter-spacing:.05em}.w-5{width:1.25rem}.w-8{width:2rem}.w-auto{width:auto}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}@-webkit-keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@-webkit-keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@-webkit-keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@-webkit-keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@media (min-width:640px){.sm\:rounded-lg{border-radius:.5rem}.sm\:block{display:block}.sm\:items-center{align-items:center}.sm\:justify-start{justify-content:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:h-20{height:5rem}.sm\:ml-0{margin-left:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pt-0{padding-top:0}.sm\:text-left{text-align:left}.sm\:text-right{text-align:right}}@media (min-width:768px){.md\:border-t-0{border-top-width:0}.md\:border-l{border-left-width:1px}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.lg\:px-8{padding-left:2rem;padding-right:2rem}}@media (prefers-color-scheme:dark){.dark\:bg-gray-800{--bg-opacity:1;background-color:#2d3748;background-color:rgba(45,55,72,var(--bg-opacity))}.dark\:bg-gray-900{--bg-opacity:1;background-color:#1a202c;background-color:rgba(26,32,44,var(--bg-opacity))}.dark\:border-gray-700{--border-opacity:1;border-color:#4a5568;border-color:rgba(74,85,104,var(--border-opacity))}.dark\:text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.dark\:text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}}
</style>

<style>
body {
font-family: 'Nunito', sans-serif;
}
</style>
</head>
<body class="antialiased">
<div class="relative flex items-top justify-center min-h-screen bg-gray-100 dark:bg-gray-900 sm:items-center sm:pt-0">
<div class="max-w-xl mx-auto sm:px-6 lg:px-8">
<div class="flex items-center pt-8 sm:justify-start sm:pt-0">
<div class="px-4 text-lg text-gray-500 border-r border-gray-400 tracking-wider">
@yield('code')
</div>

<div class="ml-4 text-lg text-gray-500 uppercase tracking-wider">
@yield('message')
</div>
</div>
</div>
</div>
</body>
</html>
1 change: 1 addition & 0 deletions storage/framework/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,4 @@ services.json
events.scanned.php
routes.scanned.php
down
maintenance.php

0 comments on commit ce2ed53

Please sign in to comment.