From 5808bae1c610eb75b4c647b0900298ff8dae8ee9 Mon Sep 17 00:00:00 2001 From: Carl Schwan Date: Wed, 5 Aug 2026 10:42:18 +0200 Subject: [PATCH 1/2] fix(release): Port to krankerl Signed-off-by: Carl Schwan --- .nextcloudignore | 44 ++++++++++++++++++ Makefile | 114 ----------------------------------------------- krankerl.toml | 8 ++++ 3 files changed, 52 insertions(+), 114 deletions(-) create mode 100644 .nextcloudignore delete mode 100644 Makefile create mode 100644 krankerl.toml diff --git a/.nextcloudignore b/.nextcloudignore new file mode 100644 index 00000000..3cc54d8a --- /dev/null +++ b/.nextcloudignore @@ -0,0 +1,44 @@ +# SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors +# SPDX-License-Identifier: AGPL-3.0-or-later +/AUTHORS.md +/build +/.editorconfig +/.eslintrc.js +/.git +/.github +/.gitignore +/.php* +/.travis.yml +/.tx +/.scrutinizer.yml +/.nextcloudignore +/babel.config.js +/CONTRIBUTING.md +/composer.json +/composer.lock +/composer.phar +/karma.conf.js +/krankerl.toml +/l10n/no-php +/Makefile +/nbproject +/node_modules +/package.json +/package-lock.json +/psalm.xml +/screenshots +/src +/stylelint.config.js +/tests +/vendor/bin +/vendor/**/tests +/webpack.common.js +/webpack.dev.js +/webpack.js +/webpack.prod.js +/vendor/bin +/vendor-bin +/vite.config.ts +/tsconfig.json +/rector.php +/CHANGELOG.md diff --git a/Makefile b/Makefile deleted file mode 100644 index 99b70b51..00000000 --- a/Makefile +++ /dev/null @@ -1,114 +0,0 @@ -# SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors -# SPDX-License-Identifier: AGPL-3.0-or-later -app_name=FullTextSearch - -build_dir=$(CURDIR)/build/artifacts -appstore_dir=$(build_dir)/appstore -source_dir=$(build_dir)/source -sign_dir=$(build_dir)/sign -package_name=$(shell echo $(app_name) | tr '[:upper:]' '[:lower:]') -cert_dir=$(HOME)/.nextcloud/certificates -github_account=nextcloud -release_account=nextcloud-releases -NPM?=npm -branch=stable29 -version=29.0.0 -since_tag= - -all: appstore - -release: appstore github-release github-upload - -github-release: - if [ -z "$(release_account)" ]; then \ - release_account=$(github_account); \ - release_branch=$(branch); \ - else \ - release_account=$(release_account); \ - release_branch=master; \ - fi; \ - if [ -z "$(since_tag)" ]; then \ - latest_tag=$$(git describe --tags `git rev-list --tags --max-count=1`); \ - else \ - latest_tag=$(since_tag); \ - fi; \ - comparison="$$latest_tag..HEAD"; \ - if [ -z "$$latest_tag" ]; then comparison=""; fi; \ - changelog=$$(git log $$comparison --oneline --no-merges | sed -e 's/^/$(github_account)\/$(package_name)@/'); \ - github-release release \ - --user $$release_account \ - --repo $(package_name) \ - --target $$release_branch \ - --tag $(version) \ - --description "**Changelog**
$$changelog" \ - --name "$(app_name) v$(version)"; \ - if [ $(github_account) != $$release_account ]; then \ - link="https://github.com/$$release_account/$(package_name)/releases/download/$(version)/$(package_name)-$(version).tar.gz";\ - github-release release \ - --user $(github_account) \ - --repo $(package_name) \ - --target $(branch) \ - --tag $(version) \ - --description "**Download**
$$link

