diff --git a/.github/workflows/node-dist-unchanged.yml b/.github/workflows/node-dist-unchanged.yml new file mode 100644 index 000000000..2e6c9d73e --- /dev/null +++ b/.github/workflows/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@9c9e94395b39f2628ceed2caba849f630866e9e0 # v45.0.7 + with: + files: dist/** + + - 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/.github/workflows/npm-build.patch b/.github/workflows/npm-build.patch new file mode 100644 index 000000000..94dddce32 --- /dev/null +++ b/.github/workflows/npm-build.patch @@ -0,0 +1,32 @@ +diff --git a/.github/workflows/npm-build.yml b/.github/workflows/npm-build.yml +index 1b9e3724e..d7e181064 100644 +--- a/.github/workflows/npm-build.yml ++++ b/.github/workflows/npm-build.yml +@@ -86,16 +86,17 @@ jobs: + npm ci + npm run build --if-present + +- - name: Check build changes +- run: | +- bash -c "[[ ! \"`git status --porcelain `\" ]] || (echo 'Please recompile and commit the assets, see the section \"Show changes on failure\" for details' && exit 1)" +- +- - name: Show changes on failure +- if: failure() +- run: | +- git status +- git --no-pager diff +- exit 1 # make it red to grab attention ++# Not used as we compile on CI, see update-node-dist.yml and node-dist-unchanged.yml ++# - name: Check build changes ++# run: | ++# bash -c "[[ ! \"`git status --porcelain `\" ]] || (echo 'Please recompile and commit the assets, see the section \"Show changes on failure\" for details' && exit 1)" ++# ++# - name: Show changes on failure ++# if: failure() ++# run: | ++# git status ++# git --no-pager diff ++# exit 1 # make it red to grab attention + + summary: + permissions: diff --git a/.github/workflows/npm-build.yml b/.github/workflows/npm-build.yml index 1b9e3724e..d7e181064 100644 --- a/.github/workflows/npm-build.yml +++ b/.github/workflows/npm-build.yml @@ -86,16 +86,17 @@ jobs: npm ci npm run build --if-present - - name: Check build changes - run: | - bash -c "[[ ! \"`git status --porcelain `\" ]] || (echo 'Please recompile and commit the assets, see the section \"Show changes on failure\" for details' && exit 1)" - - - name: Show changes on failure - if: failure() - run: | - git status - git --no-pager diff - exit 1 # make it red to grab attention +# Not used as we compile on CI, see update-node-dist.yml and node-dist-unchanged.yml +# - name: Check build changes +# run: | +# bash -c "[[ ! \"`git status --porcelain `\" ]] || (echo 'Please recompile and commit the assets, see the section \"Show changes on failure\" for details' && exit 1)" +# +# - name: Show changes on failure +# if: failure() +# run: | +# git status +# git --no-pager diff +# exit 1 # make it red to grab attention summary: permissions: diff --git a/.github/workflows/update-node-dist.yml b/.github/workflows/update-node-dist.yml new file mode 100644 index 000000000..c37932501 --- /dev/null +++ b/.github/workflows/update-node-dist.yml @@ -0,0 +1,85 @@ +# 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 + - master + - stable35 + +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: Read package.json node and npm engines version + uses: skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v2.1 + 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 dist/ core/css/ + git commit --signoff -m 'chore(assets): recompile assets' + git push origin ${GITHUB_HEAD_REF} diff --git a/REUSE.toml b/REUSE.toml index f4cc0212c..ff6137c23 100644 --- a/REUSE.toml +++ b/REUSE.toml @@ -36,7 +36,7 @@ SPDX-FileCopyrightText = "2020 Nextcloud GmbH and Nextcloud contributors" SPDX-License-Identifier = "AGPL-3.0-or-later" [[annotations]] -path = ".github/CODEOWNERS" +path = [".github/CODEOWNERS", ".github/workflows/*.patch"] precedence = "aggregate" SPDX-FileCopyrightText = "2023 Nextcloud GmbH and Nextcloud contributors" SPDX-License-Identifier = "AGPL-3.0-or-later"