Compare commits

..

1 Commits

Author SHA1 Message Date
bulut
55711a88ef trust proxies
Some checks failed
continuous-integration/drone/push Build is failing
2026-03-27 12:00:00 +03:00
7 changed files with 67 additions and 88 deletions

View File

@@ -1,15 +1,29 @@
kind: pipeline
type: docker
name: bogazici-api
name: default
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:
@@ -17,12 +31,11 @@ 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
port: 22
from_secret: server_ssh_key
script:
- cd /opt/projects/bogazici/corporate-api/test/api
- bash scripts/deploy-test.sh
@@ -34,12 +47,11 @@ 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
port: 22
from_secret: server_ssh_key
script:
- cd /opt/projects/bogazici/corporate-api/prod/api
- bash scripts/deploy-prod.sh

View File

@@ -31,7 +31,6 @@ 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;
@@ -40,8 +39,6 @@ class AppServiceProvider extends ServiceProvider
/**
* @var array<class-string, class-string>
*/
public array $bindings = [
CategoryRepositoryInterface::class => CategoryRepository::class,
CourseRepositoryInterface::class => CourseRepository::class,
@@ -71,8 +68,6 @@ class AppServiceProvider extends ServiceProvider
*/
public function boot(): void
{
URL::forceScheme('https');
Str::macro('turkishSlug', function (string $text, string $separator = '-'): string {
$map = [
'ç' => 'c',

View File

@@ -15,6 +15,8 @@ return Application::configure(basePath: dirname(__DIR__))
apiPrefix: 'api',
)
->withMiddleware(function (Middleware $middleware): void {
$middleware->trustProxies(at: '*');
$middleware->statefulApi();
$middleware->throttleApi('60,1');

View File

@@ -1,10 +1,9 @@
name: bogazici-api-prod
services:
bdc-api-prod:
build:
context: .
dockerfile: Dockerfile
container_name: bdc-api-prod
restart: unless-stopped
volumes:
- ./:/var/www/html

View File

@@ -1,10 +1,9 @@
name: bogazici-api-test
services:
bdc-api-test:
build:
context: .
dockerfile: Dockerfile
container_name: bdc-api-test
restart: unless-stopped
volumes:
- ./:/var/www/html

View File

@@ -6,19 +6,17 @@ 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"
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
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 fetch origin
git checkout "$BRANCH"
@@ -37,35 +35,23 @@ 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-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
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 image prune -f 2>/dev/null || true

View File

@@ -6,19 +6,17 @@ 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"
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
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 fetch origin
git checkout "$BRANCH"
@@ -37,35 +35,23 @@ if ! grep -q '^APP_KEY=base64:' .env; then
exit 1
fi
mkdir -p "$UPLOADS_DIR"
chmod 2775 "$UPLOADS_DIR" 2>/dev/null || true
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 rm -f bogazici-api-test-bdc-api-test-1 2>/dev/null || true
docker rm -f bdc-api-test 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 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
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 image prune -f 2>/dev/null || true