on: push: branches: - main - develop pull_request: paths: - '.github/workflows/build-private.yml' - 'docker/prod/**' workflow_dispatch: 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: "Checkout services extension" uses: actions/checkout@v4 with: repository: solidtime-io/extension-services path: extensions/Services ssh-key: ${{ secrets.SSH_PRIVATE_KEY_SERVICES_EXTENSION }} - name: "Install dependencies in services extension" uses: php-actions/composer@v6 with: working_dir: "extensions/Services" command: install only_args: --no-dev --no-ansi --no-interaction --prefer-dist --ignore-platform-reqs --classmap-authoritative php_version: 8.3 - name: "Setup PHP with PECL extension" uses: shivammathur/setup-php@v2 with: php-version: '8.3' extensions: mbstring, dom, fileinfo, pgsql, swoole - 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: "Activate billing extension" run: php artisan module:enable Billing - name: "Activate services extension" run: php artisan module:enable Services - 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}} type=sha,format=long - 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