diff --git a/workflow-templates/node-dist-unchanged.yml b/workflow-templates/node-dist-unchanged.yml new file mode 100644 index 00000000..ad1ec3be --- /dev/null +++ b/workflow-templates/node-dist-unchanged.yml @@ -0,0 +1,28 @@ +# SPDX-FileCopyrightText: 2023-2024 Nextcloud GmbH and Nextcloud contributors +# SPDX-License-Identifier: AGPL-3.0-or-later + +name: Check node dist files + +on: + pull_request: + +jobs: + changed_files: + runs-on: ubuntu-latest-low + name: Check node dist files + permissions: + pull-requests: read + + steps: + - name: Get changed files + id: changed-files + uses: tj-actions/changed-files@dcc7a0cba800f454d79fff4b993e8c3555bcc0a8 # v45.0.7 + with: + files: js/** + + - name: Run step if any file(s) in the dist folder change + if: steps.changed-files.outputs.any_changed == 'true' + run: | + echo "One or more files in the dist folder has changed. Do NOT commit files in there as they will be generated automatically once a pull request is merged" + echo "List all the files that have changed: ${{ steps.changed-files.outputs.all_changed_files }}" + exit 1 diff --git a/workflow-templates/update-node-dist.yml b/workflow-templates/update-node-dist.yml new file mode 100644 index 00000000..07fc3c5f --- /dev/null +++ b/workflow-templates/update-node-dist.yml @@ -0,0 +1,93 @@ +# SPDX-FileCopyrightText: 2023-2024 Nextcloud GmbH and Nextcloud contributors +# SPDX-License-Identifier: AGPL-3.0-or-later + +name: Update Node dist + +on: + workflow_dispatch: + push: + branches: + # implemented since 35, once branched off, add your stable branch here + - ${{ github.event.repository.default_branch }} + - stable* + +permissions: + contents: write + +concurrency: + group: update-node-dist-${{ github.head_ref || github.ref || github.run_id }} + +jobs: + update-node-dist: + runs-on: ubuntu-latest-assets + environment: update-node-dist + + steps: + - name: Checkout + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + # Needed to allow force push later + persist-credentials: true + token: ${{ secrets.BOT_GITHUB_TOKEN }} + + - name: Skip if update-node-dist.yml does not exist on the branch + id: check_update_file + run: | + if [ ! -f .github/workflows/update-node-dist.yml ] + then + exit 0 + fi + + - name: Read package.json node and npm engines version + uses: skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v3 + id: versions + with: + fallbackNode: '^20' + fallbackNpm: '^9' + + - name: Set up node ${{ steps.versions.outputs.nodeVersion }} + uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 + with: + node-version: ${{ steps.versions.outputs.nodeVersion }} + + - name: Set up npm ${{ steps.versions.outputs.npmVersion }} + run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}" + + - name: Setup git + run: | + git config --local user.email "nextcloud-command@users.noreply.github.com" + git config --local user.name "nextcloud-command" + + - name: Get last commit message if it was not a recompile + id: last_commit + run: | + { + echo 'MESSAGE<> $GITHUB_OUTPUT + + - name: Install dependencies & build + if: steps.last_commit.outputs.MESSAGE != '' + env: + CYPRESS_INSTALL_BINARY: 0 + run: | + npm ci + npm run build --if-present + + - name: Check webpack build changes + id: changes + continue-on-error: true + run: | + { + echo 'CHANGED<> "$GITHUB_OUTPUT" + + - name: Add and commit + if: steps.changes.outputs.CHANGED != '' + run: | + git add --force js/ + git commit --signoff -m 'chore(assets): recompile assets' + git push origin ${GITHUB_HEAD_REF}