on: push: branches: - main - develop tags: - '*' pull_request: paths: - '.github/workflows/build-public.yml' - 'docker/prod/**' workflow_dispatch: name: Build - Public 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 - 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: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: "Docker meta" id: "meta" uses: docker/metadata-action@v5 with: images: 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@v6 with: context: . file: docker/prod/Dockerfile platforms: linux/amd64 push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} cache-from: type=gha cache-to: type=gha,mode=max