--- name: Build translations on: # yamllint disable-line rule:truthy push: branches: [master, simplesamlphp-*] paths: - '**.po' - '**.php' - '**.twig' workflow_dispatch: jobs: quality: name: Quality checks runs-on: ['ubuntu-latest'] steps: - uses: actions/checkout@v4 #- uses: actions/setup-python@v4 # with: # python-version: '3.10' #- run: pip install lint-po #- name: Lint PO(T) files # run: | # lint-po locales/*/LC_MESSAGES/*.po # lint-po modules/*/locales/*/LC_MESSAGES/*.po build: name: Build PO-files runs-on: ['ubuntu-latest'] needs: quality outputs: files_changed: ${{ steps.changes.outputs.files_changed }} steps: - name: Setup PHP, with composer and extensions id: setup-php # https://github.com/shivammathur/setup-php uses: shivammathur/setup-php@v2 with: # Should be the higest supported version, so we can use the newest tools php-version: '8.3' coverage: none - uses: actions/checkout@v4 with: repository: ${{ github.event.pull_request.head.repo.full_name }} ref: ${{ github.event.pull_request.head.ref }} token: ${{ secrets.PAT_TOKEN }} - name: Install Composer dependencies run: composer install --no-progress --prefer-dist --optimize-autoloader - name: Generate new updated PO-files run: php bin/translations translations:update:translatable --module main - name: Diff the changes after building shell: pwsh # Give an id to the step, so we can reference it later id: changes run: | git add --all $Diff = git diff --cached --name-only # Check if any of the translation files have changed (added, modified, deleted) $SourceDiff = $Diff | Where-Object { $_ -match '^*.po' } echo "Changed files" echo $SourceDiff $HasSourceDiff = $SourceDiff.Length -gt 0 echo "($($SourceDiff.Length) changes)" echo "files_changed=$HasSourceDiff" >> $env:GITHUB_OUTPUT - name: Zip artifact for deployment if: steps.changes.outputs.files_changed == 'true' || steps.changes.outputs.packages_changed run: zip build.zip -r . - uses: actions/upload-artifact@v4 if: steps.changes.outputs.files_changed == 'true' || steps.changes.outputs.packages_changed with: name: build path: build.zip retention-days: 1 commit: name: Commit changes to assets needs: build if: needs.build.outputs.files_changed == 'true' runs-on: [ubuntu-latest] steps: - uses: actions/download-artifact@v4 with: name: build - name: unzip artifact for deployment run: | unzip build.zip rm build.zip - name: Add & Commit uses: EndBug/add-and-commit@v9 with: # The arguments for the `git add` command (see the paragraph below for more info) # Default: '.' add: "['**/*.po']" # Determines the way the action fills missing author name and email. Three options are available: # - github_actor -> UserName <UserName@users.noreply.github.com> # - user_info -> Your Display Name <your-actual@email.com> # - github_actions -> github-actions <email associated with the github logo> # Default: github_actor default_author: github_actions # The message for the commit. # Default: 'Commit from GitHub Actions (name of the workflow)' message: "[skip ci] Auto-rebuild translations" # The way the action should handle pathspec errors from the add and remove commands. # Three options are available: # - ignore -> errors will be logged but the step won't fail # - exitImmediately -> the action will stop right away, and the step will fail # - exitAtEnd -> the action will go on, every pathspec error will be logged at the end, the step will fail. # Default: ignore pathspec_error_handling: exitImmediately cleanup: name: Cleanup artifacts needs: [build, commit] runs-on: [ubuntu-latest] if: | always() && needs.commit.result == 'success' || (needs.build.result == 'success' && needs.commit.result == 'skipped') steps: - uses: geekyeggo/delete-artifact@v4 with: name: | build