TER-Upload per GitHub Release
Ich bin ein großer Fan von automatisierten Release-Prozessen. Deshalb wollte ich gerne die GitHub Releases und GitHub Actions für einen automatisierten Upload meiner Extensions ins TER nutzen. Glücklicherweise gibt es breits ein Tool, um per Kommandozeile mit dem TER zu kommunizieren: Tailor. Doch eine Sache bereitete mir eine Zeit lang Kopfschmerzen: Wie bekomme ich die mehrzeilige Beschreibung des GitHub Releases in das Kommentarargument des `tailor ter:publish` Kommandos. Der Trick dabei ist bestimmte Zeichen zu ersetzen, um die Beschreibung währen der Verarbeitung per `::set-output name=` in einer Zeile zu halten.
Meine Release-Tags starten mit `v`. Mein GitHub Actions Workflow sieht folgender Maßen aus:
name: publish
on:
release:
types: [created, edited]
jobs:
publish:
name: Publish to TER
if: startsWith(github.ref, 'refs/tags/v')
runs-on: ubuntu-20.04
env:
TYPO3_API_TOKEN: ${{ secrets.TYPO3_API_TOKEN }}
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Check tag
run: |
if ! [[ ${{ github.ref }} =~ ^refs/tags/v[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$ ]]; then
exit 1
fi
- name: Get version
id: get-version
run: echo ::set-output name=version::${GITHUB_REF/refs\/tags\/v/}
- name: Get comment
id: get-comment
run: |
comment="${{ github.event.release.body }}"
comment="${comment//'%'/'%25'}"
comment="${comment//$'\n'/'%0A'}"
comment="${comment//$'\r'/'%0D'}"
if [[ -z "${comment// }" ]]; then
echo ::set-output name=comment::Released version ${{ steps.get-version.outputs.version }}
else
echo ::set-output name=comment::$comment
fi
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: 7.4
extensions: intl, mbstring, json, zip, curl
tools: composer:v2
- name: Install tailor
run: composer global require typo3/tailor --prefer-dist --no-progress --no-suggest
- name: Publish to TER
run: php ~/.composer/vendor/bin/tailor ter:publish --comment "${{ steps.get-comment.outputs.comment }}" ${{ steps.get-version.outputs.version }}
Darf gerne kopiert und ggf. angepasst werden.
Diese Website verwendet Disqus um Kommentare anzuzeigen. Aufgrund der geltenden Datenschutzgesetzte (DSGVO) musst du dem Laden der Kommentare von Disqus explizit zustimmen.
Kommentare anzeigen