Compare commits
14 Commits
29c0894d1d
...
develop
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
acd3298c61 | ||
|
|
733607493a | ||
|
|
8bd35c425d | ||
|
|
5ad61853b4 | ||
|
|
272010d738 | ||
|
|
9e88de9902 | ||
|
|
fa14e752ac | ||
|
|
fea885f6cf | ||
|
|
268bf371df | ||
|
|
e51d6b0cb0 | ||
|
|
cb5c24648d | ||
|
|
f008e2d9d1 | ||
|
|
b25c5d2cfb | ||
|
|
79d0b2e54f |
34
.drone.yml
34
.drone.yml
@@ -1,29 +1,15 @@
|
||||
kind: pipeline
|
||||
type: docker
|
||||
name: default
|
||||
name: bogazici-api
|
||||
|
||||
trigger:
|
||||
event:
|
||||
- push
|
||||
branch:
|
||||
- develop
|
||||
- test
|
||||
- main
|
||||
|
||||
steps:
|
||||
- name: laravel-check
|
||||
image: php:8.4-cli
|
||||
when:
|
||||
branch:
|
||||
- develop
|
||||
commands:
|
||||
- apt-get update && apt-get install -y git unzip curl libzip-dev default-mysql-client
|
||||
- docker-php-ext-install pdo_mysql zip
|
||||
- curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
|
||||
- cp .env.example .env || true
|
||||
- composer install --no-interaction --prefer-dist --optimize-autoloader
|
||||
- php artisan key:generate --force || true
|
||||
- php artisan config:clear || true
|
||||
- php artisan test || true
|
||||
|
||||
- name: deploy-test
|
||||
image: appleboy/drone-ssh
|
||||
when:
|
||||
@@ -31,11 +17,12 @@ steps:
|
||||
- test
|
||||
settings:
|
||||
host:
|
||||
from_secret: server_host
|
||||
from_secret: SERVER_HOST
|
||||
username:
|
||||
from_secret: server_user
|
||||
from_secret: SERVER_USER
|
||||
key:
|
||||
from_secret: server_ssh_key
|
||||
from_secret: SERVER_SSH_KEY
|
||||
port: 22
|
||||
script:
|
||||
- cd /opt/projects/bogazici/corporate-api/test/api
|
||||
- bash scripts/deploy-test.sh
|
||||
@@ -47,11 +34,12 @@ steps:
|
||||
- main
|
||||
settings:
|
||||
host:
|
||||
from_secret: server_host
|
||||
from_secret: SERVER_HOST
|
||||
username:
|
||||
from_secret: server_user
|
||||
from_secret: SERVER_USER
|
||||
key:
|
||||
from_secret: server_ssh_key
|
||||
from_secret: SERVER_SSH_KEY
|
||||
port: 22
|
||||
script:
|
||||
- cd /opt/projects/bogazici/corporate-api/prod/api
|
||||
- bash scripts/deploy-prod.sh
|
||||
|
||||
@@ -31,6 +31,7 @@ use App\Repositories\Eloquent\UserRepository;
|
||||
use Illuminate\Cache\RateLimiting\Limit;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\RateLimiter;
|
||||
use Illuminate\Support\Facades\URL;
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
@@ -39,6 +40,8 @@ class AppServiceProvider extends ServiceProvider
|
||||
/**
|
||||
* @var array<class-string, class-string>
|
||||
*/
|
||||
|
||||
|
||||
public array $bindings = [
|
||||
CategoryRepositoryInterface::class => CategoryRepository::class,
|
||||
CourseRepositoryInterface::class => CourseRepository::class,
|
||||
@@ -68,6 +71,8 @@ class AppServiceProvider extends ServiceProvider
|
||||
*/
|
||||
public function boot(): void
|
||||
{
|
||||
URL::forceScheme('https');
|
||||
|
||||
Str::macro('turkishSlug', function (string $text, string $separator = '-'): string {
|
||||
$map = [
|
||||
'ç' => 'c',
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
name: bogazici-api-prod
|
||||
|
||||
services:
|
||||
bdc-api-prod:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
container_name: bdc-api-prod
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ./:/var/www/html
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
name: bogazici-api-test
|
||||
|
||||
services:
|
||||
bdc-api-test:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
container_name: bdc-api-test
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ./:/var/www/html
|
||||
|
||||
@@ -6,17 +6,19 @@ ENV_SOURCE="/opt/projects/bogazici/corporate-api/prod/.env.prod"
|
||||
BRANCH="main"
|
||||
CONTAINER="bdc-api-prod"
|
||||
COMPOSE_FILE="docker-compose.prod.yml"
|
||||
COMPOSE_PROJECT="bogazici-api-prod"
|
||||
UPLOADS_DIR="/opt/projects/bogazici/corporate-api/prod/uploads"
|
||||
|
||||
echo "🚀 [API] Production deploy başlatılıyor..."
|
||||
|
||||
cd "$PROJECT_DIR"
|
||||
|
||||
sudo chown -R "$USER":www-data storage bootstrap/cache 2>/dev/null || true
|
||||
sudo find storage -type d -exec chmod 2775 {} \; 2>/dev/null || true
|
||||
sudo find storage -type f -exec chmod 664 {} \; 2>/dev/null || true
|
||||
sudo find bootstrap/cache -type d -exec chmod 2775 {} \; 2>/dev/null || true
|
||||
sudo find bootstrap/cache -type f -exec chmod 664 {} \; 2>/dev/null || true
|
||||
git config --global --add safe.directory "$PROJECT_DIR" || true
|
||||
|
||||
find storage -type d -exec chmod 2775 {} \; 2>/dev/null || true
|
||||
find storage -type f -exec chmod 664 {} \; 2>/dev/null || true
|
||||
find bootstrap/cache -type d -exec chmod 2775 {} \; 2>/dev/null || true
|
||||
find bootstrap/cache -type f -exec chmod 664 {} \; 2>/dev/null || true
|
||||
|
||||
git fetch origin
|
||||
git checkout "$BRANCH"
|
||||
@@ -35,23 +37,35 @@ if ! grep -q '^APP_KEY=base64:' .env; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
sudo mkdir -p "$UPLOADS_DIR"/{images,videos,hero-slides,settings,pages,courses,announcements,categories}
|
||||
sudo chown -R "$USER":www-data "$UPLOADS_DIR" 2>/dev/null || true
|
||||
sudo find "$UPLOADS_DIR" -type d -exec chmod 2775 {} \; 2>/dev/null || true
|
||||
sudo find "$UPLOADS_DIR" -type f -exec chmod 664 {} \; 2>/dev/null || true
|
||||
|
||||
docker stop "$CONTAINER" 2>/dev/null || true
|
||||
docker rm "$CONTAINER" 2>/dev/null || true
|
||||
docker compose -f "$COMPOSE_FILE" down --remove-orphans 2>/dev/null || true
|
||||
docker compose -f "$COMPOSE_FILE" up -d --build
|
||||
mkdir -p "$UPLOADS_DIR"
|
||||
chmod 2775 "$UPLOADS_DIR" 2>/dev/null || true
|
||||
|
||||
sleep 3
|
||||
docker compose -f "$COMPOSE_FILE" exec -T "$CONTAINER" composer install --no-interaction --prefer-dist --optimize-autoloader --no-dev || true
|
||||
docker compose -f "$COMPOSE_FILE" exec -T "$CONTAINER" php artisan migrate --force || true
|
||||
docker compose -f "$COMPOSE_FILE" exec -T "$CONTAINER" php artisan optimize:clear || true
|
||||
docker compose -f "$COMPOSE_FILE" exec -T "$CONTAINER" php artisan config:cache || true
|
||||
docker compose -f "$COMPOSE_FILE" exec -T "$CONTAINER" php artisan route:cache || true
|
||||
docker compose -f "$COMPOSE_FILE" exec -T "$CONTAINER" php artisan view:cache || true
|
||||
docker rm -f bogazici-api-prod-bdc-api-prod-1 2>/dev/null || true
|
||||
docker rm -f bdc-api-prod 2>/dev/null || true
|
||||
|
||||
docker compose -p "$COMPOSE_PROJECT" -f "$COMPOSE_FILE" down --remove-orphans || true
|
||||
docker compose -p "$COMPOSE_PROJECT" -f "$COMPOSE_FILE" up -d --build
|
||||
|
||||
echo "⏳ Container hazır olması bekleniyor..."
|
||||
for i in {1..30}; do
|
||||
if docker compose -p "$COMPOSE_PROJECT" -f "$COMPOSE_FILE" ps --status running | grep -q "$CONTAINER"; then
|
||||
echo "✅ Container ayakta"
|
||||
break
|
||||
fi
|
||||
if [ "$i" -eq 30 ]; then
|
||||
echo "❌ HATA: Container zamanında ayağa kalkmadı"
|
||||
docker compose -p "$COMPOSE_PROJECT" -f "$COMPOSE_FILE" logs --tail=100
|
||||
exit 1
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
|
||||
docker compose -p "$COMPOSE_PROJECT" -f "$COMPOSE_FILE" exec -T "$CONTAINER" composer install --no-interaction --prefer-dist --optimize-autoloader --no-dev
|
||||
docker compose -p "$COMPOSE_PROJECT" -f "$COMPOSE_FILE" exec -T "$CONTAINER" php artisan optimize:clear
|
||||
docker compose -p "$COMPOSE_PROJECT" -f "$COMPOSE_FILE" exec -T "$CONTAINER" php artisan config:cache
|
||||
docker compose -p "$COMPOSE_PROJECT" -f "$COMPOSE_FILE" exec -T "$CONTAINER" php artisan route:cache
|
||||
docker compose -p "$COMPOSE_PROJECT" -f "$COMPOSE_FILE" exec -T "$CONTAINER" php artisan view:cache
|
||||
|
||||
docker image prune -f 2>/dev/null || true
|
||||
|
||||
|
||||
@@ -6,17 +6,19 @@ ENV_SOURCE="/opt/projects/bogazici/corporate-api/test/.env.test"
|
||||
BRANCH="test"
|
||||
CONTAINER="bdc-api-test"
|
||||
COMPOSE_FILE="docker-compose.test.yml"
|
||||
COMPOSE_PROJECT="bogazici-api-test"
|
||||
UPLOADS_DIR="/opt/projects/bogazici/corporate-api/test/uploads"
|
||||
|
||||
echo "🚀 [API] Test deploy başlatılıyor..."
|
||||
|
||||
cd "$PROJECT_DIR"
|
||||
|
||||
sudo chown -R "$USER":www-data storage bootstrap/cache 2>/dev/null || true
|
||||
sudo find storage -type d -exec chmod 2775 {} \; 2>/dev/null || true
|
||||
sudo find storage -type f -exec chmod 664 {} \; 2>/dev/null || true
|
||||
sudo find bootstrap/cache -type d -exec chmod 2775 {} \; 2>/dev/null || true
|
||||
sudo find bootstrap/cache -type f -exec chmod 664 {} \; 2>/dev/null || true
|
||||
git config --global --add safe.directory "$PROJECT_DIR" || true
|
||||
|
||||
find storage -type d -exec chmod 2775 {} \; 2>/dev/null || true
|
||||
find storage -type f -exec chmod 664 {} \; 2>/dev/null || true
|
||||
find bootstrap/cache -type d -exec chmod 2775 {} \; 2>/dev/null || true
|
||||
find bootstrap/cache -type f -exec chmod 664 {} \; 2>/dev/null || true
|
||||
|
||||
git fetch origin
|
||||
git checkout "$BRANCH"
|
||||
@@ -35,23 +37,35 @@ if ! grep -q '^APP_KEY=base64:' .env; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
sudo mkdir -p "$UPLOADS_DIR"/{images,videos,hero-slides,settings,pages,courses,announcements,categories}
|
||||
sudo chown -R "$USER":www-data "$UPLOADS_DIR" 2>/dev/null || true
|
||||
sudo find "$UPLOADS_DIR" -type d -exec chmod 2775 {} \; 2>/dev/null || true
|
||||
sudo find "$UPLOADS_DIR" -type f -exec chmod 664 {} \; 2>/dev/null || true
|
||||
mkdir -p "$UPLOADS_DIR"
|
||||
chmod 2775 "$UPLOADS_DIR" 2>/dev/null || true
|
||||
|
||||
docker stop "$CONTAINER" 2>/dev/null || true
|
||||
docker rm "$CONTAINER" 2>/dev/null || true
|
||||
docker compose -f "$COMPOSE_FILE" down --remove-orphans 2>/dev/null || true
|
||||
docker compose -f "$COMPOSE_FILE" up -d --build
|
||||
docker rm -f bogazici-api-test-bdc-api-test-1 2>/dev/null || true
|
||||
docker rm -f bdc-api-test 2>/dev/null || true
|
||||
|
||||
sleep 3
|
||||
docker compose -f "$COMPOSE_FILE" exec -T "$CONTAINER" composer install --no-interaction --prefer-dist --optimize-autoloader || true
|
||||
docker compose -f "$COMPOSE_FILE" exec -T "$CONTAINER" php artisan migrate --force || true
|
||||
docker compose -f "$COMPOSE_FILE" exec -T "$CONTAINER" php artisan optimize:clear || true
|
||||
docker compose -f "$COMPOSE_FILE" exec -T "$CONTAINER" php artisan config:cache || true
|
||||
docker compose -f "$COMPOSE_FILE" exec -T "$CONTAINER" php artisan route:cache || true
|
||||
docker compose -f "$COMPOSE_FILE" exec -T "$CONTAINER" php artisan view:cache || true
|
||||
docker compose -p "$COMPOSE_PROJECT" -f "$COMPOSE_FILE" down --remove-orphans || true
|
||||
docker compose -p "$COMPOSE_PROJECT" -f "$COMPOSE_FILE" up -d --build
|
||||
|
||||
|
||||
echo "⏳ Container hazır olması bekleniyor..."
|
||||
for i in {1..30}; do
|
||||
if docker compose -p "$COMPOSE_PROJECT" -f "$COMPOSE_FILE" ps --status running | grep -q "$CONTAINER"; then
|
||||
echo "✅ Container ayakta"
|
||||
break
|
||||
fi
|
||||
if [ "$i" -eq 30 ]; then
|
||||
echo "❌ HATA: Container zamanında ayağa kalkmadı"
|
||||
docker compose -p "$COMPOSE_PROJECT" -f "$COMPOSE_FILE" logs --tail=100
|
||||
exit 1
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
|
||||
docker compose -p "$COMPOSE_PROJECT" -f "$COMPOSE_FILE" exec -T "$CONTAINER" composer install --no-interaction --prefer-dist --optimize-autoloader
|
||||
docker compose -p "$COMPOSE_PROJECT" -f "$COMPOSE_FILE" exec -T "$CONTAINER" php artisan optimize:clear
|
||||
docker compose -p "$COMPOSE_PROJECT" -f "$COMPOSE_FILE" exec -T "$CONTAINER" php artisan config:cache
|
||||
docker compose -p "$COMPOSE_PROJECT" -f "$COMPOSE_FILE" exec -T "$CONTAINER" php artisan route:cache
|
||||
docker compose -p "$COMPOSE_PROJECT" -f "$COMPOSE_FILE" exec -T "$CONTAINER" php artisan view:cache
|
||||
|
||||
docker image prune -f 2>/dev/null || true
|
||||
|
||||
|
||||
Reference in New Issue
Block a user