eliashaeussler/typo3-badges

View on GitHub
.github/workflows/deploy.yaml

Summary

Maintainability
Test Coverage
name: Deploy
on:
  push:
    tags:
      - '*'
  workflow_dispatch:

# Prevents concurrent deployments
concurrency: production_environment

jobs:
  prod:
    if: startsWith(github.ref, 'refs/tags/')
    runs-on: ubuntu-latest
    environment:
      name: production
      url: https://typo3-badges.dev
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      # Prepare environment
      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: 8.3
          tools: composer:v2
          coverage: none
      - name: Setup Node
        uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: 'npm'

      # Install dependencies
      - name: Install Composer dependencies
        uses: ramsey/composer-install@v2
        with:
          composer-options: --no-dev --optimize-autoloader
      - name: Install node modules
        run: npm ci

      # Audit packages
      - name: Audit Composer dependencies
        run: composer audit
      - name: Audit Frontend dependencies
        run: npm audit

      # Build Frontend
      - name: Build Frontend dist files
        run: npm run build

      # Deploy to production
      - name: Deploy
        uses: deployphp/action@v1
        env:
          LANG: en_US.UTF-8
          LANGUAGE: en_US.UTF-8
          LC_CTYPE: en_US.UTF-8
          LC_ALL: en_US.UTF-8
        with:
          private-key: ${{ secrets.SSH_PRIVATE_KEY }}
          known-hosts: ${{ secrets.SSH_KNOWN_HOSTS }}
          dep: deploy production
          deployer-version: '7.4.1'

  dev:
    if: ${{ github.event_name == 'workflow_dispatch' }}
    runs-on: ubuntu-latest
    environment:
      name: dev
      url: https://pre.typo3-badges.dev
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      # Prepare environment
      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: 8.3
          tools: composer:v2
          coverage: none
      - name: Setup Node
        uses: actions/setup-node@v4
        with:
          cache: 'npm'

      # Install dependencies
      - name: Install Composer dependencies
        uses: ramsey/composer-install@v2
        with:
          composer-options: --no-dev --optimize-autoloader
      - name: Install node modules
        run: npm ci

      # Build Frontend
      - name: Build Frontend dist files
        run: npm run build

      # Deploy to production
      - name: Deploy
        uses: deployphp/action@v1
        env:
          LANG: en_US.UTF-8
          LANGUAGE: en_US.UTF-8
          LC_CTYPE: en_US.UTF-8
          LC_ALL: en_US.UTF-8
        with:
          private-key: ${{ secrets.SSH_PRIVATE_KEY }}
          known-hosts: ${{ secrets.SSH_KNOWN_HOSTS }}
          dep: deploy dev
          deployer-version: '7.4.1'