From aafc152ff83cb40972ec75a970037bbaba369a24 Mon Sep 17 00:00:00 2001 From: Maik Schneider Date: Mon, 11 Mar 2024 11:33:56 +0100 Subject: [PATCH] feat: add github release workflow + TER upload --- .github/workflows/release.yml | 75 +++++++++++++++++++++++++++++++++++ packaging_exclude.php | 46 +++++++++++++++++++++ 2 files changed, 121 insertions(+) create mode 100644 .github/workflows/release.yml create mode 100644 packaging_exclude.php diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..933d7f1 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,75 @@ +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 + + - name: Reset files + run: git reset --hard HEAD && git clean -dfx + + # 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 }}" diff --git a/packaging_exclude.php b/packaging_exclude.php new file mode 100644 index 0000000..d253a5e --- /dev/null +++ b/packaging_exclude.php @@ -0,0 +1,46 @@ + [ + '.build', + '.ddev', + '.git', + '.github', + 'bin', + 'build', + 'public', + 'resources\\/private\\/frontend', + 'resources\\/private\\/libs\\/build', + 'tailor-version-upload', + 'tests', + 'var', + 'vendor', + ], + 'files' => [ + 'DS_Store', + 'CODE_OF_CONDUCT.md', + 'codeception.yml', + 'codecov.yml', + 'CODEOWNERS', + 'composer.lock', + 'CONTRIBUTING.md', + 'crowdin.yaml', + 'dependency-checker.json', + 'docker-compose.yml', + 'editorconfig', + 'editorconfig-lint.php', + 'gitattributes', + 'gitignore', + 'packaging_exclude.php', + 'php-cs-fixer.php', + 'phpstan.php', + 'phpstan-baseline.neon', + 'phpunit.functional.xml', + 'phpunit.unit.xml', + 'rector.php', + 'renovate.json', + 'typoscript-lint.yml', + ], +];