From 6e2d0739efdc483b0dc37fddbde5072b79c3bfb5 Mon Sep 17 00:00:00 2001 From: Constantin Graf Date: Thu, 11 Apr 2024 13:00:09 +0200 Subject: [PATCH] Added private build --- .env.production | 13 +++++ .github/workflows/build-private.yml | 81 +++++++++++++++++++++++++++++ .github/workflows/build-public.yml | 8 +-- .gitignore | 1 - config/app.php | 3 +- docker/prod/Dockerfile | 2 + 6 files changed, 102 insertions(+), 6 deletions(-) create mode 100644 .env.production create mode 100644 .github/workflows/build-private.yml diff --git a/.env.production b/.env.production new file mode 100644 index 00000000..fcab6160 --- /dev/null +++ b/.env.production @@ -0,0 +1,13 @@ +APP_NAME=solidtime +APP_ENV=production +APP_DEBUG=false +APP_FORCE_HTTPS=true +SESSION_SECURE_COOKIE=true + +LOG_CHANNEL=stack +LOG_DEPRECATIONS_CHANNEL=null +LOG_LEVEL=debug + +DB_CONNECTION=pgsql + +OCTANE_SERVER=swoole diff --git a/.github/workflows/build-private.yml b/.github/workflows/build-private.yml new file mode 100644 index 00000000..985b7a23 --- /dev/null +++ b/.github/workflows/build-private.yml @@ -0,0 +1,81 @@ +on: + push: + +name: Build - Private +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: "Check out code" + uses: actions/checkout@v4 + + - name: "Copy .env template for production" + run: cp .env.production .env && cat .env + + - name: "Checkout billing extension" + uses: actions/checkout@v4 + with: + repository: solidtime-io/extension-billing + path: extensions/Billing + ssh-key: ${{ secrets.SSH_PRIVATE_KEY_BILLING_EXTENSION }} + + - name: "Install dependencies in billing extension" + uses: php-actions/composer@v6 + env: + COMPOSER_AUTH: '{"http-basic": {"spark.laravel.com": {"username": "gregor@vostrak.at", "password": "${{ secrets.LARAVEL_SPARK_API_KEY }}"}}}' + with: + working_dir: "extensions/Billing" + command: install + only_args: --no-dev --no-ansi --no-interaction --prefer-dist --ignore-platform-reqs --classmap-authoritative + php_version: 8.3 + + - name: "Install dependencies" + uses: php-actions/composer@v6 + if: steps.cache-vendor.outputs.cache-hit != 'true' # Skip if cache hit + with: + command: install + only_args: --no-dev --no-ansi --no-interaction --prefer-dist --ignore-platform-reqs --classmap-authoritative + php_version: 8.3 + + - name: "Use Node.js" + uses: actions/setup-node@v4 + with: + node-version: '20.x' + + - name: "Install npm dependencies" + run: npm ci + + - name: "Build" + run: npm run build + + - name: "Login to GitHub Container Registry" + uses: docker/login-action@v3 + with: + registry: rg.fr-par.scw.cloud/solidtime + username: nologin + password: ${{ secrets.SCALEWAY_REGISTRY_TOKEN }} + + - name: "Docker meta" + id: "meta" + uses: docker/metadata-action@v5 + with: + images: rg.fr-par.scw.cloud/solidtime/solidtime + tags: | + type=ref,event=branch + type=ref,event=pr + type=semver,pattern={{version}} + type=semver,pattern={{major}}.{{minor}} + + - name: "Set up Docker Buildx" + uses: docker/setup-buildx-action@v3 + + - name: "Build and push" + uses: docker/build-push-action@v5 + with: + context: . + file: docker/prod/Dockerfile + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + cache-from: type=gha + cache-to: type=gha,mode=max diff --git a/.github/workflows/build-public.yml b/.github/workflows/build-public.yml index e519fe74..b1dedbc9 100644 --- a/.github/workflows/build-public.yml +++ b/.github/workflows/build-public.yml @@ -1,7 +1,7 @@ on: push: -name: Build +name: Build - Public jobs: build: runs-on: ubuntu-latest @@ -9,13 +9,15 @@ jobs: - name: "Check out code" uses: actions/checkout@v4 + - name: "Copy .env template for production" + run: cp .env.production .env + - name: "Install dependencies" uses: php-actions/composer@v6 if: steps.cache-vendor.outputs.cache-hit != 'true' # Skip if cache hit with: command: install - dev: no - only_args: --no-ansi --no-interaction --no-scripts --prefer-dist --ignore-platform-reqs --classmap-authoritative + only_args: --no-dev --no-ansi --no-interaction --no-scripts --prefer-dist --ignore-platform-reqs --classmap-authoritative php_version: 8.3 - name: "Use Node.js" diff --git a/.gitignore b/.gitignore index d9ab652a..fdf83066 100644 --- a/.gitignore +++ b/.gitignore @@ -11,7 +11,6 @@ /vendor .env .env.backup -.env.production .phpunit.result.cache Homestead.json Homestead.yaml diff --git a/config/app.php b/config/app.php index 0fb38670..f2da18e5 100644 --- a/config/app.php +++ b/config/app.php @@ -169,13 +169,12 @@ return [ */ App\Providers\AppServiceProvider::class, App\Providers\AuthServiceProvider::class, - // App\Providers\BroadcastServiceProvider::class, App\Providers\EventServiceProvider::class, App\Providers\Filament\AdminPanelProvider::class, App\Providers\RouteServiceProvider::class, - App\Providers\TelescopeServiceProvider::class, App\Providers\FortifyServiceProvider::class, App\Providers\JetstreamServiceProvider::class, + // Warning: Do not add TelescopeServiceProvider here since it is already conditionally registered in AppServiceProvider ])->toArray(), /* diff --git a/docker/prod/Dockerfile b/docker/prod/Dockerfile index 2ab5104e..09aec9bb 100644 --- a/docker/prod/Dockerfile +++ b/docker/prod/Dockerfile @@ -108,6 +108,8 @@ COPY --chown=${USER}:${USER} docker/prod/deployment/supervisord.*.conf /etc/supe COPY --chown=${USER}:${USER} docker/prod/deployment/php.ini ${PHP_INI_DIR}/conf.d/99-octane.ini COPY --chown=${USER}:${USER} docker/prod/deployment/start-container /usr/local/bin/start-container +RUN cat .env +RUN php artisan env RUN php artisan storage:link RUN chmod +x /usr/local/bin/start-container