diff --git a/.drone.star b/.drone.star deleted file mode 100644 index 2a64cde90..000000000 --- a/.drone.star +++ /dev/null @@ -1,228 +0,0 @@ -def main(ctx): - # Config - - environment = "server" - - # Version shown as latest in generated documentations - # It's fine that this is out of date in version branches, usually just needs - # adjustment in master/deployment_branch when a new version is added to site.yml - latest_version = "10.16" - default_branch = "master" - - # Current version branch (used to determine when changes are supposed to be pushed) - # pushes to base_branch will trigger a build in deployment_branch but pushing - # to fix-typo branch won't - base_branch = latest_version - - # Version branches never deploy themselves, but instead trigger a deployment in deployment_branch - # This must not be changed in version branches - deployment_branch = default_branch - pdf_branch = default_branch - - # Environment variables needed to generate the search index are only provided in the docs repo in .drone.star - # Also see the documentation for more details. - - return [ - checkStarlark(), - build(ctx, environment, latest_version, deployment_branch, base_branch, pdf_branch), - trigger(ctx, environment, latest_version, deployment_branch, base_branch, pdf_branch), - ] - -def checkStarlark(): - return { - "kind": "pipeline", - "type": "docker", - "name": "check-starlark", - "steps": [ - { - "name": "format-check-starlark", - "image": "owncloudci/bazel-buildifier", - "pull": "always", - "commands": [ - "buildifier --mode=check .drone.star", - ], - }, - { - "name": "show-diff", - "image": "owncloudci/bazel-buildifier", - "pull": "always", - "commands": [ - "buildifier --mode=fix .drone.star", - "git diff", - ], - "when": { - "status": [ - "failure", - ], - }, - }, - ], - "depends_on": [], - "trigger": { - "ref": [ - "refs/pull/**", - ], - }, - } - -def build(ctx, environment, latest_version, deployment_branch, base_branch, pdf_branch): - return { - "kind": "pipeline", - "type": "docker", - "name": "documentation", - "platform": { - "os": "linux", - "arch": "amd64", - }, - "steps": [ - { - "name": "cache-restore", - "pull": "always", - "image": "plugins/s3-cache:1", - "settings": { - "endpoint": from_secret("cache_s3_server"), - "access_key": from_secret("cache_s3_access_key"), - "secret_key": from_secret("cache_s3_secret_key"), - "restore": "true", - }, - }, - { - "name": "docs-deps", - "pull": "always", - "image": "owncloudci/nodejs:22", - "commands": [ - "npm install", - ], - }, - { - "name": "docs-build", - "pull": "always", - "image": "owncloudci/nodejs:22", - "commands": [ - "npm run antora", - ], - }, - { - "name": "cache-rebuild", - "pull": "always", - "image": "plugins/s3-cache:1", - "settings": { - "endpoint": from_secret("cache_s3_server"), - "access_key": from_secret("cache_s3_access_key"), - "secret_key": from_secret("cache_s3_secret_key"), - "rebuild": "true", - "mount": [ - "node_modules", - ], - }, - "when": { - "event": [ - "push", - "cron", - ], - "branch": [ - deployment_branch, - base_branch, - ], - }, - }, - { - "name": "cache-flush", - "pull": "always", - "image": "plugins/s3-cache:1", - "settings": { - "endpoint": from_secret("cache_s3_server"), - "access_key": from_secret("cache_s3_access_key"), - "secret_key": from_secret("cache_s3_secret_key"), - "flush": "true", - "flush_age": "14", - }, - "when": { - "event": [ - "push", - "cron", - ], - }, - }, - # we keep uploading pdf for future reenabling - #{ - # "name": "upload-pdf", - # "pull": "always", - # "image": "plugins/s3-sync", - # "settings": { - # "bucket": "uploads", - # "endpoint": from_secret("docs_s3_server"), - # "access_key": from_secret("docs_s3_access_key"), - # "secret_key": from_secret("docs_s3_secret_key"), - # "path_style": "true", - # "source": "pdf_web/", - # "target": "/pdf/%s" % environment, - # }, - # "when": { - # "event": [ - # "push", - # "cron", - # ], - # "branch": [ - # pdf_branch, - # ], - # }, - #}, - ], - "depends_on": [ - "check-starlark", - ], - "trigger": { - "ref": { - "include": [ - "refs/heads/%s" % deployment_branch, - "refs/heads/%s" % pdf_branch, - "refs/tags/**", - "refs/pull/**", - ], - }, - }, - } - -def trigger(ctx, environment, latest_version, deployment_branch, base_branch, pdf_branch): - return { - "kind": "pipeline", - "type": "docker", - "name": "trigger", - "platform": { - "os": "linux", - "arch": "amd64", - }, - "clone": { - "disable": True, - }, - "steps": [ - { - "name": "trigger-docs", - "pull": "always", - "image": "plugins/downstream", - "settings": { - "server": "https://drone.owncloud.com", - "token": from_secret("drone_token"), - "fork": "true", - "repositories": [ - "owncloud/docs@master", - ], - }, - }, - ], - "depends_on": [ - "documentation", - ], - "trigger": { - "ref": [ - "refs/heads/%s" % deployment_branch, - "refs/heads/%s" % base_branch, - ], - }, - } - -def from_secret(name): - return { - "from_secret": name, - } diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 953aa4504..0486ede6f 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,8 +1,21 @@ version: 2 updates: -- package-ecosystem: npm - directory: "/" - schedule: - interval: daily - time: "22:00" - open-pull-requests-limit: 10 + - package-ecosystem: npm + directory: "/" + schedule: + interval: daily + time: "22:00" + open-pull-requests-limit: 10 + commit-message: + prefix: "chore" + include: "scope" + + - package-ecosystem: github-actions + directory: "/" + schedule: + interval: weekly + time: "22:00" + open-pull-requests-limit: 10 + commit-message: + prefix: "chore" + include: "scope" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 000000000..2e297f48b --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,30 @@ +name: CI + +on: + push: + branches: + - master + - '10.16' + - '10.15' + tags: + - '**' + pull_request: + branches: + - 10.16 + +jobs: + docs-build: + name: Build documentation + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + + - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 + with: + node-version: '22' + + - name: Install dependencies + run: npm install + + - name: Build documentation + run: npm run antora diff --git a/.github/workflows/lint-pr-title.yml b/.github/workflows/lint-pr-title.yml new file mode 100644 index 000000000..ee7e019e4 --- /dev/null +++ b/.github/workflows/lint-pr-title.yml @@ -0,0 +1,16 @@ +name: Lint PR title + +on: + pull_request: + types: + - opened + - edited + - synchronize + +jobs: + lint: + runs-on: ubuntu-latest + steps: + - uses: amannn/action-semantic-pull-request@48f256284bd46cdaab1048c3721360e808335d50 # v6.1.1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/README.md b/README.md index 5798b0ea8..0e38f6d7a 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,9 @@ # ownCloud Server Documentation +**IMPORTANT** + +Since April 2026, this repository requires [Commit Signing](https://docs.github.com/articles/about-gpg) and uses [Conventional Commits](https://www.conventionalcommits.org) for commits and the Pull Request title. + **Table of Contents** * [Building the Server Docs](#building-the-server-docs) diff --git a/package-lock.json b/package-lock.json index 473ee4693..ffc9ecaa5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,10 +13,10 @@ "antora": "^3.1.14", "asciidoctor": "^3.0.4", "asciidoctor-kroki": "^0.18.1", - "cheerio": "^1.1.2", + "cheerio": "^1.2.0", "html-entities": "2.6.0", - "js-yaml": "^4.1.0", - "lodash": "^4.17.21" + "js-yaml": "^4.1.1", + "lodash": "^4.18.1" }, "devDependencies": { "broken-link-checker": "^0.7.8", @@ -1079,9 +1079,9 @@ } }, "node_modules/cheerio": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.1.2.tgz", - "integrity": "sha512-IkxPpb5rS/d1IiLbHMgfPuS0FgiWTtFIm/Nj+2woXDLTZ7fOT2eqzgYbdMlLweqlHbsZjxEChoVK+7iph7jyQg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.2.0.tgz", + "integrity": "sha512-WDrybc/gKFpTYQutKIK6UvfcuxijIZfMfXaYm8NMsPQxSYvf+13fXUJ4rztGGbJcBQ/GF55gvrZ0Bc0bj/mqvg==", "license": "MIT", "dependencies": { "cheerio-select": "^2.1.0", @@ -1089,11 +1089,11 @@ "domhandler": "^5.0.3", "domutils": "^3.2.2", "encoding-sniffer": "^0.2.1", - "htmlparser2": "^10.0.0", + "htmlparser2": "^10.1.0", "parse5": "^7.3.0", "parse5-htmlparser2-tree-adapter": "^7.1.0", "parse5-parser-stream": "^7.1.2", - "undici": "^7.12.0", + "undici": "^7.19.0", "whatwg-mimetype": "^4.0.0" }, "engines": { @@ -2140,9 +2140,9 @@ "license": "MIT" }, "node_modules/htmlparser2": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.0.0.tgz", - "integrity": "sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.1.0.tgz", + "integrity": "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==", "funding": [ "https://github.com/fb55/htmlparser2?sponsor=1", { @@ -2154,14 +2154,14 @@ "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", - "domutils": "^3.2.1", - "entities": "^6.0.0" + "domutils": "^3.2.2", + "entities": "^7.0.1" } }, "node_modules/htmlparser2/node_modules/entities": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", - "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz", + "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", "license": "BSD-2-Clause", "engines": { "node": ">=0.12" @@ -2600,9 +2600,9 @@ "license": "MIT" }, "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -2658,9 +2658,9 @@ } }, "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", "license": "MIT" }, "node_modules/lodash.clonedeep": { @@ -4456,9 +4456,9 @@ } }, "node_modules/undici": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.16.0.tgz", - "integrity": "sha512-QEg3HPMll0o3t2ourKwOeUAZ159Kn9mx5pnzHRQO8+Wixmh88YdZRiIwat0iNzNNXn0yoEtXJqFpyW7eM8BV7g==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.19.0.tgz", + "integrity": "sha512-Heho1hJD81YChi+uS2RkSjcVO+EQLmLSyUlHyp7Y/wFbxQaGb4WXVKD073JytrjXJVkSZVzoE2MCSOKugFGtOQ==", "license": "MIT", "engines": { "node": ">=20.18.1" diff --git a/package.json b/package.json index 55b2a415c..a7cc7853b 100644 --- a/package.json +++ b/package.json @@ -39,10 +39,10 @@ "antora": "^3.1.14", "asciidoctor": "^3.0.4", "asciidoctor-kroki": "^0.18.1", - "cheerio": "^1.1.2", + "cheerio": "^1.2.0", "html-entities": "2.6.0", - "js-yaml": "^4.1.0", - "lodash": "^4.17.21" + "js-yaml": "^4.1.1", + "lodash": "^4.18.1" }, "devDependencies": { "broken-link-checker": "^0.7.8", diff --git a/site.yml b/site.yml index dafbdd5a1..af77963eb 100644 --- a/site.yml +++ b/site.yml @@ -13,7 +13,7 @@ ui: output_dir: assets bundle: snapshot: true - url: https://minio.owncloud.com/documentation/ui-bundle.zip + url: https://github.com/owncloud/docs-ui/releases/download/latest/ui-bundle.zip output: clean: true