**Changelog**
$$changelog
" \ - --name "$(app_name) v$(version)"; \ - fi; \ - - -github-upload: - if [ -z "$(release_account)" ]; then \ - release_account=$(github_account); \ - else \ - release_account=$(release_account); \ - fi; \ - github-release upload \ - --user $$release_account \ - --repo $(package_name) \ - --tag $(version) \ - --name "$(package_name)-$(version).tar.gz" \ - --file $(build_dir)/$(package_name).tar.gz - - -clean: - rm -rf $(build_dir) - rm -rf node_modules - -# composer packages -composer: - composer install --prefer-dist - composer upgrade --prefer-dist - -node-modules: - $(NPM) ci - -build-js-production: - $(NPM) run build - -appstore: clean node-modules build-js-production composer - mkdir -p $(sign_dir) - rsync -a \ - --exclude=/build \ - --exclude=/docs \ - --exclude=/translationfiles \ - --exclude=/.tx \ - --exclude=/tests \ - --exclude=.git \ - --exclude=/.github \ - --exclude=/l10n/l10n.pl \ - --exclude=/CONTRIBUTING.md \ - --exclude=/issue_template.md \ - --exclude=/README.md \ - --exclude=/composer.json \ - --exclude=/testConfiguration.json \ - --exclude=/composer.lock \ - --exclude=/.gitattributes \ - --exclude=/.gitignore \ - --exclude=/.scrutinizer.yml \ - --exclude=/.travis.yml \ - --exclude=/Makefile \ - ./ $(sign_dir)/$(package_name) - tar -czf $(build_dir)/$(package_name).tar.gz \ - -C $(sign_dir) $(package_name) - @if [ -f $(cert_dir)/$(package_name).key ]; then \ - echo "Signing package…"; \ - openssl dgst -sha512 -sign $(cert_dir)/$(package_name).key $(build_dir)/$(package_name).tar.gz | openssl base64; \ - fi diff --git a/krankerl.toml b/krankerl.toml new file mode 100644 index 00000000..7244d991 --- /dev/null +++ b/krankerl.toml @@ -0,0 +1,8 @@ +# SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors +# SPDX-License-Identifier: AGPL-3.0-or-later +[package] +before_cmds = [ + "composer install --no-dev -o", + 'npm ci', + 'npm run build' +] From b3ce7d4ef378bb7783432406c16790e69ee4c3f8 Mon Sep 17 00:00:00 2001 From: Carl Schwan Date: Wed, 5 Aug 2026 10:49:15 +0200 Subject: [PATCH 2/2] feat: Add missing workflows Signed-off-by: Carl Schwan --- .../workflows/dependabot-approve-merge.yml | 49 +++++++ .github/workflows/release-relay.yml | 38 ++++++ .../update-nextcloud-ocp-approve-merge.yml | 58 ++++++++ .github/workflows/update-nextcloud-ocp.yml | 128 ++++++++++++++++++ 4 files changed, 273 insertions(+) create mode 100644 .github/workflows/dependabot-approve-merge.yml create mode 100644 .github/workflows/release-relay.yml create mode 100644 .github/workflows/update-nextcloud-ocp-approve-merge.yml create mode 100644 .github/workflows/update-nextcloud-ocp.yml diff --git a/.github/workflows/dependabot-approve-merge.yml b/.github/workflows/dependabot-approve-merge.yml new file mode 100644 index 00000000..ed902d92 --- /dev/null +++ b/.github/workflows/dependabot-approve-merge.yml @@ -0,0 +1,49 @@ +# This workflow is provided via the organization template repository +# +# https://github.com/nextcloud/.github +# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization +# +# SPDX-FileCopyrightText: 2021-2024 Nextcloud GmbH and Nextcloud contributors +# SPDX-License-Identifier: MIT + +name: Dependabot + +on: + pull_request_target: # zizmor: ignore[dangerous-triggers] + branches: + - main + - master + - stable* + +permissions: + contents: read + +concurrency: + group: dependabot-approve-merge-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +jobs: + auto-approve-merge: + if: github.event.pull_request.user.login == 'dependabot[bot]' || github.event.pull_request.user.login == 'renovate[bot]' + runs-on: ubuntu-latest-low + permissions: + # for hmarr/auto-approve-action to approve PRs + pull-requests: write + + steps: + - name: Disabled on forks + if: ${{ github.event.pull_request.head.repo.full_name != github.repository }} + run: | + echo 'Can not approve PRs from forks' + exit 1 + + # GitHub actions bot approve + - uses: hmarr/auto-approve-action@b40d6c9ed2fa10c9a2749eca7eb004418a705501 # v2 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + + # Nextcloud bot approve and merge request + - uses: ahmadnassri/action-dependabot-auto-merge@45fc124d949b19b6b8bf6645b6c9d55f4f9ac61a # v2 + with: + target: minor + github-token: ${{ secrets.DEPENDABOT_AUTOMERGE_TOKEN }} diff --git a/.github/workflows/release-relay.yml b/.github/workflows/release-relay.yml new file mode 100644 index 00000000..08908315 --- /dev/null +++ b/.github/workflows/release-relay.yml @@ -0,0 +1,38 @@ +# This workflow is provided via the organization template repository +# +# https://github.com/nextcloud/.github +# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization +# +# SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors +# SPDX-License-Identifier: MIT + +name: Notify release-relay on release + +on: + release: + types: [published] + +permissions: + contents: read + +jobs: + notify: + name: Dispatch release to release-relay + runs-on: ubuntu-latest + + # Only allowed to run on nextcloud-releases repositories + if: ${{ github.repository_owner == 'nextcloud-releases' }} + + steps: + - name: Check actor permission + uses: skjnldsv/check-actor-permission@69e92a3c4711150929bca9fcf34448c5bf5526e7 # v3.0 + with: + require: write + + - name: Dispatch to release-relay + uses: peter-evans/repository-dispatch@28959ce8df70de7be546dd1250a005dd32156697 # v4.0.1 + with: + token: ${{ secrets.DISPATCH_PAT }} + repository: nextcloud-gmbh/release-relay + event-type: app-tagged + client-payload: '{"app": "${{ github.repository }}", "tag": "${{ github.event.release.tag_name }}"}' diff --git a/.github/workflows/update-nextcloud-ocp-approve-merge.yml b/.github/workflows/update-nextcloud-ocp-approve-merge.yml new file mode 100644 index 00000000..dfe0ef4e --- /dev/null +++ b/.github/workflows/update-nextcloud-ocp-approve-merge.yml @@ -0,0 +1,58 @@ +# This workflow is provided via the organization template repository +# +# https://github.com/nextcloud/.github +# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization +# +# SPDX-FileCopyrightText: 2023-2024 Nextcloud GmbH and Nextcloud contributors +# SPDX-License-Identifier: MIT + +name: Auto approve nextcloud/ocp + +on: + pull_request_target: # zizmor: ignore[dangerous-triggers] + branches: + - main + - master + - stable* + +permissions: + contents: read + +concurrency: + group: update-nextcloud-ocp-approve-merge-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +jobs: + auto-approve-merge: + if: github.actor == 'nextcloud-command' + runs-on: ubuntu-latest-low + permissions: + # for hmarr/auto-approve-action to approve PRs + pull-requests: write + # for alexwilson/enable-github-automerge-action to approve PRs + contents: write + + steps: + - name: Disabled on forks + if: ${{ github.event.pull_request.head.repo.full_name != github.repository }} + run: | + echo 'Can not approve PRs from forks' + exit 1 + + - uses: mdecoleman/pr-branch-name@55795d86b4566d300d237883103f052125cc7508 # v3.0.0 + id: branchname + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + + # GitHub actions bot approve + - uses: hmarr/auto-approve-action@b40d6c9ed2fa10c9a2749eca7eb004418a705501 # v2 + if: startsWith(steps.branchname.outputs.branch, 'automated/noid/') && endsWith(steps.branchname.outputs.branch, 'update-nextcloud-ocp') + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + + # Enable GitHub auto merge + - name: Auto merge + uses: alexwilson/enable-github-automerge-action@56e3117d1ae1540309dc8f7a9f2825bc3c5f06ff # v2.0.0 + if: startsWith(steps.branchname.outputs.branch, 'automated/noid/') && endsWith(steps.branchname.outputs.branch, 'update-nextcloud-ocp') + with: + github-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/update-nextcloud-ocp.yml b/.github/workflows/update-nextcloud-ocp.yml new file mode 100644 index 00000000..1e143aaa --- /dev/null +++ b/.github/workflows/update-nextcloud-ocp.yml @@ -0,0 +1,128 @@ +# This workflow is provided via the organization template repository +# +# https://github.com/nextcloud/.github +# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization +# +# SPDX-FileCopyrightText: 2022-2024 Nextcloud GmbH and Nextcloud contributors +# SPDX-License-Identifier: MIT + +name: Update nextcloud/ocp + +on: + workflow_dispatch: + schedule: + - cron: "5 2 * * 0" + +permissions: + contents: read + issues: write + +jobs: + update-nextcloud-ocp: + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + branches: + - ${{ github.event.repository.default_branch }} + - 'stable34' + - 'stable33' + - 'stable32' + + name: update-nextcloud-ocp-${{ matrix.branches }} + + steps: + - id: checkout + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + persist-credentials: false + ref: ${{ matrix.branches }} + submodules: true + continue-on-error: true + + - name: Set up php8.2 + if: steps.checkout.outcome == 'success' + uses: shivammathur/setup-php@0f7f1d08e3e32076e51cae65eb0b0c871405b16e # v2.34.1 + with: + php-version: 8.2 + # https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation + extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite + coverage: none + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Read codeowners + if: steps.checkout.outcome == 'success' + id: codeowners + run: | + grep '/appinfo/info.xml' .github/CODEOWNERS | cut -f 2- -d ' ' | xargs | awk '{ print "codeowners="$0 }' >> $GITHUB_OUTPUT + continue-on-error: true + + - name: Composer install + if: steps.checkout.outcome == 'success' + run: composer install + + - name: Composer update nextcloud/ocp + id: update_branch + if: ${{ steps.checkout.outcome == 'success' && matrix.branches != 'main' }} + run: composer require --dev 'nextcloud/ocp:dev-${{ matrix.branches }}' + + - name: Raise on issue on failure + uses: dacbd/create-issue-action@cdb57ab6ff8862aa09fee2be6ba77a59581921c2 # v2.0.0 + if: ${{ steps.checkout.outcome == 'success' && failure() && steps.update_branch.conclusion == 'failure' }} + with: + token: ${{ secrets.GITHUB_TOKEN }} + title: 'Failed to update nextcloud/ocp package on branch ${{ matrix.branches }}' + body: 'Please check the output of the GitHub action and manually resolve the issues
${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
${{ steps.codeowners.outputs.codeowners }}' + + - name: Composer update nextcloud/ocp + id: update_main + if: ${{ steps.checkout.outcome == 'success' && matrix.branches == 'main' }} + run: composer require --dev nextcloud/ocp:dev-master + + - name: Raise on issue on failure + uses: dacbd/create-issue-action@cdb57ab6ff8862aa09fee2be6ba77a59581921c2 # v2.0.0 + if: ${{ steps.checkout.outcome == 'success' && failure() && steps.update_main.conclusion == 'failure' }} + with: + token: ${{ secrets.GITHUB_TOKEN }} + title: 'Failed to update nextcloud/ocp package on branch ${{ matrix.branches }}' + body: 'Please check the output of the GitHub action and manually resolve the issues
${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
${{ steps.codeowners.outputs.codeowners }}' + + - name: Reset checkout 3rdparty + if: steps.checkout.outcome == 'success' + run: | + git clean -f 3rdparty + git checkout 3rdparty + continue-on-error: true + + - name: Reset checkout vendor + if: steps.checkout.outcome == 'success' + run: | + git clean -f vendor + git checkout vendor + continue-on-error: true + + - name: Reset checkout vendor-bin + if: steps.checkout.outcome == 'success' + run: | + git clean -f vendor-bin + git checkout vendor-bin + continue-on-error: true + + - name: Create Pull Request + if: steps.checkout.outcome == 'success' + uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8 + with: + token: ${{ secrets.COMMAND_BOT_PAT }} + commit-message: 'chore(dev-deps): Bump nextcloud/ocp package' + committer: GitHub + author: nextcloud-command + signoff: true + branch: 'automated/noid/${{ matrix.branches }}-update-nextcloud-ocp' + title: '[${{ matrix.branches }}] Update nextcloud/ocp dependency' + body: | + Auto-generated update of [nextcloud/ocp](https://github.com/nextcloud-deps/ocp/) dependency + labels: | + dependencies + 3. to review