eliashaeussler/typo3-warming

View on GitHub
.github/workflows/release.yaml

Summary

Maintainability
Test Coverage
name: Release
on:
  push:
    tags:
      - '*'

jobs:
  # Job: Create release
  release:
    if: startsWith(github.ref, 'refs/tags/')
    runs-on: ubuntu-latest
    outputs:
      release-notes-url: ${{ steps.create-release.outputs.url }}
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      # Check if tag is valid
      - name: Check tag
        run: |
          if ! [[ ${{ github.ref }} =~ ^refs/tags/[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$ ]]; then
            exit 1
          fi

      # Create release
      - name: Create release
        id: create-release
        uses: softprops/action-gh-release@v2
        with:
          generate_release_notes: true

  # Job: Publish on TER
  ter-publish:
    if: startsWith(github.ref, 'refs/tags/')
    needs: [release]
    runs-on: ubuntu-latest
    env:
      TYPO3_EXTENSION_KEY: warming
      TYPO3_API_TOKEN: ${{ secrets.TYPO3_API_TOKEN }}
      TYPO3_EXCLUDE_FROM_PACKAGING: packaging_exclude.php
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      # Check if tag is valid
      - name: Check tag
        run: |
          if ! [[ ${{ github.ref }} =~ ^refs/tags/[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$ ]]; then
            exit 1
          fi

      # Prepare version
      - id: get-version
        run: echo "version=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_OUTPUT
      - id: get-comment
        run: echo "comment=See release notes at ${{ needs.release.outputs.release-notes-url }}" >> $GITHUB_OUTPUT

      # Prepare environment
      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: 8.1
          extensions: intl, mbstring, json, zip, curl
          tools: composer:v2, typo3/tailor, clue/phar-composer

      - name: Reset files
        run: git reset --hard HEAD && git clean -dfx

      # PHAR files
      - name: Build PHAR file
        run: |
          composer install -d Resources/Private/Libs/Build
          composer global exec phar-composer build Resources/Private/Libs/Build Resources/Private/Libs/vendors.phar
      - name: Include PHAR file
        run: echo "\\EliasHaeussler\\Typo3Warming\\Extension::loadVendorLibraries();" >> ext_localconf.php

      # Release
      - name: Publish to TER
        run: |
          php ~/.composer/vendor/bin/tailor set-version "${{ steps.get-version.outputs.version }}"
          php ~/.composer/vendor/bin/tailor ter:publish --comment "${{ steps.get-comment.outputs.comment }}" "${{ steps.get-version.outputs.version }}"