Compare commits
438 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 1171f3cf01 | |||
| dd54f35f29 | |||
| 937a6a84fe | |||
| 1b2a96679c | |||
| 1ec9f3e5f9 | |||
| 2e488208f6 | |||
| 4993dac98f | |||
| a025611420 | |||
| 618fae7759 | |||
| 2bfb6fc731 | |||
| 5edf9e6681 | |||
| aff861f4e7 | |||
| b777304a77 | |||
| 02e9cd6ce5 | |||
| 7aed19ac98 | |||
| 2cf9ed7ca5 | |||
| e14bceb63f | |||
| 82e02a7f96 | |||
| 8257cba30d | |||
| 23899de2b5 | |||
| 95ebc5839b | |||
| ebd46c24d7 | |||
| ffae8000d1 | |||
| f629e540fe | |||
| 79dde8da70 | |||
| cdb9770be2 | |||
| b14b2d06eb | |||
| a6f879e154 | |||
| 7dc5a91f71 | |||
| 6594360638 | |||
| 2f6441132d | |||
| 482319019b | |||
| 449d28e610 | |||
| 9af96d9f9a | |||
| 7cb7b8b6c3 | |||
| 4239ee7d33 | |||
| e2a1ffbd41 | |||
| cc0273d081 | |||
| 6c49e9c68a | |||
| c693c58d25 | |||
| e90e1363ea | |||
| f01e169938 | |||
| 5f7e4ffd7f | |||
| a45f4235ce | |||
| 8663da1e50 | |||
| ceff16bbf9 | |||
| 0e1931754a | |||
| aee189f6c7 | |||
| 46f729b63b | |||
| f4a267536a | |||
| c1d67cc614 | |||
| cc26a503a3 | |||
| 52f3616254 | |||
| e1b7a8cece | |||
| e22443263f | |||
| 779a78262b | |||
| a238f5595d | |||
| 97152de9bf | |||
| e0053e1c06 | |||
| 6c7080b152 | |||
| 6533431c36 | |||
| 0dd00351d4 | |||
| 220296b216 | |||
| 94cd1b1912 | |||
| 8bcc2d352e | |||
| 911ab393c0 | |||
| 063c051cdc | |||
| efdfe2b61c | |||
| 1f6279fa76 | |||
| cff36b7156 | |||
| 85978593fe | |||
| 67e3ecef98 | |||
| ccc66e912b | |||
| 5223bd49ae | |||
| a2eacf4487 | |||
| c1e5ebaed5 | |||
| bba6813fd2 | |||
| d49b70773b | |||
| fc628fcdfc | |||
| 625d8ee694 | |||
| 936c6a2928 | |||
| 3749c2c79b | |||
| 4173bbc41d | |||
| d9c10d0568 | |||
| 8244ec8915 | |||
| f36a9d09f2 | |||
| 5eaac6d59c | |||
| 216b95f8b1 | |||
| 30ad530814 | |||
| 446ecbc454 | |||
| 7620d230df | |||
| 9052bc6ff4 | |||
| 5e1c4f244a | |||
| 65b8c8f9dd | |||
| 85485ba0b6 | |||
| 2cea4d7b8d | |||
| 5044ed712f | |||
| 73f748c4ad | |||
| 2845cbaf76 | |||
| b6f64cb41f | |||
| 9544f25e56 | |||
| 1ffb13cf5d | |||
| d06ed4d7cb | |||
| cfef434019 | |||
| db6631748b | |||
| 9a52aab202 | |||
| 94c5280af4 | |||
| 3cd3ad667b | |||
| fe4dde3610 | |||
| 35518bcfd6 | |||
| d1e726d363 | |||
| ae5af1e213 | |||
| c089214a2a | |||
| 764f34c4f6 | |||
| f7dea13c92 | |||
| 01520d565c | |||
| 5850695284 | |||
| e6802d2b3f | |||
| 22ab251cfa | |||
| beec3028fb | |||
| ea732fa699 | |||
| d086b6c81d | |||
| 6dffc9bc17 | |||
| 3f63375a06 | |||
| 590b4fdff7 | |||
| 4465caafa2 | |||
| 4a1ff0b6da | |||
| fd378c1b12 | |||
| 8e02014b55 | |||
| fceb781058 | |||
| c3d63c57ce | |||
| b8fbd7721d | |||
| a630ee8dce | |||
| 8a68232804 | |||
| 32a4849757 | |||
| bb4f108488 | |||
| 4e7ff6d7f7 | |||
| 6a933b2848 | |||
| 8d114c9e74 | |||
| da46be4c15 | |||
| a3d3517843 | |||
| 52cc18efc0 | |||
| b64d032795 | |||
| 5ebc5be683 | |||
| 34ea298843 | |||
| cc4e2f9e38 | |||
| e7aff760c2 | |||
| d7e249874e | |||
| a1e9c6f71d | |||
| 736fb4c162 | |||
| 1ecdefd0e6 | |||
| 058b69eef0 | |||
| 08ec513f29 | |||
| 05fea4550b | |||
| ead1bc3e8c | |||
| 361030a65a | |||
| 8aab02310a | |||
| 6f42e8cd33 | |||
| dd180104ca | |||
| 2357bcbbbd | |||
| 1a2b08a756 | |||
| 163d02e2a7 | |||
| 9fb7d5bca7 | |||
| b71c037246 | |||
| c130079dad | |||
| d4c0d15f90 | |||
| a2d795ffe2 | |||
| 342d753474 | |||
| 78cc1d23f2 | |||
| 5d61b806d6 | |||
| 3be505f9c2 | |||
| eea7f629d1 | |||
| 7b71f59bab | |||
| 4023f1e582 | |||
| 2893d1b926 | |||
| a62bb3a581 | |||
| f92865e2a2 | |||
| 67541f21f6 | |||
| 7c79521cbe | |||
| a845e0f73a | |||
| 31e8ed42a1 | |||
| 723b9f49f1 | |||
| 9add64f30e | |||
| ccbc5fc273 | |||
| 058f7d5664 | |||
| 8e9d89a92a | |||
| aa25a65934 | |||
| 0d0f3d3ab1 | |||
| 3f0533b260 | |||
| 71add5561a | |||
| 92d5fbb151 | |||
| ec65f180dd | |||
| f108ed98e3 | |||
| c0ded72564 | |||
| b04f6d57b4 | |||
| 9f63e667c4 | |||
| aa18769853 | |||
| b40279e376 | |||
| 64db80213f | |||
| e60492c186 | |||
| 6b87390a64 | |||
| 8362025643 | |||
| cb43fca83d | |||
| e1b957e17b | |||
| 0f48549769 | |||
| 6215814ac5 | |||
| 6df488df21 | |||
| 544357d002 | |||
| 1112b9e9a5 | |||
| 6fc730ea4c | |||
| 3c0c373083 | |||
| e90f267baa | |||
| 6fbf22ef5e | |||
| 594016110d | |||
| e133c3fade | |||
| e8a67a7a46 | |||
| 5945af5547 | |||
| b61c13c8eb | |||
| f060475189 | |||
| 693eb6926e | |||
| 271f70b66a | |||
| 338c9e4a8d | |||
| 0fe76a9433 | |||
| 4f5f9ae98b | |||
| f380c6e190 | |||
| 124cffad4f | |||
| 9eb0fe3644 | |||
| 8c777145f2 | |||
| 8ba7de87f5 | |||
| 0a2665a0b3 | |||
| 2ac1d86051 | |||
| 10664e9529 | |||
| a09107af7a | |||
| 16265dbd66 | |||
| 5302024156 | |||
| 4dc224fa2c | |||
| 5a7b145ebc | |||
| 7f1b980dcf | |||
| 582ec1294a | |||
| 033a654389 | |||
| 9bce24bf0f | |||
| 4bf4cee870 | |||
| 5dd7513390 | |||
| 4f75acab2b | |||
| ea19bc58c5 | |||
| b37d4925b7 | |||
| 3154e09e43 | |||
| 681b3190c5 | |||
| 8de89b2103 | |||
| d133fce5b5 | |||
| 51c45b563c | |||
| f5ec8948ad | |||
| ee139ef4e9 | |||
| d86cdb96c6 | |||
| 60df95f5ed | |||
| aa8f76d7d0 | |||
| 64ccc1ef87 | |||
| 1a5d5a22e0 | |||
| d11c6b63c7 | |||
| 958f18c37b | |||
| c43144fc7d | |||
| 4c1452fbda | |||
| f13b2fb103 | |||
| 4c34216305 | |||
| ca3e1a531a | |||
| 3f33f78418 | |||
| 1891ae121d | |||
| 5ee989bfb4 | |||
| aeb5047c46 | |||
| 1e699aaf59 | |||
| 93db067918 | |||
| d51522750e | |||
| 03774ad77c | |||
| 3331af53cc | |||
| 90a551d570 | |||
| 2dd05ab1f1 | |||
| ad622e54d5 | |||
| 3f8e8d2ccc | |||
| f0824db9c7 | |||
| d2cb90bda2 | |||
| 70d786916a | |||
| 1612d025cf | |||
| 6601117440 | |||
| 6012450017 | |||
| af313a79e8 | |||
| 9695c021c2 | |||
| 87ae14eddf | |||
| 81925a7cb2 | |||
| a289fdd2d7 | |||
| b29c0cca24 | |||
| eaad30c346 | |||
| fd73d3a991 | |||
| 81057f6191 | |||
| a6c309f033 | |||
| e2de16a047 | |||
| 1b0eb2bebd | |||
| 6f1393d34b | |||
| 90e2146146 | |||
| bd82cc7202 | |||
| 3f16a3c297 | |||
| 779b53285d | |||
| a723b38907 | |||
| c964a9a9a9 | |||
| 980378de1d | |||
| 993d5d4a6d | |||
| 7f2fdd8843 | |||
| 0a568e8a18 | |||
| 81b844e0d1 | |||
| e5b0941c64 | |||
| f110d3feba | |||
| 6c8b1fa80e | |||
| 9f6df9171b | |||
| 701c1a9d50 | |||
| 3d512133d3 | |||
| ab0d7c007d | |||
| c5808d0d10 | |||
| b64ab5fba8 | |||
| 14c57ee708 | |||
| 88f7d5bf84 | |||
| 887d63663d | |||
| 242b367682 | |||
| f54b08c224 | |||
| a77bab2f95 | |||
| 1334055ab8 | |||
| 24dc742f87 | |||
| ae48a27786 | |||
| c4f4c5a3fb | |||
| 8c4a52e3ff | |||
| 8314fc5d36 | |||
| d9d222d18a | |||
| 0e40457b86 | |||
| 5ad549a72f | |||
| b09fa57c16 | |||
| a9ba1fe7e1 | |||
| 59d8b9efde | |||
| 2bb0e5c62f | |||
| 487de9a816 | |||
| d772f6991c | |||
| e42f511412 | |||
| efe35517f7 | |||
| b183c792ba | |||
| ef41104e3e | |||
| 0492e0f1d4 | |||
| 7bf82fc312 | |||
| 51fa2e3b19 | |||
| b454156f57 | |||
| cfe1215616 | |||
| 3f77b543e3 | |||
| 18b91ba2e1 | |||
| 5de3028f66 | |||
| 5a493b12e3 | |||
| 2ac63364fb | |||
| d0337689db | |||
| 2fccd090b3 | |||
| 72e0618f20 | |||
| 20a0b9cbaf | |||
| 36e0b02712 | |||
| ad12af8d06 | |||
| 23a7f8ce3b | |||
| 07c0a5f317 | |||
| 865b340077 | |||
| bdb75b2e6f | |||
| a671c517b0 | |||
| dfb9cd8738 | |||
| f721e70046 | |||
| 9c1497a91f | |||
| 9310dbab7a | |||
| 7ee706ac14 | |||
| d5fb639de1 | |||
| c69be30db4 | |||
| 0e889da4a8 | |||
| 41fa99ac46 | |||
| 64d79beb26 | |||
| 5aa799cdc0 | |||
| 02d077bd49 | |||
| db8636ac1a | |||
| addd678682 | |||
| 5f0c406e42 | |||
| 3c54925d5f | |||
| 82d8ff83d1 | |||
| 816d5299de | |||
| 5260c18b89 | |||
| 9bdad442f8 | |||
| b27455b922 | |||
| 46ebe16c83 | |||
| 58b31a9d24 | |||
| fdd38b46e3 | |||
| 85849767f2 | |||
| 7017b3e675 | |||
| f6ec297df6 | |||
| 0483064f07 | |||
| 80d58f0162 | |||
| 587057b0ed | |||
| 1cb7ccfb45 | |||
| 012d1c911f | |||
| e87721594a | |||
| fa295625ab | |||
| 265e9060f8 | |||
| 52406d53e6 | |||
| 94fe48c998 | |||
| 6daea857ab | |||
| f7d0c74b10 | |||
| e5ef58b7b9 | |||
| 57a30e9bbe | |||
| a2915d4e22 | |||
| c998680348 | |||
| 24f8b04908 | |||
| 8766a90cff | |||
| d481515081 | |||
| 1c4d43923a | |||
| f06b8da249 | |||
| 32bf74af16 | |||
| 083a9d8fb2 | |||
| 304196eec5 | |||
| d1aac16a72 | |||
| bf59b637c5 | |||
| 658b20aef5 | |||
| 53ad3a58ab | |||
| eda8a4169b | |||
| 7fdb16affc | |||
| c14f024fa2 | |||
| d01f9e5fd5 | |||
| 156013a711 | |||
| 09ee265353 | |||
| eaa6d96cf7 | |||
| 6326b87319 | |||
| 31df9c4d3c | |||
| 39dee92f80 | |||
| 296096e069 | |||
| cc75294eb6 | |||
| bd3df759fb | |||
| c5fbd969dd | |||
| 995b23e818 | |||
| e981619c01 | |||
| cc3a2c351a | |||
| 1a303663dd | |||
| e86ba2b85d | |||
| 1d767ebff5 |
+1
-1511
File diff suppressed because it is too large
Load Diff
+9
-1
@@ -28,7 +28,15 @@
|
||||
/apps/weather_status/appinfo/info.xml @julien-nc @juliushaertl
|
||||
/apps/workflowengine/appinfo/info.xml @blizzz @juliushaertl
|
||||
|
||||
# Frontend expertise
|
||||
/apps/files/src @skjnldsv
|
||||
/apps/files_external/src @skjnldsv
|
||||
/apps/files_reminders/src @skjnldsv
|
||||
/apps/files_sharing/src/actions @skjnldsv
|
||||
/apps/files_trashbin/src @skjnldsv
|
||||
|
||||
# Security team
|
||||
/resources/codesigning @mgallien @miaulalala @nickvergessen
|
||||
/resources/config/ca-bundle.crt @ChristophWurst @miaulalala @nickvergessen
|
||||
/.drone.yml @nickvergessen
|
||||
|
||||
@@ -43,7 +51,7 @@
|
||||
/core/routes.php @Altahrim
|
||||
|
||||
# OpenAPI
|
||||
openapi.json @provokateurin
|
||||
openapi*.json @provokateurin
|
||||
ResponseDefinitions.php @provokateurin
|
||||
|
||||
# Talk team
|
||||
|
||||
@@ -23,7 +23,7 @@ jobs:
|
||||
require: write
|
||||
|
||||
- name: Add reaction on start
|
||||
uses: peter-evans/create-or-update-comment@23ff15729ef2fc348714a3bb66d2f655ca9066f2 # v3.1.0
|
||||
uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4.0.0
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
repository: ${{ github.event.repository.full_name }}
|
||||
@@ -39,9 +39,9 @@ jobs:
|
||||
id: git-path
|
||||
run: |
|
||||
if ${{ startsWith(steps.command.outputs.arg1, '/') }}; then
|
||||
echo "path=${{ github.workspace }}${{steps.command.outputs.arg1}}" >> $GITHUB_OUTPUT
|
||||
echo "path=${{steps.command.outputs.arg1}}" >> $GITHUB_OUTPUT
|
||||
else
|
||||
echo "path=${{ github.workspace }}${{steps.command.outputs.arg2}}" >> $GITHUB_OUTPUT
|
||||
echo "path=${{steps.command.outputs.arg2}}" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
|
||||
- name: Init branch
|
||||
@@ -54,13 +54,13 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Restore cached git repository
|
||||
uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 # v3.3.2
|
||||
uses: buildjet/cache@e376f15c6ec6dc595375c78633174c7e5f92dc0e # v3
|
||||
with:
|
||||
path: .git
|
||||
key: git-repo
|
||||
|
||||
- name: Checkout ${{ needs.init.outputs.head_ref }}
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v3.6.0
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
fetch-depth: 0
|
||||
@@ -79,7 +79,7 @@ jobs:
|
||||
fallbackNpm: '^9'
|
||||
|
||||
- name: Set up node ${{ steps.package-engines-versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v4.0.0
|
||||
uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v3
|
||||
with:
|
||||
node-version: ${{ steps.package-engines-versions.outputs.nodeVersion }}
|
||||
cache: npm
|
||||
@@ -98,26 +98,26 @@ jobs:
|
||||
- name: Commit and push default
|
||||
if: ${{ needs.init.outputs.arg1 != 'fixup' && needs.init.outputs.arg1 != 'amend' }}
|
||||
run: |
|
||||
git add ${{ needs.init.outputs.git_path }}
|
||||
git add ${{ github.workspace }}${{ needs.init.outputs.git_path }}
|
||||
git commit --signoff -m 'chore(assets): Recompile assets'
|
||||
git push origin ${{ needs.init.outputs.head_ref }}
|
||||
|
||||
- name: Commit and push fixup
|
||||
if: ${{ needs.init.outputs.arg1 == 'fixup' }}
|
||||
run: |
|
||||
git add ${{ needs.init.outputs.git_path }}
|
||||
git add ${{ github.workspace }}${{ needs.init.outputs.git_path }}
|
||||
git commit --fixup=HEAD --signoff
|
||||
git push origin ${{ needs.init.outputs.head_ref }}
|
||||
|
||||
- name: Commit and push amend
|
||||
if: ${{ needs.init.outputs.arg1 == 'amend' }}
|
||||
run: |
|
||||
git add ${{ needs.init.outputs.git_path }}
|
||||
git add ${{ github.workspace }}${{ needs.init.outputs.git_path }}
|
||||
git commit --amend --no-edit --signoff
|
||||
git push --force origin ${{ needs.init.outputs.head_ref }}
|
||||
|
||||
- name: Add reaction on failure
|
||||
uses: peter-evans/create-or-update-comment@23ff15729ef2fc348714a3bb66d2f655ca9066f2 # v3.1.0
|
||||
uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4.0.0
|
||||
if: failure()
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
|
||||
@@ -18,7 +18,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Add reaction on start
|
||||
uses: peter-evans/create-or-update-comment@23ff15729ef2fc348714a3bb66d2f655ca9066f2 # v3.0.1
|
||||
uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v3.0.1
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
repository: ${{ github.event.repository.full_name }}
|
||||
@@ -51,7 +51,7 @@ jobs:
|
||||
git push
|
||||
|
||||
- name: Add reaction on failure
|
||||
uses: peter-evans/create-or-update-comment@23ff15729ef2fc348714a3bb66d2f655ca9066f2 # v3.0.1
|
||||
uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v3.0.1
|
||||
if: failure()
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
|
||||
@@ -23,7 +23,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Add reaction on start
|
||||
uses: peter-evans/create-or-update-comment@23ff15729ef2fc348714a3bb66d2f655ca9066f2 # v3.0.1
|
||||
uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v3.0.1
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
repository: ${{ github.event.repository.full_name }}
|
||||
@@ -42,7 +42,7 @@ jobs:
|
||||
GITHUB_TOKEN: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
|
||||
- name: Add reaction on failure
|
||||
uses: peter-evans/create-or-update-comment@23ff15729ef2fc348714a3bb66d2f655ca9066f2 # v3.0.1
|
||||
uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v3.0.1
|
||||
if: failure()
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
|
||||
@@ -47,7 +47,7 @@ jobs:
|
||||
fallbackNpm: "^9"
|
||||
|
||||
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v4.0.0
|
||||
uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1
|
||||
with:
|
||||
node-version: ${{ steps.versions.outputs.nodeVersion }}
|
||||
|
||||
@@ -77,10 +77,10 @@ jobs:
|
||||
matrix:
|
||||
# Run multiple copies of the current job in parallel
|
||||
# Please increase the number or runners as your tests suite grows (0 based index for e2e tests)
|
||||
containers: ["component", 0, 1, 2]
|
||||
containers: ["component", 0, 1, 2, 3, 4, 5]
|
||||
# Hack as strategy.job-total includes the component and GitHub does not allow math expressions
|
||||
# Always aling this number with the total of e2e runners (max. index + 1)
|
||||
total-containers: [3]
|
||||
total-containers: [6]
|
||||
|
||||
name: runner ${{ matrix.containers }}
|
||||
|
||||
@@ -93,7 +93,7 @@ jobs:
|
||||
path: ./
|
||||
|
||||
- name: Set up node ${{ needs.init.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v4.0.0
|
||||
uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1
|
||||
with:
|
||||
node-version: ${{ needs.init.outputs.nodeVersion }}
|
||||
|
||||
@@ -121,7 +121,7 @@ jobs:
|
||||
SPLIT_INDEX: ${{ matrix.containers == 'component' && 0 || matrix.containers }}
|
||||
|
||||
- name: Upload snapshots
|
||||
uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3
|
||||
uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0
|
||||
if: always()
|
||||
with:
|
||||
name: snapshots_${{ matrix.containers }}
|
||||
@@ -132,7 +132,7 @@ jobs:
|
||||
run: docker logs nextcloud-cypress-tests-${{ env.APP_NAME }} > nextcloud.log
|
||||
|
||||
- name: Upload NC logs
|
||||
uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3
|
||||
uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0
|
||||
if: failure() && matrix.containers != 'component'
|
||||
with:
|
||||
name: nc_logs_${{ matrix.containers }}
|
||||
@@ -143,7 +143,7 @@ jobs:
|
||||
run: docker exec nextcloud-cypress-tests-server tar -cvjf - data > data.tar
|
||||
|
||||
- name: Upload data dir archive
|
||||
uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3
|
||||
uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0
|
||||
if: failure() && matrix.containers != 'component'
|
||||
with:
|
||||
name: nc_data_${{ matrix.containers }}
|
||||
|
||||
@@ -0,0 +1,186 @@
|
||||
name: PHPUnit files_external S3
|
||||
on:
|
||||
pull_request:
|
||||
schedule:
|
||||
- cron: "5 2 * * *"
|
||||
|
||||
concurrency:
|
||||
group: files-external-s3-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
changes:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
outputs:
|
||||
src: ${{ steps.changes.outputs.src}}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@0bc4621a3135347011ad047f9ecf449bf72ce2bd # v3.0.0
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
filters: |
|
||||
src:
|
||||
- '.github/workflows/**'
|
||||
- '3rdparty/**'
|
||||
- 'apps/files_external/**'
|
||||
- 'vendor/**'
|
||||
- 'vendor-bin/**'
|
||||
- '.php-cs-fixer.dist.php'
|
||||
- 'composer.json'
|
||||
- 'composer.lock'
|
||||
- '**.php'
|
||||
|
||||
files-external-s3-minio:
|
||||
runs-on: ubuntu-latest
|
||||
needs: changes
|
||||
|
||||
if: ${{ github.repository_owner != 'nextcloud-gmbh' && needs.changes.outputs.src != 'false' }}
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
php-versions: ['8.0', '8.1', '8.2', '8.3']
|
||||
include:
|
||||
- php-versions: '8.3'
|
||||
coverage: true
|
||||
|
||||
name: php${{ matrix.php-versions }}-s3
|
||||
|
||||
services:
|
||||
minio:
|
||||
image: bitnami/minio
|
||||
env:
|
||||
MINIO_ROOT_USER: nextcloud
|
||||
MINIO_ROOT_PASSWORD: bWluaW8tc2VjcmV0LWtleS1uZXh0Y2xvdWQ=
|
||||
MINIO_DEFAULT_BUCKETS: nextcloud
|
||||
ports:
|
||||
- "9000:9000"
|
||||
|
||||
steps:
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@4bd44f22a98a19e0950cbad5f31095157cc9621b # v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
# 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, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
|
||||
coverage: ${{ matrix.coverage && 'xdebug' || 'none' }}
|
||||
ini-file: development
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Set up Nextcloud
|
||||
env:
|
||||
OBJECT_STORE_KEY: nextcloud
|
||||
OBJECT_STORE_SECRET: bWluaW8tc2VjcmV0LWtleS1uZXh0Y2xvdWQ=
|
||||
run: |
|
||||
composer install
|
||||
./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-host=127.0.0.1 --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass password
|
||||
./occ app:enable --force files_external
|
||||
echo "<?php return ['run' => true, 'secret' => 'actually-not-secret', 'passwordsalt' => 'actually-not-secret', 'hostname' => 'localhost','key' => '$OBJECT_STORE_KEY','secret' => '$OBJECT_STORE_SECRET', 'bucket' => 'bucket', 'port' => 9000, 'use_ssl' => false, 'autocreate' => true, 'use_path_style' => true];" > apps/files_external/tests/config.amazons3.php
|
||||
|
||||
- name: Wait for S3
|
||||
run: |
|
||||
sleep 10
|
||||
curl -f -m 1 --retry-connrefused --retry 10 --retry-delay 10 http://localhost:9000/minio/health/ready
|
||||
|
||||
- name: PHPUnit
|
||||
run: composer run test:files_external -- \
|
||||
apps/files_external/tests/Storage/Amazons3Test.php \
|
||||
apps/files_external/tests/Storage/VersionedAmazonS3Test.php \
|
||||
${{ matrix.coverage && ' --coverage-clover ./clover.xml' || '' }}
|
||||
|
||||
- name: Upload code coverage
|
||||
if: ${{ !cancelled() && matrix.coverage }}
|
||||
uses: codecov/codecov-action@v3
|
||||
with:
|
||||
files: ./clover.xml
|
||||
flags: phpunit-files-external-s3
|
||||
|
||||
- name: S3 logs
|
||||
if: always()
|
||||
run: |
|
||||
docker ps -a
|
||||
docker ps -aq | while read container ; do IMAGE=$(docker inspect --format='{{.Config.Image}}' $container); echo $IMAGE; docker logs $container; echo "\n\n" ; done
|
||||
|
||||
files-external-s3-localstack:
|
||||
runs-on: ubuntu-latest
|
||||
needs: changes
|
||||
|
||||
if: ${{ github.repository_owner != 'nextcloud-gmbh' && needs.changes.outputs.src != 'false' }}
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
php-versions: ['8.0', '8.1', '8.2', '8.3']
|
||||
include:
|
||||
- php-versions: '8.3'
|
||||
coverage: true
|
||||
|
||||
name: php${{ matrix.php-versions }}-s3
|
||||
|
||||
services:
|
||||
localstack:
|
||||
env:
|
||||
SERVICES: s3
|
||||
DEBUG: 1
|
||||
image: localstack/localstack
|
||||
ports:
|
||||
- "4566:4566"
|
||||
|
||||
steps:
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@4bd44f22a98a19e0950cbad5f31095157cc9621b # v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
# 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, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
|
||||
coverage: ${{ matrix.coverage && 'xdebug' || 'none' }}
|
||||
ini-file: development
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Set up Nextcloud
|
||||
run: |
|
||||
composer install
|
||||
./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-host=127.0.0.1 --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass password
|
||||
./occ app:enable --force files_external
|
||||
echo "<?php return ['run' => true,'hostname' => 'localhost','key' => 'ignored','secret' => 'ignored', 'bucket' => 'bucket', 'port' => 4566, 'use_ssl' => false, 'autocreate' => true, 'use_path_style' => true];" > apps/files_external/tests/config.amazons3.php
|
||||
|
||||
- name: PHPUnit
|
||||
run: composer run test:files_external -- \
|
||||
apps/files_external/tests/Storage/Amazons3Test.php \
|
||||
apps/files_external/tests/Storage/VersionedAmazonS3Test.php \
|
||||
${{ matrix.coverage && ' --coverage-clover ./clover.xml' || '' }}
|
||||
|
||||
- name: Upload code coverage
|
||||
if: ${{ !cancelled() && matrix.coverage }}
|
||||
uses: codecov/codecov-action@v3
|
||||
with:
|
||||
files: ./clover.xml
|
||||
flags: phpunit-files-external-s3
|
||||
|
||||
- name: S3 logs
|
||||
if: always()
|
||||
run: |
|
||||
docker ps -a
|
||||
docker ps -aq | while read container ; do IMAGE=$(docker inspect --format='{{.Config.Image}}' $container); echo $IMAGE; docker logs $container; echo "\n\n" ; done
|
||||
|
||||
s3-external-summary:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [changes, files-external-s3-minio, files-external-s3-localstack]
|
||||
|
||||
if: always()
|
||||
|
||||
steps:
|
||||
- name: Summary status
|
||||
run: if ${{ needs.changes.outputs.src != 'false' && needs.files-external-s3-minio.result != 'success' && needs.files-external-s3-localstack.result != 'success' }}; then exit 1; fi
|
||||
+20
-14
@@ -4,6 +4,7 @@ on:
|
||||
paths:
|
||||
- '.github/workflows/**'
|
||||
- '3rdparty/**'
|
||||
- 'build/integration/**'
|
||||
- '**/*.php'
|
||||
- '**/lib/**'
|
||||
- '**/tests/**'
|
||||
@@ -13,12 +14,12 @@ on:
|
||||
- 'composer.lock'
|
||||
|
||||
concurrency:
|
||||
group: s3-external-integration-${{ github.head_ref || github.run_id }}
|
||||
group: integration-s3-primary-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
s3-primary-integration-tests-minio:
|
||||
runs-on: ubuntu-20.04
|
||||
integration-s3-primary:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
|
||||
|
||||
@@ -33,14 +34,16 @@ jobs:
|
||||
|
||||
services:
|
||||
redis:
|
||||
image: redis
|
||||
image: ghcr.io/nextcloud/continuous-integration-redis:latest
|
||||
options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
|
||||
ports:
|
||||
- "6379:6379"
|
||||
- 6379:6379/tcp
|
||||
minio:
|
||||
image: bitnami/minio
|
||||
env:
|
||||
MINIO_ACCESS_KEY: minio
|
||||
MINIO_SECRET_KEY: minio123
|
||||
image: bitnami/minio:2021.12.29
|
||||
MINIO_ROOT_USER: nextcloud
|
||||
MINIO_ROOT_PASSWORD: bWluaW8tc2VjcmV0LWtleS1uZXh0Y2xvdWQ=
|
||||
MINIO_DEFAULT_BUCKETS: nextcloud
|
||||
ports:
|
||||
- "9000:9000"
|
||||
|
||||
@@ -51,10 +54,13 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@c5fc0d8281aba02c7fda07d3a70cc5371548067d #v2.25.2
|
||||
uses: shivammathur/setup-php@4bd44f22a98a19e0950cbad5f31095157cc9621b # v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
extensions: mbstring, fileinfo, intl, sqlite, pdo_sqlite, zip, gd, redis
|
||||
# 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, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
|
||||
coverage: 'none'
|
||||
ini-file: development
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
@@ -66,7 +72,7 @@ jobs:
|
||||
- name: Set up Nextcloud
|
||||
run: |
|
||||
mkdir data
|
||||
echo '<?php $CONFIG=["${{ matrix.key }}" => ["class" => "OC\Files\ObjectStore\S3", "arguments" => ["bucket" => "nextcloud", "autocreate" => true, "key" => "minio", "secret" => "minio123", "hostname" => "localhost", "port" => 9000, "use_ssl" => false, "use_path_style" => true, "uploadPartSize" => 52428800]]];' > config/config.php
|
||||
echo '<?php $CONFIG=["${{ matrix.key }}" => ["class" => "OC\Files\ObjectStore\S3", "arguments" => ["bucket" => "nextcloud", "autocreate" => true, "key" => "nextcloud", "secret" => "bWluaW8tc2VjcmV0LWtleS1uZXh0Y2xvdWQ=", "hostname" => "localhost", "port" => 9000, "use_ssl" => false, "use_path_style" => true, "uploadPartSize" => 52428800]]];' > config/config.php
|
||||
echo '<?php $CONFIG=["redis" => ["host" => "localhost", "port" => 6379], "memcache.local" => "\OC\Memcache\Redis", "memcache.distributed" => "\OC\Memcache\Redis"];' > config/redis.config.php
|
||||
./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-host=127.0.0.1 --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin
|
||||
php -f index.php
|
||||
@@ -74,7 +80,7 @@ jobs:
|
||||
- name: Integration
|
||||
run: |
|
||||
cd build/integration
|
||||
bash run.sh --tags "~@failure-s3" features/webdav-related.feature
|
||||
bash run.sh --tags "~@failure-s3" dav_features/webdav-related.feature
|
||||
|
||||
- name: S3 logs
|
||||
if: always()
|
||||
@@ -86,10 +92,10 @@ jobs:
|
||||
|
||||
s3-primary-integration-summary:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [s3-primary-integration-tests-minio]
|
||||
needs: [integration-s3-primary]
|
||||
|
||||
if: always()
|
||||
|
||||
steps:
|
||||
- name: Summary status
|
||||
run: if ${{ needs.s3-primary-integration-tests-minio.result != 'success' }}; then exit 1; fi
|
||||
run: if ${{ needs.integration-s3-primary.result != 'success' }}; then exit 1; fi
|
||||
@@ -0,0 +1,167 @@
|
||||
name: Integration sqlite
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
- master
|
||||
- stable*
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
concurrency:
|
||||
group: integration-sqlite-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
changes:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
outputs:
|
||||
# FIXME src: ${{ steps.changes.outputs.src}}
|
||||
src: 'true'
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@0bc4621a3135347011ad047f9ecf449bf72ce2bd # v3.0.0
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
filters: |
|
||||
src:
|
||||
- '.github/workflows/**'
|
||||
- '3rdparty/**'
|
||||
- '**/*.php'
|
||||
- '**/lib/**'
|
||||
- '**/tests/**'
|
||||
- '**/vendor-bin/**'
|
||||
- 'build/integration/**'
|
||||
- '.php-cs-fixer.dist.php'
|
||||
- 'composer.json'
|
||||
- 'composer.lock'
|
||||
|
||||
integration-sqlite:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
needs: changes
|
||||
if: needs.changes.outputs.src != 'false'
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
test-suite:
|
||||
- 'capabilities_features'
|
||||
- 'collaboration_features'
|
||||
- 'comments_features'
|
||||
- 'dav_features'
|
||||
- 'features'
|
||||
- 'federation_features'
|
||||
- '--tags ~@large files_features'
|
||||
- 'filesdrop_features'
|
||||
- 'openldap_features'
|
||||
- 'openldap_numerical_features'
|
||||
- 'ldap_features'
|
||||
- 'remoteapi_features'
|
||||
- 'setup_features'
|
||||
- 'sharees_features'
|
||||
- 'sharing_features'
|
||||
- 'videoverification_features'
|
||||
|
||||
php-versions: ['8.2']
|
||||
spreed-versions: ['main']
|
||||
|
||||
services:
|
||||
redis:
|
||||
image: ghcr.io/nextcloud/continuous-integration-redis:latest
|
||||
options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
|
||||
ports:
|
||||
- 6379:6379/tcp
|
||||
openldap:
|
||||
image: ghcr.io/nextcloud/continuous-integration-openldap:openldap-7
|
||||
ports:
|
||||
- 389:389
|
||||
env:
|
||||
SLAPD_DOMAIN: nextcloud.ci
|
||||
SLAPD_ORGANIZATION: Nextcloud
|
||||
SLAPD_PASSWORD: admin
|
||||
SLAPD_ADDITIONAL_MODULES: memberof
|
||||
|
||||
steps:
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
- name: Checkout Talk app
|
||||
if: ${{ matrix.test-suite == 'videoverification_features' }}
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
||||
with:
|
||||
repository: nextcloud/spreed
|
||||
path: apps/spreed
|
||||
ref: ${{ matrix.spreed-versions }}
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@c5fc0d8281aba02c7fda07d3a70cc5371548067d # v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
|
||||
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, imagick, intl, json, ldap, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
|
||||
coverage: none
|
||||
ini-file: development
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Set up production dependencies
|
||||
run: composer i --no-dev
|
||||
|
||||
- name: Set up behat dependencies
|
||||
working-directory: build/integration
|
||||
run: composer i
|
||||
|
||||
- name: Set up Talk dependencies
|
||||
if: ${{ matrix.test-suite == 'videoverification_features' }}
|
||||
working-directory: apps/spreed
|
||||
run: composer i --no-dev
|
||||
|
||||
- name: Set up Nextcloud
|
||||
run: |
|
||||
mkdir data
|
||||
./occ maintenance:install --verbose ${{ contains(matrix.test-suite,'ldap') && '--data-dir=/dev/shm/nc_int' || '' }} --database=sqlite --database-name=nextcloud --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin
|
||||
./occ config:system:set hashing_default_password --value=true --type=boolean
|
||||
|
||||
- name: Configure caching
|
||||
if: ${{ contains(matrix.test-suite,'ldap') }}
|
||||
run: |
|
||||
./occ config:system:set redis host --value=localhost
|
||||
./occ config:system:set redis port --value=6379 --type=integer
|
||||
./occ config:system:set redis timeout --value=0 --type=integer
|
||||
./occ config:system:set memcache.local --value='\OC\Memcache\Redis'
|
||||
./occ config:system:set memcache.distributed --value='\OC\Memcache\Redis'
|
||||
|
||||
- name: Run integration
|
||||
working-directory: build/integration
|
||||
env:
|
||||
LDAP_HOST: localhost
|
||||
run: bash run.sh ${{ matrix.test-suite }} no-tail-log
|
||||
|
||||
- name: Print logs
|
||||
if: always()
|
||||
run: |
|
||||
cat data/nextcloud.log
|
||||
docker ps -a
|
||||
docker ps -aq | while read container ; do IMAGE=$(docker inspect --format='{{.Config.Image}}' $container); echo $IMAGE; docker logs $container; echo "\n\n" ; done
|
||||
|
||||
summary:
|
||||
permissions:
|
||||
contents: none
|
||||
runs-on: ubuntu-latest
|
||||
needs: [changes, integration-sqlite]
|
||||
|
||||
if: always()
|
||||
|
||||
name: integration-sqlite-summary
|
||||
|
||||
steps:
|
||||
- name: Summary status
|
||||
run: if ${{ needs.changes.outputs.src != 'false' && needs.integration-sqlite.result != 'success' }}; then exit 1; fi
|
||||
@@ -26,7 +26,7 @@ jobs:
|
||||
src: ${{ steps.changes.outputs.src}}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@4512585405083f25c027a35db413c2b3b9006d50 # v2.11.1
|
||||
- uses: dorny/paths-filter@0bc4621a3135347011ad047f9ecf449bf72ce2bd # v3.0.0
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
@@ -64,7 +64,7 @@ jobs:
|
||||
fallbackNpm: '^9'
|
||||
|
||||
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v4.0.0
|
||||
uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1
|
||||
with:
|
||||
node-version: ${{ steps.versions.outputs.nodeVersion }}
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ jobs:
|
||||
src: ${{ steps.changes.outputs.src}}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@4512585405083f25c027a35db413c2b3b9006d50 # v2.11.1
|
||||
- uses: dorny/paths-filter@0bc4621a3135347011ad047f9ecf449bf72ce2bd # v3.0.0
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
|
||||
@@ -23,7 +23,7 @@ jobs:
|
||||
src: ${{ steps.changes.outputs.src}}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@4512585405083f25c027a35db413c2b3b9006d50 # v2.11.1
|
||||
- uses: dorny/paths-filter@0bc4621a3135347011ad047f9ecf449bf72ce2bd # v3.0.0
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
|
||||
@@ -17,7 +17,7 @@ jobs:
|
||||
src: ${{ steps.changes.outputs.src}}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@4512585405083f25c027a35db413c2b3b9006d50 # v2.11.1
|
||||
- uses: dorny/paths-filter@0bc4621a3135347011ad047f9ecf449bf72ce2bd # v3.0.0
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
@@ -72,7 +72,7 @@ jobs:
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
|
||||
|
||||
- name: Set up node ${{ needs.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65
|
||||
uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8
|
||||
with:
|
||||
node-version: ${{ needs.versions.outputs.nodeVersion }}
|
||||
|
||||
@@ -107,7 +107,7 @@ jobs:
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
|
||||
|
||||
- name: Set up node ${{ needs.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65
|
||||
uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8
|
||||
with:
|
||||
node-version: ${{ needs.versions.outputs.nodeVersion }}
|
||||
|
||||
@@ -138,7 +138,7 @@ jobs:
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
|
||||
|
||||
- name: Set up node ${{ needs.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65
|
||||
uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8
|
||||
with:
|
||||
node-version: ${{ needs.versions.outputs.nodeVersion }}
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ jobs:
|
||||
src: ${{ steps.changes.outputs.src}}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@4512585405083f25c027a35db413c2b3b9006d50 # v2.11.1
|
||||
- uses: dorny/paths-filter@0bc4621a3135347011ad047f9ecf449bf72ce2bd # v3.0.0
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
@@ -58,7 +58,7 @@ jobs:
|
||||
fallbackNpm: '^9'
|
||||
|
||||
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v4.0.0
|
||||
uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1
|
||||
with:
|
||||
node-version: ${{ steps.versions.outputs.nodeVersion }}
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
branches: ["main", "master", "stable28", "stable27", "stable26", "stable25", "stable24"]
|
||||
branches: ["main", "master", "stable28", "stable27", "stable26"]
|
||||
|
||||
name: npm-audit-fix-${{ matrix.branches }}
|
||||
|
||||
@@ -36,7 +36,7 @@ jobs:
|
||||
fallbackNpm: '^9'
|
||||
|
||||
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v4.0.0
|
||||
uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1
|
||||
with:
|
||||
node-version: ${{ steps.versions.outputs.nodeVersion }}
|
||||
|
||||
|
||||
@@ -0,0 +1,125 @@
|
||||
name: Object storage azure
|
||||
on:
|
||||
pull_request:
|
||||
schedule:
|
||||
- cron: "15 2 * * *"
|
||||
|
||||
concurrency:
|
||||
group: object-storage-azure-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
changes:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
outputs:
|
||||
src: ${{ steps.changes.outputs.src}}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@0bc4621a3135347011ad047f9ecf449bf72ce2bd # v3.0.0
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
filters: |
|
||||
src:
|
||||
- '.github/workflows/**'
|
||||
- '3rdparty/**'
|
||||
- '**/appinfo/**'
|
||||
- '**/lib/**'
|
||||
- '**/templates/**'
|
||||
- '**/tests/**'
|
||||
- 'vendor/**'
|
||||
- 'vendor-bin/**'
|
||||
- '.php-cs-fixer.dist.php'
|
||||
- 'composer.json'
|
||||
- 'composer.lock'
|
||||
- '**.php'
|
||||
|
||||
azure-primary-tests:
|
||||
runs-on: ubuntu-latest
|
||||
needs: changes
|
||||
|
||||
if: ${{ github.repository_owner != 'nextcloud-gmbh' && needs.changes.outputs.src != 'false' }}
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
php-versions: ['8.0', '8.1', '8.2', '8.3']
|
||||
include:
|
||||
- php-versions: '8.3'
|
||||
coverage: true
|
||||
|
||||
name: php${{ matrix.php-versions }}-azure
|
||||
|
||||
services:
|
||||
azurite:
|
||||
image: mcr.microsoft.com/azure-storage/azurite
|
||||
env:
|
||||
AZURITE_ACCOUNTS: nextcloud:bmV4dGNsb3Vk
|
||||
ports:
|
||||
- 10000:10000
|
||||
options: --health-cmd="nc 127.0.0.1 10000 -z" --health-interval=1s --health-retries=30
|
||||
|
||||
cache:
|
||||
image: ghcr.io/nextcloud/continuous-integration-redis:latest
|
||||
ports:
|
||||
- 6379:6379/tcp
|
||||
options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
|
||||
|
||||
steps:
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@4bd44f22a98a19e0950cbad5f31095157cc9621b # v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
# 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, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
|
||||
coverage: ${{ matrix.coverage && 'xdebug' || 'none' }}
|
||||
ini-file: development
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Set up Nextcloud
|
||||
env:
|
||||
OBJECT_STORE: azure
|
||||
OBJECT_STORE_KEY: nextcloud
|
||||
OBJECT_STORE_SECRET: bmV4dGNsb3Vk
|
||||
run: |
|
||||
composer install
|
||||
cp tests/redis.config.php config/
|
||||
cp tests/preseed-config.php config/config.php
|
||||
./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-host=127.0.0.1 --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass password
|
||||
php -f tests/enable_all.php | grep -i -C9999 error && echo "Error during app setup" && exit 1 || exit 0
|
||||
|
||||
- name: PHPUnit
|
||||
env:
|
||||
OBJECT_STORE: azure
|
||||
OBJECT_STORE_KEY: nextcloud
|
||||
OBJECT_STORE_SECRET: bmV4dGNsb3Vk
|
||||
run: composer run test -- --group PRIMARY-azure ${{ matrix.coverage && ' --coverage-clover ./clover.xml' || '' }}
|
||||
|
||||
- name: Upload code coverage
|
||||
if: ${{ !cancelled() && matrix.coverage }}
|
||||
uses: codecov/codecov-action@v3
|
||||
with:
|
||||
files: ./clover.xml
|
||||
flags: phpunit-azure
|
||||
|
||||
- name: Azurite logs
|
||||
if: always()
|
||||
run: |
|
||||
docker ps -a
|
||||
docker ps -aq | while read container ; do IMAGE=$(docker inspect --format='{{.Config.Image}}' $container); echo $IMAGE; docker logs $container; echo "\n\n" ; done
|
||||
|
||||
azure-primary-summary:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [changes, azure-primary-tests]
|
||||
|
||||
if: always()
|
||||
|
||||
steps:
|
||||
- name: Summary status
|
||||
run: if ${{ needs.changes.outputs.src != 'false' && needs.azure-primary-tests.result != 'success' }}; then exit 1; fi
|
||||
@@ -0,0 +1,131 @@
|
||||
name: Object storage S3
|
||||
on:
|
||||
pull_request:
|
||||
schedule:
|
||||
- cron: "15 2 * * *"
|
||||
|
||||
concurrency:
|
||||
group: object-storage-s3-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
changes:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
outputs:
|
||||
src: ${{ steps.changes.outputs.src}}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@0bc4621a3135347011ad047f9ecf449bf72ce2bd # v3.0.0
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
filters: |
|
||||
src:
|
||||
- '.github/workflows/**'
|
||||
- '3rdparty/**'
|
||||
- '**/appinfo/**'
|
||||
- '**/lib/**'
|
||||
- '**/templates/**'
|
||||
- '**/tests/**'
|
||||
- 'vendor/**'
|
||||
- 'vendor-bin/**'
|
||||
- '.php-cs-fixer.dist.php'
|
||||
- 'composer.json'
|
||||
- 'composer.lock'
|
||||
- '**.php'
|
||||
|
||||
s3-primary-tests-minio:
|
||||
runs-on: ubuntu-22.04
|
||||
needs: changes
|
||||
|
||||
if: ${{ github.repository_owner != 'nextcloud-gmbh' && needs.changes.outputs.src != 'false' }}
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
php-versions: ['8.0', '8.1', '8.2', '8.3']
|
||||
include:
|
||||
- php-versions: '8.3'
|
||||
coverage: true
|
||||
|
||||
name: php${{ matrix.php-versions }}-s3
|
||||
|
||||
services:
|
||||
cache:
|
||||
image: ghcr.io/nextcloud/continuous-integration-redis:latest
|
||||
ports:
|
||||
- 6379:6379/tcp
|
||||
options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
|
||||
|
||||
minio:
|
||||
image: bitnami/minio
|
||||
env:
|
||||
MINIO_ROOT_USER: nextcloud
|
||||
MINIO_ROOT_PASSWORD: bWluaW8tc2VjcmV0LWtleS1uZXh0Y2xvdWQ=
|
||||
MINIO_DEFAULT_BUCKETS: nextcloud
|
||||
ports:
|
||||
- "9000:9000"
|
||||
|
||||
steps:
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@4bd44f22a98a19e0950cbad5f31095157cc9621b # v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
# 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, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
|
||||
coverage: ${{ matrix.coverage && 'xdebug' || 'none' }}
|
||||
ini-file: development
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Set up Nextcloud
|
||||
env:
|
||||
OBJECT_STORE: s3
|
||||
OBJECT_STORE_KEY: nextcloud
|
||||
OBJECT_STORE_SECRET: bWluaW8tc2VjcmV0LWtleS1uZXh0Y2xvdWQ=
|
||||
run: |
|
||||
composer install
|
||||
cp tests/redis.config.php config/
|
||||
cp tests/preseed-config.php config/config.php
|
||||
./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-host=127.0.0.1 --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass password
|
||||
php -f tests/enable_all.php | grep -i -C9999 error && echo "Error during app setup" && exit 1 || exit 0
|
||||
|
||||
- name: Wait for S3
|
||||
run: |
|
||||
sleep 10
|
||||
curl -f -m 1 --retry-connrefused --retry 10 --retry-delay 10 http://localhost:9000/minio/health/ready
|
||||
|
||||
- name: PHPUnit
|
||||
env:
|
||||
OBJECT_STORE: s3
|
||||
OBJECT_STORE_KEY: nextcloud
|
||||
OBJECT_STORE_SECRET: bWluaW8tc2VjcmV0LWtleS1uZXh0Y2xvdWQ=
|
||||
run: composer run test -- --group PRIMARY-s3 ${{ matrix.coverage && ' --coverage-clover ./clover.xml' || '' }}
|
||||
|
||||
- name: Upload code coverage
|
||||
if: ${{ !cancelled() && matrix.coverage }}
|
||||
uses: codecov/codecov-action@v3
|
||||
with:
|
||||
files: ./clover.xml
|
||||
flags: phpunit-s3
|
||||
|
||||
- name: S3 logs
|
||||
if: always()
|
||||
run: |
|
||||
docker ps -a
|
||||
docker ps -aq | while read container ; do IMAGE=$(docker inspect --format='{{.Config.Image}}' $container); echo $IMAGE; docker logs $container; echo "\n\n" ; done
|
||||
|
||||
s3-primary-summary:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [changes,s3-primary-tests-minio]
|
||||
|
||||
if: always()
|
||||
|
||||
steps:
|
||||
- name: Summary status
|
||||
run: if ${{ needs.changes.outputs.src != 'false' && needs.s3-primary-tests-minio.result != 'success' }}; then exit 1; fi
|
||||
@@ -0,0 +1,121 @@
|
||||
name: Object storage Swift
|
||||
on:
|
||||
pull_request:
|
||||
schedule:
|
||||
- cron: "15 2 * * *"
|
||||
|
||||
concurrency:
|
||||
group: object-storage-swift-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
changes:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
outputs:
|
||||
src: ${{ steps.changes.outputs.src}}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@0bc4621a3135347011ad047f9ecf449bf72ce2bd # v3.0.0
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
filters: |
|
||||
src:
|
||||
- '.github/workflows/**'
|
||||
- '3rdparty/**'
|
||||
- '**/appinfo/**'
|
||||
- '**/lib/**'
|
||||
- '**/templates/**'
|
||||
- '**/tests/**'
|
||||
- 'vendor/**'
|
||||
- 'vendor-bin/**'
|
||||
- '.php-cs-fixer.dist.php'
|
||||
- 'composer.json'
|
||||
- 'composer.lock'
|
||||
- '**.php'
|
||||
|
||||
swift-primary-tests:
|
||||
runs-on: ubuntu-latest
|
||||
needs: changes
|
||||
|
||||
if: ${{ github.repository_owner != 'nextcloud-gmbh' && needs.changes.outputs.src != 'false' }}
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
php-versions: ['8.0', '8.1', '8.2', '8.3']
|
||||
include:
|
||||
- php-versions: '8.3'
|
||||
coverage: true
|
||||
|
||||
name: php${{ matrix.php-versions }}-swift
|
||||
|
||||
services:
|
||||
cache:
|
||||
image: ghcr.io/nextcloud/continuous-integration-redis:latest
|
||||
ports:
|
||||
- 6379:6379/tcp
|
||||
options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
|
||||
|
||||
swift:
|
||||
image: ghcr.io/cscfi/docker-keystone-swift
|
||||
ports:
|
||||
- 5000:5000
|
||||
- 8080:8080
|
||||
|
||||
steps:
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@4bd44f22a98a19e0950cbad5f31095157cc9621b # v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
# 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, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
|
||||
coverage: ${{ matrix.coverage && 'xdebug' || 'none' }}
|
||||
ini-file: development
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Set up Nextcloud
|
||||
env:
|
||||
OBJECT_STORE: swift
|
||||
OBJECT_STORE_SECRET: veryfast
|
||||
run: |
|
||||
composer install
|
||||
cp tests/redis.config.php config/
|
||||
cp tests/preseed-config.php config/config.php
|
||||
./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-host=127.0.0.1 --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass password
|
||||
php -f tests/enable_all.php | grep -i -C9999 error && echo "Error during app setup" && exit 1 || exit 0
|
||||
|
||||
- name: PHPUnit
|
||||
env:
|
||||
OBJECT_STORE: swift
|
||||
OBJECT_STORE_SECRET: veryfast
|
||||
run: composer run test -- --group PRIMARY-swift ${{ matrix.coverage && ' --coverage-clover ./clover.xml' || '' }}
|
||||
|
||||
- name: Upload code coverage
|
||||
if: ${{ !cancelled() && matrix.coverage }}
|
||||
uses: codecov/codecov-action@v3
|
||||
with:
|
||||
files: ./clover.xml
|
||||
flags: phpunit-swift
|
||||
|
||||
- name: Swift logs
|
||||
if: always()
|
||||
run: |
|
||||
docker ps -a
|
||||
docker ps -aq | while read container ; do IMAGE=$(docker inspect --format='{{.Config.Image}}' $container); echo $IMAGE; docker logs $container; echo "\n\n" ; done
|
||||
|
||||
swift-primary-summary:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [changes,swift-primary-tests]
|
||||
|
||||
if: always()
|
||||
|
||||
steps:
|
||||
- name: Summary status
|
||||
run: if ${{ needs.changes.outputs.src != 'false' && needs.swift-primary-tests.result != 'success' }}; then exit 1; fi
|
||||
@@ -82,7 +82,7 @@ jobs:
|
||||
|
||||
- name: Upload profiles
|
||||
if: always()
|
||||
uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32
|
||||
uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8
|
||||
with:
|
||||
name: profiles
|
||||
path: |
|
||||
|
||||
@@ -0,0 +1,144 @@
|
||||
# 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
|
||||
|
||||
name: PHPUnit mariadb
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
schedule:
|
||||
- cron: "5 2 * * *"
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
concurrency:
|
||||
group: phpunit-mariadb-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
changes:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
outputs:
|
||||
src: ${{ steps.changes.outputs.src}}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@0bc4621a3135347011ad047f9ecf449bf72ce2bd # v3.0.0
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
filters: |
|
||||
src:
|
||||
- '.github/workflows/**'
|
||||
- '3rdparty/**'
|
||||
- '**/appinfo/**'
|
||||
- '**/lib/**'
|
||||
- '**/templates/**'
|
||||
- '**/tests/**'
|
||||
- 'vendor/**'
|
||||
- 'vendor-bin/**'
|
||||
- '.php-cs-fixer.dist.php'
|
||||
- 'composer.json'
|
||||
- 'composer.lock'
|
||||
- '**.php'
|
||||
|
||||
phpunit-mariadb:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
needs: changes
|
||||
if: needs.changes.outputs.src != 'false'
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
php-versions: ['8.0']
|
||||
mariadb-versions: ['10.3', '10.4', '10.5', '10.6', '10.11']
|
||||
include:
|
||||
- php-versions: '8.3'
|
||||
mariadb-versions: '10.6'
|
||||
coverage: ${{ github.event_name != 'pull_request' }}
|
||||
|
||||
name: MariaDB ${{ matrix.mariadb-versions }} (PHP ${{ matrix.php-versions }}) - database tests
|
||||
|
||||
services:
|
||||
cache:
|
||||
image: ghcr.io/nextcloud/continuous-integration-redis:latest
|
||||
ports:
|
||||
- 6379:6379/tcp
|
||||
options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
|
||||
|
||||
mariadb:
|
||||
image: mariadb:${{ matrix.mariadb-versions }}
|
||||
ports:
|
||||
- 4444:3306/tcp
|
||||
env:
|
||||
MYSQL_ROOT_PASSWORD: rootpassword
|
||||
MYSQL_USER: oc_autotest
|
||||
MYSQL_PASSWORD: nextcloud
|
||||
MYSQL_DATABASE: oc_autotest
|
||||
options: --health-cmd="mysqladmin ping" --health-interval 5s --health-timeout 2s --health-retries 5
|
||||
|
||||
steps:
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@4bd44f22a98a19e0950cbad5f31095157cc9621b # v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
# 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, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, mysql, pdo_mysql
|
||||
coverage: ${{ matrix.coverage && 'xdebug' || 'none' }}
|
||||
ini-file: development
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Set up dependencies
|
||||
run: composer i
|
||||
|
||||
- name: Enable ONLY_FULL_GROUP_BY MySQL option
|
||||
run: |
|
||||
echo "SET GLOBAL sql_mode=(SELECT CONCAT(@@sql_mode,',ONLY_FULL_GROUP_BY'));" | mysql -h 127.0.0.1 -P 4444 -u root -prootpassword
|
||||
echo "SELECT @@sql_mode;" | mysql -h 127.0.0.1 -P 4444 -u root -prootpassword
|
||||
|
||||
- name: Set up Nextcloud
|
||||
env:
|
||||
DB_PORT: 4444
|
||||
run: |
|
||||
mkdir data
|
||||
cp tests/redis.config.php config/
|
||||
cp tests/preseed-config.php config/config.php
|
||||
./occ maintenance:install --verbose --database=mysql --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin
|
||||
php -f tests/enable_all.php | grep -i -C9999 error && echo "Error during app setup" && exit 1 || exit 0
|
||||
|
||||
- name: PHPUnit
|
||||
run: composer run test:db ${{ matrix.coverage && ' -- --coverage-clover ./clover.db.xml' || '' }}
|
||||
|
||||
- name: Upload db code coverage
|
||||
if: ${{ !cancelled() && matrix.coverage }}
|
||||
uses: codecov/codecov-action@v3
|
||||
with:
|
||||
files: ./clover.db.xml
|
||||
flags: phpunit-mariadb
|
||||
|
||||
- name: Print logs
|
||||
if: always()
|
||||
run: |
|
||||
cat data/nextcloud.log
|
||||
|
||||
summary:
|
||||
permissions:
|
||||
contents: none
|
||||
runs-on: ubuntu-latest
|
||||
needs: [changes, phpunit-mariadb]
|
||||
|
||||
if: always()
|
||||
|
||||
name: phpunit-mariadb-summary
|
||||
|
||||
steps:
|
||||
- name: Summary status
|
||||
run: if ${{ needs.changes.outputs.src != 'false' && needs.phpunit-mariadb.result != 'success' }}; then exit 1; fi
|
||||
@@ -0,0 +1,123 @@
|
||||
# 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
|
||||
|
||||
name: PHPUnit memcached
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
schedule:
|
||||
- cron: "5 2 * * *"
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
concurrency:
|
||||
group: phpunit-memcached-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
changes:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
outputs:
|
||||
src: ${{ steps.changes.outputs.src}}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@0bc4621a3135347011ad047f9ecf449bf72ce2bd # v3.0.0
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
filters: |
|
||||
src:
|
||||
- '.github/workflows/**'
|
||||
- '3rdparty/**'
|
||||
- '**/appinfo/**'
|
||||
- '**/lib/**'
|
||||
- '**/templates/**'
|
||||
- '**/tests/**'
|
||||
- 'vendor/**'
|
||||
- 'vendor-bin/**'
|
||||
- '.php-cs-fixer.dist.php'
|
||||
- 'composer.json'
|
||||
- 'composer.lock'
|
||||
- '**.php'
|
||||
|
||||
phpunit-memcached:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
needs: changes
|
||||
if: needs.changes.outputs.src != 'false'
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
php-versions: ['8.0', '8.1', '8.2', '8.3']
|
||||
include:
|
||||
- php-versions: '8.2'
|
||||
coverage: ${{ github.event_name != 'pull_request' }}
|
||||
|
||||
name: Memcached (PHP ${{ matrix.php-versions }})
|
||||
|
||||
services:
|
||||
memcached:
|
||||
image: ghcr.io/nextcloud/continuous-integration-redis:latest
|
||||
ports:
|
||||
- 11212:11212/tcp
|
||||
- 11212:11212/udp
|
||||
|
||||
steps:
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@7fdd3ece872ec7ec4c098ae5ab7637d5e0a96067 # v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
# 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, memcached, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
|
||||
coverage: ${{ matrix.coverage && 'xdebug' || 'none' }}
|
||||
ini-file: development
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Set up dependencies
|
||||
run: composer i
|
||||
|
||||
- name: Set up Nextcloud
|
||||
run: |
|
||||
mkdir data
|
||||
cp tests/preseed-config.php config/config.php
|
||||
./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin
|
||||
php -f tests/enable_all.php | grep -i -C9999 error && echo "Error during app setup" && exit 1 || exit 0
|
||||
|
||||
- name: PHPUnit memcached tests
|
||||
run: composer run test -- --group Memcache,Memcached ${{ matrix.coverage && '--coverage-clover ./clover.xml' || '' }}
|
||||
|
||||
- name: Upload code coverage
|
||||
if: ${{ !cancelled() && matrix.coverage }}
|
||||
uses: codecov/codecov-action@v3
|
||||
with:
|
||||
files: ./clover.xml
|
||||
flags: phpunit-memcached
|
||||
|
||||
- name: Print logs
|
||||
if: always()
|
||||
run: |
|
||||
cat data/nextcloud.log
|
||||
|
||||
summary:
|
||||
permissions:
|
||||
contents: none
|
||||
runs-on: ubuntu-latest
|
||||
needs: [changes, phpunit-memcached]
|
||||
|
||||
if: always()
|
||||
|
||||
name: phpunit-memcached-summary
|
||||
|
||||
steps:
|
||||
- name: Summary status
|
||||
run: if ${{ needs.changes.outputs.src != 'false' && needs.phpunit-memcached.result != 'success' }}; then exit 1; fi
|
||||
@@ -0,0 +1,144 @@
|
||||
# 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
|
||||
|
||||
name: PHPUnit mysql
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
schedule:
|
||||
- cron: "5 2 * * *"
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
concurrency:
|
||||
group: phpunit-mysql-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
changes:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
outputs:
|
||||
src: ${{ steps.changes.outputs.src }}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@0bc4621a3135347011ad047f9ecf449bf72ce2bd # v3.0.0
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
filters: |
|
||||
src:
|
||||
- '.github/workflows/**'
|
||||
- '3rdparty/**'
|
||||
- '**/appinfo/**'
|
||||
- '**/lib/**'
|
||||
- '**/templates/**'
|
||||
- '**/tests/**'
|
||||
- 'vendor/**'
|
||||
- 'vendor-bin/**'
|
||||
- '.php-cs-fixer.dist.php'
|
||||
- 'composer.json'
|
||||
- 'composer.lock'
|
||||
- '**.php'
|
||||
|
||||
phpunit-mysql:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
needs: changes
|
||||
if: needs.changes.outputs.src != 'false'
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
php-versions: ['8.0']
|
||||
mysql-versions: ['8.0', '8.3']
|
||||
include:
|
||||
- mysql-versions: '8.0'
|
||||
php-versions: '8.3'
|
||||
coverage: ${{ github.event_name != 'pull_request' }}
|
||||
|
||||
name: MySQL ${{ matrix.mysql-versions }} (PHP ${{ matrix.php-versions }}) - database tests
|
||||
|
||||
services:
|
||||
cache:
|
||||
image: ghcr.io/nextcloud/continuous-integration-redis:latest
|
||||
ports:
|
||||
- 6379:6379/tcp
|
||||
options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
|
||||
|
||||
mysql:
|
||||
image: ghcr.io/nextcloud/continuous-integration-mysql-${{ matrix.mysql-versions }}:latest
|
||||
ports:
|
||||
- 4444:3306/tcp
|
||||
env:
|
||||
MYSQL_ROOT_PASSWORD: rootpassword
|
||||
MYSQL_USER: oc_autotest
|
||||
MYSQL_PASSWORD: nextcloud
|
||||
MYSQL_DATABASE: oc_autotest
|
||||
options: --health-cmd="mysqladmin ping" --health-interval 5s --health-timeout 2s --health-retries 5
|
||||
|
||||
steps:
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@4bd44f22a98a19e0950cbad5f31095157cc9621b # v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
# 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, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, mysql, pdo_mysql
|
||||
coverage: ${{ matrix.coverage && 'xdebug' || 'none' }}
|
||||
ini-file: development
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Set up dependencies
|
||||
run: composer i
|
||||
|
||||
- name: Enable ONLY_FULL_GROUP_BY MySQL option
|
||||
run: |
|
||||
echo "SET GLOBAL sql_mode=(SELECT CONCAT(@@sql_mode,',ONLY_FULL_GROUP_BY'));" | mysql -h 127.0.0.1 -P 4444 -u root -prootpassword
|
||||
echo "SELECT @@sql_mode;" | mysql -h 127.0.0.1 -P 4444 -u root -prootpassword
|
||||
|
||||
- name: Set up Nextcloud
|
||||
env:
|
||||
DB_PORT: 4444
|
||||
run: |
|
||||
mkdir data
|
||||
cp tests/redis.config.php config/
|
||||
cp tests/preseed-config.php config/config.php
|
||||
./occ maintenance:install --verbose --database=mysql --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin
|
||||
php -f tests/enable_all.php | grep -i -C9999 error && echo "Error during app setup" && exit 1 || exit 0
|
||||
|
||||
- name: PHPUnit
|
||||
run: composer run test:db ${{ matrix.coverage && ' -- --coverage-clover ./clover.db.xml' || '' }}
|
||||
|
||||
- name: Upload db code coverage
|
||||
if: ${{ !cancelled() && matrix.coverage }}
|
||||
uses: codecov/codecov-action@v3
|
||||
with:
|
||||
files: ./clover.db.xml
|
||||
flags: phpunit-mysql
|
||||
|
||||
- name: Print logs
|
||||
if: always()
|
||||
run: |
|
||||
cat data/nextcloud.log
|
||||
|
||||
summary:
|
||||
permissions:
|
||||
contents: none
|
||||
runs-on: ubuntu-latest
|
||||
needs: [changes, phpunit-mysql]
|
||||
|
||||
if: always()
|
||||
|
||||
name: phpunit-mysql-summary
|
||||
|
||||
steps:
|
||||
- name: Summary status
|
||||
run: if ${{ needs.changes.outputs.src != 'false' && needs.phpunit-mysql.result != 'success' }}; then exit 1; fi
|
||||
@@ -0,0 +1,127 @@
|
||||
# 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
|
||||
|
||||
# This is the testsuite running all non-database agnostic unit tests
|
||||
name: PHPUnit nodb
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
schedule:
|
||||
- cron: "5 2 * * *"
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
concurrency:
|
||||
group: phpunit-nodb-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
changes:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
outputs:
|
||||
src: ${{ steps.changes.outputs.src }}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@0bc4621a3135347011ad047f9ecf449bf72ce2bd # v3.0.0
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
filters: |
|
||||
src:
|
||||
- '.github/workflows/**'
|
||||
- '3rdparty/**'
|
||||
- '**/appinfo/**'
|
||||
- '**/lib/**'
|
||||
- '**/templates/**'
|
||||
- '**/tests/**'
|
||||
- 'vendor/**'
|
||||
- 'vendor-bin/**'
|
||||
- '.php-cs-fixer.dist.php'
|
||||
- 'composer.json'
|
||||
- 'composer.lock'
|
||||
- '**.php'
|
||||
|
||||
phpunit-nodb:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
needs: changes
|
||||
if: needs.changes.outputs.src != 'false'
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
php-versions: ['8.0', '8.1', '8.2', '8.3']
|
||||
include:
|
||||
- php-versions: '8.2'
|
||||
coverage: ${{ github.event_name != 'pull_request' }}
|
||||
|
||||
name: No DB unit tests (PHP ${{ matrix.php-versions }})
|
||||
|
||||
services:
|
||||
cache:
|
||||
image: ghcr.io/nextcloud/continuous-integration-redis:latest
|
||||
ports:
|
||||
- 6379:6379/tcp
|
||||
options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
|
||||
|
||||
steps:
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@7fdd3ece872ec7ec4c098ae5ab7637d5e0a96067 # v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
|
||||
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, imagick, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
|
||||
coverage: ${{ matrix.coverage && 'xdebug' || 'none' }}
|
||||
ini-file: development
|
||||
# Required for tests that use pcntl
|
||||
ini-values: disable_functions=""
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Set up dependencies
|
||||
run: composer i
|
||||
|
||||
- name: Set up Nextcloud
|
||||
run: |
|
||||
mkdir data
|
||||
cp tests/redis.config.php config/
|
||||
cp tests/preseed-config.php config/config.php
|
||||
./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin
|
||||
php -f tests/enable_all.php | grep -i -C9999 error && echo "Error during app setup" && exit 1 || exit 0
|
||||
|
||||
- name: PHPUnit nodb testsuite
|
||||
run: composer run test -- --exclude-group DB,SLOWDB ${{ matrix.coverage && ' --coverage-clover ./clover.nodb.xml' || '' }}
|
||||
|
||||
- name: Upload nodb code coverage
|
||||
if: ${{ !cancelled() && matrix.coverage }}
|
||||
uses: codecov/codecov-action@v3
|
||||
with:
|
||||
files: ./clover.nodb.xml
|
||||
flags: phpunit-nodb
|
||||
|
||||
- name: Print logs
|
||||
if: always()
|
||||
run: |
|
||||
cat data/nextcloud.log
|
||||
|
||||
summary:
|
||||
permissions:
|
||||
contents: none
|
||||
runs-on: ubuntu-latest
|
||||
needs: [changes, phpunit-nodb]
|
||||
|
||||
if: always()
|
||||
|
||||
name: phpunit-nodb-summary
|
||||
|
||||
steps:
|
||||
- name: Summary status
|
||||
run: if ${{ needs.changes.outputs.src != 'false' && needs.phpunit-nodb.result != 'success' }}; then exit 1; fi
|
||||
@@ -2,6 +2,8 @@ name: PHPUnit oci
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
schedule:
|
||||
- cron: "5 2 * * *"
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
@@ -15,10 +17,10 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
outputs:
|
||||
src: ${{ steps.changes.outputs.src}}
|
||||
src: ${{ steps.changes.outputs.src }}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@4512585405083f25c027a35db413c2b3b9006d50 # v2.11.1
|
||||
- uses: dorny/paths-filter@0bc4621a3135347011ad047f9ecf449bf72ce2bd # v3.0.0
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
@@ -26,36 +28,51 @@ jobs:
|
||||
src:
|
||||
- '.github/workflows/**'
|
||||
- '3rdparty/**'
|
||||
- '**/appinfo/**'
|
||||
- '**/lib/**'
|
||||
- '**/templates/**'
|
||||
- '**/tests/**'
|
||||
- '**/vendor-bin/**'
|
||||
- 'vendor/**'
|
||||
- 'vendor-bin/**'
|
||||
- '.php-cs-fixer.dist.php'
|
||||
- 'composer.json'
|
||||
- 'composer.lock'
|
||||
- '**.php'
|
||||
|
||||
phpunit-oci:
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
php-versions: ['8.0', '8.1', '8.2']
|
||||
oracle-versions: ['11']
|
||||
php-versions: ['8.0', '8.1', '8.2', '8.3']
|
||||
include:
|
||||
- php-versions: '8.3'
|
||||
coverage: ${{ github.event_name != 'pull_request' }}
|
||||
|
||||
name: Oracle ${{ matrix.oracle-versions }} (PHP ${{ matrix.php-versions }}) - database tests
|
||||
|
||||
services:
|
||||
cache:
|
||||
image: ghcr.io/nextcloud/continuous-integration-redis:latest
|
||||
ports:
|
||||
- 6379:6379/tcp
|
||||
options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
|
||||
|
||||
oracle:
|
||||
image: ghcr.io/gvenzl/oracle-xe:11
|
||||
image: ghcr.io/gvenzl/oracle-xe:${{ matrix.oracle-versions }}
|
||||
|
||||
# Provide passwords and other environment variables to container
|
||||
env:
|
||||
ORACLE_RANDOM_PASSWORD: true
|
||||
APP_USER: autotest
|
||||
APP_USER_PASSWORD: owncloud
|
||||
APP_USER: oc_autotest
|
||||
APP_USER_PASSWORD: nextcloud
|
||||
|
||||
# Forward Oracle port
|
||||
ports:
|
||||
- 1521:1521/tcp
|
||||
- 4444:1521/tcp
|
||||
|
||||
# Provide healthcheck script options for startup
|
||||
options: >-
|
||||
@@ -71,24 +88,38 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@c5fc0d8281aba02c7fda07d3a70cc5371548067d #v2.25.2
|
||||
uses: shivammathur/setup-php@4bd44f22a98a19e0950cbad5f31095157cc9621b # v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
extensions: ctype, curl, dom, fileinfo, gd, imagick, intl, json, mbstring, oci8, openssl, pcntl, pdo_sqlite, posix, sqlite, xml, zip
|
||||
coverage: none
|
||||
# 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, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, oci8
|
||||
coverage: ${{ matrix.coverage && 'xdebug' || 'none' }}
|
||||
ini-file: development
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Set up dependencies
|
||||
run: composer i
|
||||
|
||||
- name: Set up Nextcloud
|
||||
env:
|
||||
DB_PORT: 4444
|
||||
run: |
|
||||
composer install
|
||||
mkdir data
|
||||
./occ maintenance:install --verbose --database=oci --database-name=XE --database-host=127.0.0.1 --database-port=1521 --database-user=autotest --database-pass=owncloud --admin-user admin --admin-pass admin
|
||||
php -f index.php
|
||||
cp tests/redis.config.php config/
|
||||
cp tests/preseed-config.php config/config.php
|
||||
./occ maintenance:install --verbose --database=oci --database-name=XE --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=oc_autotest --database-pass=nextcloud --admin-user admin --admin-pass admin
|
||||
php -f tests/enable_all.php | grep -i -C9999 error && echo "Error during app setup" && exit 1 || exit 0
|
||||
|
||||
- name: PHPUnit
|
||||
run: composer run test:db
|
||||
run: composer run test:db ${{ matrix.coverage && ' -- --coverage-clover ./clover.db.xml' || '' }}
|
||||
|
||||
- name: Upload db code coverage
|
||||
if: ${{ !cancelled() && matrix.coverage }}
|
||||
uses: codecov/codecov-action@v3
|
||||
with:
|
||||
files: ./clover.db.xml
|
||||
flags: phpunit-oci
|
||||
|
||||
- name: Run repair steps
|
||||
run: |
|
||||
|
||||
@@ -0,0 +1,143 @@
|
||||
# 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
|
||||
|
||||
name: PHPUnit pgsql
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
schedule:
|
||||
- cron: "5 2 * * *"
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
concurrency:
|
||||
group: phpunit-pgsql-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
changes:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
outputs:
|
||||
src: ${{ steps.changes.outputs.src }}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@0bc4621a3135347011ad047f9ecf449bf72ce2bd # v3.0.0
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
filters: |
|
||||
src:
|
||||
- '.github/workflows/**'
|
||||
- '3rdparty/**'
|
||||
- '**/appinfo/**'
|
||||
- '**/lib/**'
|
||||
- '**/templates/**'
|
||||
- '**/tests/**'
|
||||
- 'vendor/**'
|
||||
- 'vendor-bin/**'
|
||||
- '.php-cs-fixer.dist.php'
|
||||
- 'composer.json'
|
||||
- 'composer.lock'
|
||||
- '**.php'
|
||||
|
||||
phpunit-pgsql:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
needs: changes
|
||||
if: needs.changes.outputs.src != 'false'
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
php-versions: ['8.0']
|
||||
# To keep the matrix smaller we ignore PostgreSQL '11', '13', '14' as we already test 10 and 15 as lower and upper bound
|
||||
postgres-versions: ['10', '15', '16']
|
||||
include:
|
||||
- php-versions: '8.3'
|
||||
postgres-versions: '15'
|
||||
coverage: ${{ github.event_name != 'pull_request' }}
|
||||
|
||||
name: PostgreSQL ${{ matrix.postgres-versions }} (PHP ${{ matrix.php-versions }}) - database tests
|
||||
|
||||
services:
|
||||
cache:
|
||||
image: ghcr.io/nextcloud/continuous-integration-redis:latest
|
||||
ports:
|
||||
- 6379:6379/tcp
|
||||
options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
|
||||
|
||||
postgres:
|
||||
image: ghcr.io/nextcloud/continuous-integration-postgres-${{ matrix.postgres-versions }}:latest
|
||||
ports:
|
||||
- 4444:5432/tcp
|
||||
env:
|
||||
POSTGRES_USER: root
|
||||
POSTGRES_PASSWORD: rootpassword
|
||||
POSTGRES_DB: nextcloud
|
||||
options: --mount type=tmpfs,destination=/var/lib/postgresql/data --health-cmd pg_isready --health-interval 5s --health-timeout 2s --health-retries 5
|
||||
|
||||
steps:
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@4bd44f22a98a19e0950cbad5f31095157cc9621b # v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
# 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, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, pgsql, pdo_pgsql
|
||||
coverage: ${{ matrix.coverage && 'xdebug' || 'none' }}
|
||||
ini-file: development
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Set up dependencies
|
||||
run: composer i
|
||||
|
||||
- name: Set up Nextcloud
|
||||
env:
|
||||
DB_PORT: 4444
|
||||
run: |
|
||||
mkdir data
|
||||
cp tests/redis.config.php config/
|
||||
cp tests/preseed-config.php config/config.php
|
||||
./occ maintenance:install --verbose --database=pgsql --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin
|
||||
php -f tests/enable_all.php | grep -i -C9999 error && echo "Error during app setup" && exit 1 || exit 0
|
||||
|
||||
- name: PHPUnit database tests
|
||||
run: composer run test:db ${{ matrix.coverage && ' -- --coverage-clover ./clover.db.xml' || '' }}
|
||||
|
||||
- name: Upload db code coverage
|
||||
if: ${{ !cancelled() && matrix.coverage }}
|
||||
uses: codecov/codecov-action@v3
|
||||
with:
|
||||
files: ./clover.db.xml
|
||||
flags: phpunit-postgres
|
||||
|
||||
- name: Run repair steps
|
||||
run: |
|
||||
./occ maintenance:repair --include-expensive
|
||||
|
||||
- name: Print logs
|
||||
if: always()
|
||||
run: |
|
||||
cat data/nextcloud.log
|
||||
|
||||
summary:
|
||||
permissions:
|
||||
contents: none
|
||||
runs-on: ubuntu-latest
|
||||
needs: [changes, phpunit-pgsql]
|
||||
|
||||
if: always()
|
||||
|
||||
name: phpunit-pgsql-summary
|
||||
|
||||
steps:
|
||||
- name: Summary status
|
||||
run: if ${{ needs.changes.outputs.src != 'false' && needs.phpunit-pgsql.result != 'success' }}; then exit 1; fi
|
||||
@@ -0,0 +1,127 @@
|
||||
# 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
|
||||
|
||||
name: PHPUnit sqlite
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
schedule:
|
||||
- cron: "5 2 * * *"
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
concurrency:
|
||||
group: phpunit-sqlite-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
changes:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
outputs:
|
||||
src: ${{ steps.changes.outputs.src }}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@0bc4621a3135347011ad047f9ecf449bf72ce2bd # v3.0.0
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
filters: |
|
||||
src:
|
||||
- '.github/workflows/**'
|
||||
- '3rdparty/**'
|
||||
- '**/appinfo/**'
|
||||
- '**/lib/**'
|
||||
- '**/templates/**'
|
||||
- '**/tests/**'
|
||||
- 'vendor/**'
|
||||
- 'vendor-bin/**'
|
||||
- '.php-cs-fixer.dist.php'
|
||||
- 'composer.json'
|
||||
- 'composer.lock'
|
||||
- '**.php'
|
||||
|
||||
phpunit-sqlite:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
needs: changes
|
||||
if: needs.changes.outputs.src != 'false'
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
php-versions: ['8.0', '8.1', '8.2', '8.3']
|
||||
include:
|
||||
- php-versions: '8.1'
|
||||
coverage: ${{ github.event_name != 'pull_request' }}
|
||||
|
||||
name: SQLite (PHP ${{ matrix.php-versions }})
|
||||
|
||||
services:
|
||||
cache:
|
||||
image: ghcr.io/nextcloud/continuous-integration-redis:latest
|
||||
ports:
|
||||
- 6379:6379/tcp
|
||||
options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
|
||||
|
||||
steps:
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@7fdd3ece872ec7ec4c098ae5ab7637d5e0a96067 # v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
# 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, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
|
||||
coverage: ${{ matrix.coverage && 'xdebug' || 'none' }}
|
||||
ini-file: development
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Set up dependencies
|
||||
run: composer i
|
||||
|
||||
- name: Set up Nextcloud
|
||||
run: |
|
||||
mkdir data
|
||||
cp tests/redis.config.php config/
|
||||
cp tests/preseed-config.php config/config.php
|
||||
./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin
|
||||
php -f tests/enable_all.php | grep -i -C9999 error && echo "Error during app setup" && exit 1 || exit 0
|
||||
|
||||
- name: Nextcloud debug information
|
||||
run: ./occ app:list && echo "======= System config =======" && ./occ config:list system
|
||||
|
||||
- name: PHPUnit database tests
|
||||
run: composer run test:db ${{ matrix.coverage && ' -- --coverage-clover ./clover.db.xml' || '' }}
|
||||
|
||||
- name: Upload db code coverage
|
||||
if: ${{ !cancelled() && matrix.coverage }}
|
||||
uses: codecov/codecov-action@v3
|
||||
with:
|
||||
files: ./clover.db.xml
|
||||
flags: phpunit-sqlite
|
||||
|
||||
- name: Print logs
|
||||
if: always()
|
||||
run: |
|
||||
cat data/nextcloud.log
|
||||
|
||||
summary:
|
||||
permissions:
|
||||
contents: none
|
||||
runs-on: ubuntu-latest
|
||||
needs: [changes, phpunit-sqlite]
|
||||
|
||||
if: always()
|
||||
|
||||
name: phpunit-sqlite-summary
|
||||
|
||||
steps:
|
||||
- name: Summary status
|
||||
run: if ${{ needs.changes.outputs.src != 'false' && needs.phpunit-sqlite.result != 'success' }}; then exit 1; fi
|
||||
@@ -1,130 +0,0 @@
|
||||
name: S3 External storage
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- 'apps/files_external/**'
|
||||
|
||||
concurrency:
|
||||
group: s3-external-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
env:
|
||||
APP_NAME: files_external
|
||||
|
||||
jobs:
|
||||
s3-external-tests-minio:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
|
||||
|
||||
strategy:
|
||||
# do not stop on another job's failure
|
||||
fail-fast: false
|
||||
matrix:
|
||||
php-versions: ['8.0', '8.1']
|
||||
|
||||
name: php${{ matrix.php-versions }}-minio
|
||||
|
||||
services:
|
||||
minio:
|
||||
env:
|
||||
MINIO_ACCESS_KEY: minio
|
||||
MINIO_SECRET_KEY: minio123
|
||||
image: bitnami/minio:2021.10.6
|
||||
ports:
|
||||
- "9000:9000"
|
||||
|
||||
steps:
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@c5fc0d8281aba02c7fda07d3a70cc5371548067d #v2.25.2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
extensions: mbstring, fileinfo, intl, sqlite, pdo_sqlite, zip, gd
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Set up Nextcloud
|
||||
run: |
|
||||
composer install
|
||||
mkdir data
|
||||
./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-host=127.0.0.1 --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass password
|
||||
./occ app:enable --force ${{ env.APP_NAME }}
|
||||
php -S localhost:8080 &
|
||||
- name: PHPUnit
|
||||
run: |
|
||||
echo "<?php return ['run' => true, 'secret' => 'actually-not-secret', 'passwordsalt' => 'actually-not-secret', 'hostname' => 'localhost','key' => 'minio','secret' => 'minio123', 'bucket' => 'bucket', 'port' => 9000, 'use_ssl' => false, 'autocreate' => true, 'use_path_style' => true];" > apps/${{ env.APP_NAME }}/tests/config.amazons3.php
|
||||
composer run test:files_external apps/files_external/tests/Storage/Amazons3Test.php
|
||||
composer run test:files_external apps/files_external/tests/Storage/VersionedAmazonS3Test.php
|
||||
- name: S3 logs
|
||||
if: always()
|
||||
run: |
|
||||
docker ps -a
|
||||
docker logs $(docker ps -aq)
|
||||
s3-external-tests-localstack:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
|
||||
|
||||
strategy:
|
||||
# do not stop on another job's failure
|
||||
fail-fast: false
|
||||
matrix:
|
||||
php-versions: ['8.0', '8.1']
|
||||
|
||||
name: php${{ matrix.php-versions }}-localstack
|
||||
|
||||
services:
|
||||
minio:
|
||||
env:
|
||||
SERVICES: s3
|
||||
DEBUG: 1
|
||||
image: localstack/localstack:0.12.7
|
||||
ports:
|
||||
- "4566:4566"
|
||||
|
||||
steps:
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@c5fc0d8281aba02c7fda07d3a70cc5371548067d #v2.25.2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
extensions: mbstring, fileinfo, intl, sqlite, pdo_sqlite, zip, gd
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Set up Nextcloud
|
||||
run: |
|
||||
composer install
|
||||
mkdir data
|
||||
./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-host=127.0.0.1 --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass password
|
||||
./occ app:enable --force ${{ env.APP_NAME }}
|
||||
php -S localhost:8080 &
|
||||
- name: PHPUnit
|
||||
run: |
|
||||
echo "<?php return ['run' => true,'hostname' => 'localhost','key' => 'ignored','secret' => 'ignored', 'bucket' => 'bucket', 'port' => 4566, 'use_ssl' => false, 'autocreate' => true, 'use_path_style' => true];" > apps/${{ env.APP_NAME }}/tests/config.amazons3.php
|
||||
composer run test:files_external apps/files_external/tests/Storage/Amazons3Test.php
|
||||
composer run test:files_external apps/files_external/tests/Storage/VersionedAmazonS3Test.php
|
||||
- name: S3 logs
|
||||
if: always()
|
||||
run: |
|
||||
docker ps -a
|
||||
docker logs $(docker ps -aq)
|
||||
|
||||
s3-external-summary:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [s3-external-tests-minio, s3-external-tests-localstack]
|
||||
|
||||
if: always()
|
||||
|
||||
steps:
|
||||
- name: Summary status
|
||||
run: if ${{ needs.s3-external-tests-minio.result != 'success' }} || ${{ needs.s3-external-tests-localstack.result != 'success' }}; then exit 1; fi
|
||||
@@ -1,87 +0,0 @@
|
||||
name: S3 primary storage
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- '.github/workflows/**'
|
||||
- '3rdparty/**'
|
||||
- '**/*.php'
|
||||
- '**/lib/**'
|
||||
- '**/tests/**'
|
||||
- '**/vendor-bin/**'
|
||||
- '.php-cs-fixer.dist.php'
|
||||
- 'composer.json'
|
||||
- 'composer.lock'
|
||||
|
||||
concurrency:
|
||||
group: s3-primary-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
s3-primary-tests-minio:
|
||||
runs-on: ubuntu-20.04
|
||||
|
||||
if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
|
||||
|
||||
strategy:
|
||||
# do not stop on another job's failure
|
||||
fail-fast: false
|
||||
matrix:
|
||||
php-versions: ['8.0']
|
||||
key: ['objectstore', 'objectstore_multibucket']
|
||||
|
||||
name: php${{ matrix.php-versions }}-${{ matrix.key }}-minio
|
||||
|
||||
services:
|
||||
minio:
|
||||
env:
|
||||
MINIO_ACCESS_KEY: minio
|
||||
MINIO_SECRET_KEY: minio123
|
||||
image: bitnami/minio:2021.12.29
|
||||
ports:
|
||||
- "9000:9000"
|
||||
|
||||
steps:
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@c5fc0d8281aba02c7fda07d3a70cc5371548067d #v2.25.2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
extensions: mbstring, fileinfo, intl, sqlite, pdo_sqlite, zip, gd
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Set up Nextcloud
|
||||
run: |
|
||||
composer install
|
||||
mkdir data
|
||||
echo '<?php $CONFIG=["${{ matrix.key }}" => ["class" => "OC\Files\ObjectStore\S3", "arguments" => ["bucket" => "nextcloud", "autocreate" => true, "key" => "minio", "secret" => "minio123", "hostname" => "localhost", "port" => 9000, "use_ssl" => false, "use_path_style" => true, "uploadPartSize" => 52428800]]];' > config/config.php
|
||||
./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-host=127.0.0.1 --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass password
|
||||
php -f index.php
|
||||
|
||||
- name: Wait for S3
|
||||
run: |
|
||||
sleep 10
|
||||
curl -f -m 1 --retry-connrefused --retry 10 --retry-delay 10 http://localhost:9000/minio/health/ready
|
||||
|
||||
- name: PHPUnit
|
||||
run: composer run test:db
|
||||
- name: S3 logs
|
||||
if: always()
|
||||
run: |
|
||||
docker ps -a
|
||||
docker logs $(docker ps -aq)
|
||||
|
||||
|
||||
s3-primary-summary:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [s3-primary-tests-minio]
|
||||
|
||||
if: always()
|
||||
|
||||
steps:
|
||||
- name: Summary status
|
||||
run: if ${{ needs.s3-primary-tests-minio.result != 'success' }}; then exit 1; fi
|
||||
@@ -11,7 +11,7 @@ concurrency:
|
||||
|
||||
jobs:
|
||||
smb-kerberos-tests:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-22.04
|
||||
|
||||
if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
|
||||
|
||||
|
||||
@@ -40,3 +40,4 @@ jobs:
|
||||
labels: |
|
||||
dependencies
|
||||
3. to review
|
||||
reviewers: ChristophWurst, miaulalala, nickvergessen
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
name: Update code signing revocation list
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
- cron: "5 2 * * *"
|
||||
|
||||
jobs:
|
||||
update-code-signing-crl:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
branches: ["master", "stable28", "stable27", "stable26", "stable25", "stable24", "stable23", "stable22"]
|
||||
|
||||
name: update-code-signing-crl-${{ matrix.branches }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
|
||||
with:
|
||||
ref: ${{ matrix.branches }}
|
||||
submodules: true
|
||||
|
||||
- name: Download CRL file from Appstore repository
|
||||
run: curl --output resources/codesigning/root.crl https://raw.githubusercontent.com/nextcloud/appstore/master/nextcloudappstore/certificate/nextcloud.crl
|
||||
|
||||
- name: Verify CRL is from CRT
|
||||
run: openssl crl -verify -in resources/codesigning/root.crl -CAfile resources/codesigning/root.crt -noout
|
||||
|
||||
- name: Create Pull Request
|
||||
uses: peter-evans/create-pull-request@153407881ec5c347639a548ade7d8ad1d6740e38
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
commit-message: "fix(security): Update code signing revocation list"
|
||||
committer: GitHub <noreply@github.com>
|
||||
author: nextcloud-command <nextcloud-command@users.noreply.github.com>
|
||||
signoff: true
|
||||
branch: automated/noid/${{ matrix.branches }}-update-code-signing-crl
|
||||
title: "[${{ matrix.branches }}] fix(security): Update code signing revocation list"
|
||||
body: |
|
||||
Auto-generated update of code signing revocation list from [Appstore](https://github.com/nextcloud/appstore/commits/master/nextcloudappstore/certificate/nextcloud.crl)
|
||||
labels: |
|
||||
dependencies
|
||||
3. to review
|
||||
reviewers: mgallien, miaulalala, nickvergessen
|
||||
@@ -129,6 +129,8 @@ nbproject
|
||||
/build/bin
|
||||
/build/lib/
|
||||
/build/jsdocs/
|
||||
/build/integration/output/
|
||||
/build/integration/phpserver.log
|
||||
/npm-debug.log
|
||||
/PhantomJS_*
|
||||
|
||||
|
||||
@@ -94,5 +94,19 @@
|
||||
RewriteRule ^(?:\.(?!well-known)|autotest|occ|issue|indie|db_|console).* - [R=404,L]
|
||||
</IfModule>
|
||||
|
||||
# Clients like xDavv5 on Android, or Cyberduck, use chunked requests.
|
||||
# When FastCGI or FPM is used with apache, requests arrive to Nextcloud without any content.
|
||||
# This leads to the creation of empty files.
|
||||
# The following directive will force the problematic requests to be buffered before being forwarded to Nextcloud.
|
||||
# This way, the "Transfer-Encoding" header is removed, the "Content-Length" header is set, and the request content is proxied to Nextcloud.
|
||||
# Here are more information about the issue:
|
||||
# - https://docs.cyberduck.io/mountainduck/issues/fastcgi/
|
||||
# - https://docs.nextcloud.com/server/latest/admin_manual/issues/general_troubleshooting.html#troubleshooting-webdav
|
||||
<IfModule setenvif.c>
|
||||
<Location "/remote.php">
|
||||
SetEnvIf Transfer-Encoding "chunked" proxy-sendcl=1
|
||||
</Location>
|
||||
</IfModule>
|
||||
|
||||
AddDefaultCharset utf-8
|
||||
Options -Indexes
|
||||
|
||||
+1
-1
Submodule 3rdparty updated: a71bd8af76...77db3ca48a
+12
-9
@@ -1,14 +1,14 @@
|
||||
# Security Policy
|
||||
|
||||
[Security](https://nextcloud.com/security/) is very important to us.
|
||||
[Security](https://nextcloud.com/security/) is very important to us.
|
||||
|
||||
If you believe you have found a security vulnerability that meets our definition of a security
|
||||
If you believe you have found a security vulnerability that meets our definition of a security
|
||||
vulnerability, please report is as described below.
|
||||
|
||||
## Context
|
||||
|
||||
Please review our [threat model and accepted risks](https://nextcloud.com/security/threat-model) to learn what
|
||||
is currently considered a security vulnerability versus expected behavior. And review what is considered
|
||||
Please review our [threat model and accepted risks](https://nextcloud.com/security/threat-model) to learn what
|
||||
is currently considered a security vulnerability versus expected behavior. And review what is considered
|
||||
[in scope or bounty eligible](https://hackerone.com/nextcloud/policy_scopes).
|
||||
|
||||
|
||||
@@ -31,13 +31,17 @@ Your report should include:
|
||||
|
||||
You should receive an initial acknowledgement within 24 hours in most cases.
|
||||
|
||||
A member of the security team will confirm the vulnerability, determine its impact, follow-up with any questions,
|
||||
A member of the security team will confirm the vulnerability, determine its impact, follow-up with any questions,
|
||||
and coordinate the fix and publication.
|
||||
|
||||
The fix will be applied to all applicable and still supported stable branches, tested, and packaged in the next security release.
|
||||
The vulnerability will be publicly announced after the release. Finally, your name will be added
|
||||
to the [hall of fame](https://hackerone.com/nextcloud/thanks) as a thank you from the entire Nextcloud
|
||||
community.
|
||||
to the [hall of fame](https://hackerone.com/nextcloud/thanks) as a thank you from the entire Nextcloud
|
||||
community.
|
||||
|
||||
If the vulnerability involves an app that is not maintained by Nextcloud (i.e. hosted by the
|
||||
Nextcloud project but community maintained, or hosted elsewhere), the security team will try to coordinate with the
|
||||
current maintainer and help to get the issue fixed in similar fashion.
|
||||
|
||||
### Bug Bounties
|
||||
|
||||
@@ -47,8 +51,7 @@ on past bounty ranges can be found at [hackerone.com/nextcloud](https://hackeron
|
||||
## Existing Security Advisories
|
||||
|
||||
Published security advisories for the Nextcloud Server, Clients and Apps can be viewed at
|
||||
[https://github.com/nextcloud/security-advisories/security/advisories](https://github.com/nextcloud/security-advisories/security/advisories
|
||||
).
|
||||
[https://github.com/nextcloud/security-advisories/security/advisories](https://github.com/nextcloud/security-advisories/security/advisories).
|
||||
|
||||
## Supported Versions
|
||||
|
||||
|
||||
@@ -30,6 +30,7 @@ use OCP\EventDispatcher\Event;
|
||||
use OCP\EventDispatcher\IEventListener;
|
||||
use OCP\Log\Audit\CriticalActionPerformedEvent;
|
||||
|
||||
/** @template-implements IEventListener<CriticalActionPerformedEvent> */
|
||||
class CriticalActionPerformedEventListener extends Action implements IEventListener {
|
||||
public function handle(Event $event): void {
|
||||
if (!($event instanceof CriticalActionPerformedEvent)) {
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
OC.L10N.register(
|
||||
"cloud_federation_api",
|
||||
{
|
||||
"Cloud Federation API" : "API de Federación en la Nube",
|
||||
"Enable clouds to communicate with each other and exchange data" : "Permitir que las nubes se comuniquen entre sí e intercambien datos",
|
||||
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "La API de Federación de Nubes permite que varias instancias de Nextcloud se comuniquen entre sí y intercambien datos."
|
||||
},
|
||||
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
|
||||
@@ -0,0 +1,6 @@
|
||||
{ "translations": {
|
||||
"Cloud Federation API" : "API de Federación en la Nube",
|
||||
"Enable clouds to communicate with each other and exchange data" : "Permitir que las nubes se comuniquen entre sí e intercambien datos",
|
||||
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "La API de Federación de Nubes permite que varias instancias de Nextcloud se comuniquen entre sí y intercambien datos."
|
||||
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
|
||||
}
|
||||
@@ -30,6 +30,7 @@ use OCA\CloudFederationAPI\Config;
|
||||
use OCA\CloudFederationAPI\ResponseDefinitions;
|
||||
use OCP\AppFramework\Controller;
|
||||
use OCP\AppFramework\Http;
|
||||
use OCP\AppFramework\Http\Attribute\OpenAPI;
|
||||
use OCP\AppFramework\Http\JSONResponse;
|
||||
use OCP\Federation\Exceptions\ActionNotSupportedException;
|
||||
use OCP\Federation\Exceptions\AuthenticationFailedException;
|
||||
@@ -55,6 +56,7 @@ use Psr\Log\LoggerInterface;
|
||||
* @psalm-import-type CloudFederationAPIValidationError from ResponseDefinitions
|
||||
* @psalm-import-type CloudFederationAPIError from ResponseDefinitions
|
||||
*/
|
||||
#[OpenAPI(scope: OpenAPI::SCOPE_FEDERATION)]
|
||||
class RequestHandlerController extends Controller {
|
||||
public function __construct(
|
||||
string $appName,
|
||||
|
||||
@@ -15,6 +15,8 @@ OC.L10N.register(
|
||||
"Edit comment" : "تعديل التعليق",
|
||||
"Delete comment" : "حذف التعليق",
|
||||
"Cancel edit" : "إلغاء التعديل",
|
||||
"New comment" : "ملاحظة جديدة",
|
||||
"Write a comment …" : "أكتُب ملاحظةً ...",
|
||||
"Post comment" : "أضف تعليق",
|
||||
"@ for mentions, : for emoji, / for smart picker" : "@ للإشارات، : للإيموجي، / للاقط الذكي",
|
||||
"Could not reload comments" : "تعذّرت إعادة تحميل الملاحظات",
|
||||
|
||||
@@ -13,6 +13,8 @@
|
||||
"Edit comment" : "تعديل التعليق",
|
||||
"Delete comment" : "حذف التعليق",
|
||||
"Cancel edit" : "إلغاء التعديل",
|
||||
"New comment" : "ملاحظة جديدة",
|
||||
"Write a comment …" : "أكتُب ملاحظةً ...",
|
||||
"Post comment" : "أضف تعليق",
|
||||
"@ for mentions, : for emoji, / for smart picker" : "@ للإشارات، : للإيموجي، / للاقط الذكي",
|
||||
"Could not reload comments" : "تعذّرت إعادة تحميل الملاحظات",
|
||||
|
||||
@@ -15,6 +15,8 @@ OC.L10N.register(
|
||||
"Edit comment" : "Upravit komentář",
|
||||
"Delete comment" : "Smazat komentář",
|
||||
"Cancel edit" : "Zrušit úpravu",
|
||||
"New comment" : "Nový komentář",
|
||||
"Write a comment …" : "Napsat komentář…",
|
||||
"Post comment" : "Odeslat komentář",
|
||||
"@ for mentions, : for emoji, / for smart picker" : "@ pro zmínění, : pro emotikony, / pro inteligentní výběr",
|
||||
"Could not reload comments" : "Znovunačtení komentářů se nezdařilo",
|
||||
|
||||
@@ -13,6 +13,8 @@
|
||||
"Edit comment" : "Upravit komentář",
|
||||
"Delete comment" : "Smazat komentář",
|
||||
"Cancel edit" : "Zrušit úpravu",
|
||||
"New comment" : "Nový komentář",
|
||||
"Write a comment …" : "Napsat komentář…",
|
||||
"Post comment" : "Odeslat komentář",
|
||||
"@ for mentions, : for emoji, / for smart picker" : "@ pro zmínění, : pro emotikony, / pro inteligentní výběr",
|
||||
"Could not reload comments" : "Znovunačtení komentářů se nezdařilo",
|
||||
|
||||
@@ -15,6 +15,7 @@ OC.L10N.register(
|
||||
"Edit comment" : "Kommentar bearbeiten",
|
||||
"Delete comment" : "Kommentar löschen",
|
||||
"Cancel edit" : "Bearbeiten abbrechen",
|
||||
"New comment" : "Neuer Kommentar",
|
||||
"Post comment" : "Kommentar veröffentlichen",
|
||||
"@ for mentions, : for emoji, / for smart picker" : "@ für Erwähnungen, : für Emoji, / für Smart Picker",
|
||||
"Could not reload comments" : "Kommentare konnten nicht erneut geladen werden",
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
"Edit comment" : "Kommentar bearbeiten",
|
||||
"Delete comment" : "Kommentar löschen",
|
||||
"Cancel edit" : "Bearbeiten abbrechen",
|
||||
"New comment" : "Neuer Kommentar",
|
||||
"Post comment" : "Kommentar veröffentlichen",
|
||||
"@ for mentions, : for emoji, / for smart picker" : "@ für Erwähnungen, : für Emoji, / für Smart Picker",
|
||||
"Could not reload comments" : "Kommentare konnten nicht erneut geladen werden",
|
||||
|
||||
@@ -15,6 +15,8 @@ OC.L10N.register(
|
||||
"Edit comment" : "Kommentar bearbeiten",
|
||||
"Delete comment" : "Kommentar löschen",
|
||||
"Cancel edit" : "Bearbeiten abbrechen",
|
||||
"New comment" : "Neuer Kommentar",
|
||||
"Write a comment …" : "Schreiben Sie einen Kommentar …",
|
||||
"Post comment" : "Kommentar veröffentlichen",
|
||||
"@ for mentions, : for emoji, / for smart picker" : "@ für Erwähnungen, : für Emoji, / für Smart Picker",
|
||||
"Could not reload comments" : "Kommentare konnten nicht erneut geladen werden",
|
||||
|
||||
@@ -13,6 +13,8 @@
|
||||
"Edit comment" : "Kommentar bearbeiten",
|
||||
"Delete comment" : "Kommentar löschen",
|
||||
"Cancel edit" : "Bearbeiten abbrechen",
|
||||
"New comment" : "Neuer Kommentar",
|
||||
"Write a comment …" : "Schreiben Sie einen Kommentar …",
|
||||
"Post comment" : "Kommentar veröffentlichen",
|
||||
"@ for mentions, : for emoji, / for smart picker" : "@ für Erwähnungen, : für Emoji, / für Smart Picker",
|
||||
"Could not reload comments" : "Kommentare konnten nicht erneut geladen werden",
|
||||
|
||||
@@ -15,6 +15,7 @@ OC.L10N.register(
|
||||
"Edit comment" : "Επεξεργασία σχολίου",
|
||||
"Delete comment" : "Διαγραφή σχολίου",
|
||||
"Cancel edit" : "Ακύρωση επεξεργασίας",
|
||||
"New comment" : "Νέο σχόλιο",
|
||||
"Post comment" : "Αναρτήστε σχόλιο",
|
||||
"No comments yet, start the conversation!" : "Δεν υπάρχουν σχόλια, ξεκινήστε την συζήτηση!",
|
||||
"No more messages" : "Δεν υπάρχουν άλλα μηνύματα",
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
"Edit comment" : "Επεξεργασία σχολίου",
|
||||
"Delete comment" : "Διαγραφή σχολίου",
|
||||
"Cancel edit" : "Ακύρωση επεξεργασίας",
|
||||
"New comment" : "Νέο σχόλιο",
|
||||
"Post comment" : "Αναρτήστε σχόλιο",
|
||||
"No comments yet, start the conversation!" : "Δεν υπάρχουν σχόλια, ξεκινήστε την συζήτηση!",
|
||||
"No more messages" : "Δεν υπάρχουν άλλα μηνύματα",
|
||||
|
||||
@@ -15,6 +15,8 @@ OC.L10N.register(
|
||||
"Edit comment" : "Edit comment",
|
||||
"Delete comment" : "Delete comment",
|
||||
"Cancel edit" : "Cancel edit",
|
||||
"New comment" : "New comment",
|
||||
"Write a comment …" : "Write a comment …",
|
||||
"Post comment" : "Post comment",
|
||||
"@ for mentions, : for emoji, / for smart picker" : "@ for mentions, : for emoji, / for smart picker",
|
||||
"Could not reload comments" : "Could not reload comments",
|
||||
|
||||
@@ -13,6 +13,8 @@
|
||||
"Edit comment" : "Edit comment",
|
||||
"Delete comment" : "Delete comment",
|
||||
"Cancel edit" : "Cancel edit",
|
||||
"New comment" : "New comment",
|
||||
"Write a comment …" : "Write a comment …",
|
||||
"Post comment" : "Post comment",
|
||||
"@ for mentions, : for emoji, / for smart picker" : "@ for mentions, : for emoji, / for smart picker",
|
||||
"Could not reload comments" : "Could not reload comments",
|
||||
|
||||
@@ -15,6 +15,8 @@ OC.L10N.register(
|
||||
"Edit comment" : "Editar comentario",
|
||||
"Delete comment" : "Borrar comentario",
|
||||
"Cancel edit" : "Cacelar edición",
|
||||
"New comment" : "Comentario nuevo",
|
||||
"Write a comment …" : "Escribir un comentario …",
|
||||
"Post comment" : "Publicar comentario",
|
||||
"@ for mentions, : for emoji, / for smart picker" : "@ para menciones, : para emoji, / para selector inteligente",
|
||||
"Could not reload comments" : "No se pudieron recargar los comentarios",
|
||||
|
||||
@@ -13,6 +13,8 @@
|
||||
"Edit comment" : "Editar comentario",
|
||||
"Delete comment" : "Borrar comentario",
|
||||
"Cancel edit" : "Cacelar edición",
|
||||
"New comment" : "Comentario nuevo",
|
||||
"Write a comment …" : "Escribir un comentario …",
|
||||
"Post comment" : "Publicar comentario",
|
||||
"@ for mentions, : for emoji, / for smart picker" : "@ para menciones, : para emoji, / para selector inteligente",
|
||||
"Could not reload comments" : "No se pudieron recargar los comentarios",
|
||||
|
||||
@@ -15,6 +15,8 @@ OC.L10N.register(
|
||||
"Edit comment" : "Modifier le commentaire",
|
||||
"Delete comment" : "Supprimer le commentaire",
|
||||
"Cancel edit" : "Annuler les modifications",
|
||||
"New comment" : "Nouveau commentaire",
|
||||
"Write a comment …" : "Écrire un commentaire…",
|
||||
"Post comment" : "Publier le commentaire",
|
||||
"@ for mentions, : for emoji, / for smart picker" : "@ pour les mentions, : pour les émojis, / pour le sélecteur intelligent",
|
||||
"Could not reload comments" : "Impossible de rafraichir les commentaires",
|
||||
|
||||
@@ -13,6 +13,8 @@
|
||||
"Edit comment" : "Modifier le commentaire",
|
||||
"Delete comment" : "Supprimer le commentaire",
|
||||
"Cancel edit" : "Annuler les modifications",
|
||||
"New comment" : "Nouveau commentaire",
|
||||
"Write a comment …" : "Écrire un commentaire…",
|
||||
"Post comment" : "Publier le commentaire",
|
||||
"@ for mentions, : for emoji, / for smart picker" : "@ pour les mentions, : pour les émojis, / pour le sélecteur intelligent",
|
||||
"Could not reload comments" : "Impossible de rafraichir les commentaires",
|
||||
|
||||
@@ -15,6 +15,7 @@ OC.L10N.register(
|
||||
"Edit comment" : "Editar comentario",
|
||||
"Delete comment" : "Eliminar comentario",
|
||||
"Cancel edit" : "Cancelar a edición",
|
||||
"New comment" : "Comentario novo",
|
||||
"Post comment" : "Publicar comentario",
|
||||
"@ for mentions, : for emoji, / for smart picker" : "@ para mencións, : para «emoji», / para selector intelixente",
|
||||
"Could not reload comments" : "Non foi posíbel volver cargar os comentarios",
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
"Edit comment" : "Editar comentario",
|
||||
"Delete comment" : "Eliminar comentario",
|
||||
"Cancel edit" : "Cancelar a edición",
|
||||
"New comment" : "Comentario novo",
|
||||
"Post comment" : "Publicar comentario",
|
||||
"@ for mentions, : for emoji, / for smart picker" : "@ para mencións, : para «emoji», / para selector intelixente",
|
||||
"Could not reload comments" : "Non foi posíbel volver cargar os comentarios",
|
||||
|
||||
@@ -15,6 +15,8 @@ OC.L10N.register(
|
||||
"Edit comment" : "Modifica commento",
|
||||
"Delete comment" : "Elimina commento",
|
||||
"Cancel edit" : "Annulla modifica",
|
||||
"New comment" : "Nuovo commento",
|
||||
"Write a comment …" : "Scrivi un commento...",
|
||||
"Post comment" : "Pubblica commento",
|
||||
"@ for mentions, : for emoji, / for smart picker" : "@ per menzioni, : per emoji, / per selettore intelligente",
|
||||
"Could not reload comments" : "Impossibile ricaricare i commenti",
|
||||
|
||||
@@ -13,6 +13,8 @@
|
||||
"Edit comment" : "Modifica commento",
|
||||
"Delete comment" : "Elimina commento",
|
||||
"Cancel edit" : "Annulla modifica",
|
||||
"New comment" : "Nuovo commento",
|
||||
"Write a comment …" : "Scrivi un commento...",
|
||||
"Post comment" : "Pubblica commento",
|
||||
"@ for mentions, : for emoji, / for smart picker" : "@ per menzioni, : per emoji, / per selettore intelligente",
|
||||
"Could not reload comments" : "Impossibile ricaricare i commenti",
|
||||
|
||||
@@ -15,6 +15,8 @@ OC.L10N.register(
|
||||
"Edit comment" : "コメントを編集",
|
||||
"Delete comment" : "コメントを削除",
|
||||
"Cancel edit" : "編集をキャンセル",
|
||||
"New comment" : "新しいコメント",
|
||||
"Write a comment …" : "コメントを書く...",
|
||||
"Post comment" : "コメントを投稿",
|
||||
"@ for mentions, : for emoji, / for smart picker" : "メンションには@、絵文字には:、スマートピッカーには/",
|
||||
"Could not reload comments" : "コメントをリロードできませんでした",
|
||||
|
||||
@@ -13,6 +13,8 @@
|
||||
"Edit comment" : "コメントを編集",
|
||||
"Delete comment" : "コメントを削除",
|
||||
"Cancel edit" : "編集をキャンセル",
|
||||
"New comment" : "新しいコメント",
|
||||
"Write a comment …" : "コメントを書く...",
|
||||
"Post comment" : "コメントを投稿",
|
||||
"@ for mentions, : for emoji, / for smart picker" : "メンションには@、絵文字には:、スマートピッカーには/",
|
||||
"Could not reload comments" : "コメントをリロードできませんでした",
|
||||
|
||||
@@ -9,13 +9,28 @@ OC.L10N.register(
|
||||
"%1$s commented on %2$s" : "%2$s에 %1$s 님이 댓글 남김",
|
||||
"{author} commented on {file}" : "{author} 님이 {file}에 댓글 남김",
|
||||
"<strong>Comments</strong> for files" : "파일의 <strong>댓글</strong>",
|
||||
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "삭제된 사용자가 남긴 “{file}”의 댓글에서 나를 언급함",
|
||||
"{user} mentioned you in a comment on \"{file}\"" : "{user} 님이 “{file}”에 남긴 댓글에서 나를 언급함",
|
||||
"Files app plugin to add comments to files" : "파일에 댓글을 남기는 파일 앱 플러그인",
|
||||
"Edit comment" : "댓글 편집",
|
||||
"Delete comment" : "댓글 삭제",
|
||||
"Cancel edit" : "편집 취소",
|
||||
"New comment" : "새로운 댓글",
|
||||
"Write a comment …" : "댓글 쓰기 ...",
|
||||
"Post comment" : "댓글 게시",
|
||||
"@ for mentions, : for emoji, / for smart picker" : "@을 입력해 언급, :을 입력해 이모지 추가, /을 입력해 스마트 피커를 사용하십시오.",
|
||||
"Could not reload comments" : "댓글을 다시 불러올 수 없음",
|
||||
"No comments yet, start the conversation!" : "아직 댓글이 없습니다. 대화를 시작하십시오!",
|
||||
"No more messages" : "메시지 더 이상 없음",
|
||||
"Retry" : "다시 시도",
|
||||
"Failed to mark comments as read" : "댓글을 읽음 표시할 수 없음",
|
||||
"Unable to load the comments list" : "댓글 목록을 불러올 수 없음",
|
||||
"_1 new comment_::_{unread} new comments_" : ["새 댓글 {unread}개"],
|
||||
"Comment" : "설명",
|
||||
"An error occurred while trying to edit the comment" : "댓글을 편집하는 중 오류 발생",
|
||||
"Comment deleted" : "댓글이 삭제됨",
|
||||
"An error occurred while trying to delete the comment" : "댓글을 삭제하는 중 오류 발생",
|
||||
"An error occurred while trying to create the comment" : "댓글을 작성하는 중 오류 발생",
|
||||
"_%n unread comment_::_%n unread comments_" : ["읽지 않은 댓글 %n개"]
|
||||
},
|
||||
"nplurals=1; plural=0;");
|
||||
|
||||
@@ -7,13 +7,28 @@
|
||||
"%1$s commented on %2$s" : "%2$s에 %1$s 님이 댓글 남김",
|
||||
"{author} commented on {file}" : "{author} 님이 {file}에 댓글 남김",
|
||||
"<strong>Comments</strong> for files" : "파일의 <strong>댓글</strong>",
|
||||
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "삭제된 사용자가 남긴 “{file}”의 댓글에서 나를 언급함",
|
||||
"{user} mentioned you in a comment on \"{file}\"" : "{user} 님이 “{file}”에 남긴 댓글에서 나를 언급함",
|
||||
"Files app plugin to add comments to files" : "파일에 댓글을 남기는 파일 앱 플러그인",
|
||||
"Edit comment" : "댓글 편집",
|
||||
"Delete comment" : "댓글 삭제",
|
||||
"Cancel edit" : "편집 취소",
|
||||
"New comment" : "새로운 댓글",
|
||||
"Write a comment …" : "댓글 쓰기 ...",
|
||||
"Post comment" : "댓글 게시",
|
||||
"@ for mentions, : for emoji, / for smart picker" : "@을 입력해 언급, :을 입력해 이모지 추가, /을 입력해 스마트 피커를 사용하십시오.",
|
||||
"Could not reload comments" : "댓글을 다시 불러올 수 없음",
|
||||
"No comments yet, start the conversation!" : "아직 댓글이 없습니다. 대화를 시작하십시오!",
|
||||
"No more messages" : "메시지 더 이상 없음",
|
||||
"Retry" : "다시 시도",
|
||||
"Failed to mark comments as read" : "댓글을 읽음 표시할 수 없음",
|
||||
"Unable to load the comments list" : "댓글 목록을 불러올 수 없음",
|
||||
"_1 new comment_::_{unread} new comments_" : ["새 댓글 {unread}개"],
|
||||
"Comment" : "설명",
|
||||
"An error occurred while trying to edit the comment" : "댓글을 편집하는 중 오류 발생",
|
||||
"Comment deleted" : "댓글이 삭제됨",
|
||||
"An error occurred while trying to delete the comment" : "댓글을 삭제하는 중 오류 발생",
|
||||
"An error occurred while trying to create the comment" : "댓글을 작성하는 중 오류 발생",
|
||||
"_%n unread comment_::_%n unread comments_" : ["읽지 않은 댓글 %n개"]
|
||||
},"pluralForm" :"nplurals=1; plural=0;"
|
||||
}
|
||||
@@ -13,6 +13,7 @@ OC.L10N.register(
|
||||
"Edit comment" : "Taisyti komentarą",
|
||||
"Delete comment" : "Ištrinti komentarą",
|
||||
"Cancel edit" : "Atsisakyti taisymo",
|
||||
"New comment" : "Naujas komentaras",
|
||||
"Post comment" : "Paskelbti komentarą",
|
||||
"No comments yet, start the conversation!" : "Komentarų kol kas nėra, pradėkite pokalbį!",
|
||||
"Retry" : "Bandyti dar kartą",
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
"Edit comment" : "Taisyti komentarą",
|
||||
"Delete comment" : "Ištrinti komentarą",
|
||||
"Cancel edit" : "Atsisakyti taisymo",
|
||||
"New comment" : "Naujas komentaras",
|
||||
"Post comment" : "Paskelbti komentarą",
|
||||
"No comments yet, start the conversation!" : "Komentarų kol kas nėra, pradėkite pokalbį!",
|
||||
"Retry" : "Bandyti dar kartą",
|
||||
|
||||
@@ -15,6 +15,7 @@ OC.L10N.register(
|
||||
"Edit comment" : "Edytuj komentarz",
|
||||
"Delete comment" : "Usuń komentarz",
|
||||
"Cancel edit" : "Anuluj edycję",
|
||||
"New comment" : "Nowy komentarz",
|
||||
"Post comment" : "Wyślij komentarz",
|
||||
"@ for mentions, : for emoji, / for smart picker" : "@ dla wzmianek, : dla emoji, / dla inteligentnego wybierania",
|
||||
"Could not reload comments" : "Nie można ponownie załadować komentarzy",
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
"Edit comment" : "Edytuj komentarz",
|
||||
"Delete comment" : "Usuń komentarz",
|
||||
"Cancel edit" : "Anuluj edycję",
|
||||
"New comment" : "Nowy komentarz",
|
||||
"Post comment" : "Wyślij komentarz",
|
||||
"@ for mentions, : for emoji, / for smart picker" : "@ dla wzmianek, : dla emoji, / dla inteligentnego wybierania",
|
||||
"Could not reload comments" : "Nie można ponownie załadować komentarzy",
|
||||
|
||||
@@ -15,6 +15,7 @@ OC.L10N.register(
|
||||
"Edit comment" : "Editar comentário",
|
||||
"Delete comment" : "Excluir comentário",
|
||||
"Cancel edit" : "Cancelar edição",
|
||||
"New comment" : "Novo comentário",
|
||||
"Post comment" : "Postar comentário",
|
||||
"@ for mentions, : for emoji, / for smart picker" : "@ para menções, : para emoji, / para seletor inteligente",
|
||||
"Could not reload comments" : "Não foi possível recarregar comentários",
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
"Edit comment" : "Editar comentário",
|
||||
"Delete comment" : "Excluir comentário",
|
||||
"Cancel edit" : "Cancelar edição",
|
||||
"New comment" : "Novo comentário",
|
||||
"Post comment" : "Postar comentário",
|
||||
"@ for mentions, : for emoji, / for smart picker" : "@ para menções, : para emoji, / para seletor inteligente",
|
||||
"Could not reload comments" : "Não foi possível recarregar comentários",
|
||||
|
||||
@@ -15,6 +15,8 @@ OC.L10N.register(
|
||||
"Edit comment" : "Измени коментар",
|
||||
"Delete comment" : "Обриши коментар",
|
||||
"Cancel edit" : "Поништи измену",
|
||||
"New comment" : "Нови коментар",
|
||||
"Write a comment …" : "Напишите коментар…",
|
||||
"Post comment" : "Објави коментар",
|
||||
"@ for mentions, : for emoji, / for smart picker" : "@ за помињања, : за емођи, / за паметни бирач",
|
||||
"Could not reload comments" : "Коментари не могу поново да се учитају",
|
||||
|
||||
@@ -13,6 +13,8 @@
|
||||
"Edit comment" : "Измени коментар",
|
||||
"Delete comment" : "Обриши коментар",
|
||||
"Cancel edit" : "Поништи измену",
|
||||
"New comment" : "Нови коментар",
|
||||
"Write a comment …" : "Напишите коментар…",
|
||||
"Post comment" : "Објави коментар",
|
||||
"@ for mentions, : for emoji, / for smart picker" : "@ за помињања, : за емођи, / за паметни бирач",
|
||||
"Could not reload comments" : "Коментари не могу поново да се учитају",
|
||||
|
||||
@@ -15,6 +15,8 @@ OC.L10N.register(
|
||||
"Edit comment" : "Redigera kommentar",
|
||||
"Delete comment" : "Ta bort kommentar",
|
||||
"Cancel edit" : "Avbryt redigering",
|
||||
"New comment" : "Ny kommentar",
|
||||
"Write a comment …" : "Skriv en kommentar ...",
|
||||
"Post comment" : "Publicera kommentar",
|
||||
"@ for mentions, : for emoji, / for smart picker" : "@ för omnämnanden, : för emoji, / för smart picker",
|
||||
"Could not reload comments" : "Kunde inte ladda om kommentarer",
|
||||
|
||||
@@ -13,6 +13,8 @@
|
||||
"Edit comment" : "Redigera kommentar",
|
||||
"Delete comment" : "Ta bort kommentar",
|
||||
"Cancel edit" : "Avbryt redigering",
|
||||
"New comment" : "Ny kommentar",
|
||||
"Write a comment …" : "Skriv en kommentar ...",
|
||||
"Post comment" : "Publicera kommentar",
|
||||
"@ for mentions, : for emoji, / for smart picker" : "@ för omnämnanden, : för emoji, / för smart picker",
|
||||
"Could not reload comments" : "Kunde inte ladda om kommentarer",
|
||||
|
||||
@@ -15,6 +15,8 @@ OC.L10N.register(
|
||||
"Edit comment" : "Yorumu düzenle",
|
||||
"Delete comment" : "Yorumu sil",
|
||||
"Cancel edit" : "Düzenlemeyi iptal et",
|
||||
"New comment" : "Yorum ekle",
|
||||
"Write a comment …" : "Bir yorum yazın…",
|
||||
"Post comment" : "Yorum gönder",
|
||||
"@ for mentions, : for emoji, / for smart picker" : "Anmalar için @, emojiler için :, akıllı seçici için /",
|
||||
"Could not reload comments" : "Yorumlar yeniden yüklenemedi",
|
||||
|
||||
@@ -13,6 +13,8 @@
|
||||
"Edit comment" : "Yorumu düzenle",
|
||||
"Delete comment" : "Yorumu sil",
|
||||
"Cancel edit" : "Düzenlemeyi iptal et",
|
||||
"New comment" : "Yorum ekle",
|
||||
"Write a comment …" : "Bir yorum yazın…",
|
||||
"Post comment" : "Yorum gönder",
|
||||
"@ for mentions, : for emoji, / for smart picker" : "Anmalar için @, emojiler için :, akıllı seçici için /",
|
||||
"Could not reload comments" : "Yorumlar yeniden yüklenemedi",
|
||||
|
||||
@@ -15,6 +15,8 @@ OC.L10N.register(
|
||||
"Edit comment" : "Редагувати коментар",
|
||||
"Delete comment" : "Вилучити коментар",
|
||||
"Cancel edit" : "Скасувати редагування",
|
||||
"New comment" : "Новий коментар",
|
||||
"Write a comment …" : "Додати коментар ...",
|
||||
"Post comment" : "Опублікувати коментар",
|
||||
"@ for mentions, : for emoji, / for smart picker" : "@ for згадування, : для емоційок, / для асистента з вибору",
|
||||
"Could not reload comments" : "Не вдалося перезавантажити коментарі",
|
||||
|
||||
@@ -13,6 +13,8 @@
|
||||
"Edit comment" : "Редагувати коментар",
|
||||
"Delete comment" : "Вилучити коментар",
|
||||
"Cancel edit" : "Скасувати редагування",
|
||||
"New comment" : "Новий коментар",
|
||||
"Write a comment …" : "Додати коментар ...",
|
||||
"Post comment" : "Опублікувати коментар",
|
||||
"@ for mentions, : for emoji, / for smart picker" : "@ for згадування, : для емоційок, / для асистента з вибору",
|
||||
"Could not reload comments" : "Не вдалося перезавантажити коментарі",
|
||||
|
||||
@@ -15,6 +15,7 @@ OC.L10N.register(
|
||||
"Edit comment" : "编辑评论",
|
||||
"Delete comment" : "删除评论",
|
||||
"Cancel edit" : "取消编辑",
|
||||
"New comment" : "新评论",
|
||||
"Post comment" : "发表评论",
|
||||
"@ for mentions, : for emoji, / for smart picker" : "使用“@”提及,“:”输入表情符号,“/”唤起智能选择",
|
||||
"Could not reload comments" : "无法重载评论",
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
"Edit comment" : "编辑评论",
|
||||
"Delete comment" : "删除评论",
|
||||
"Cancel edit" : "取消编辑",
|
||||
"New comment" : "新评论",
|
||||
"Post comment" : "发表评论",
|
||||
"@ for mentions, : for emoji, / for smart picker" : "使用“@”提及,“:”输入表情符号,“/”唤起智能选择",
|
||||
"Could not reload comments" : "无法重载评论",
|
||||
|
||||
@@ -15,6 +15,8 @@ OC.L10N.register(
|
||||
"Edit comment" : "編輯留言",
|
||||
"Delete comment" : "刪除留言",
|
||||
"Cancel edit" : "取消編輯",
|
||||
"New comment" : "新評論",
|
||||
"Write a comment …" : "發表評論 ...",
|
||||
"Post comment" : "張貼留言",
|
||||
"@ for mentions, : for emoji, / for smart picker" : "“@” 表示提及,“:” 表示表情符號,“/” 表示智慧型選擇器",
|
||||
"Could not reload comments" : "無法重新加載評論",
|
||||
|
||||
@@ -13,6 +13,8 @@
|
||||
"Edit comment" : "編輯留言",
|
||||
"Delete comment" : "刪除留言",
|
||||
"Cancel edit" : "取消編輯",
|
||||
"New comment" : "新評論",
|
||||
"Write a comment …" : "發表評論 ...",
|
||||
"Post comment" : "張貼留言",
|
||||
"@ for mentions, : for emoji, / for smart picker" : "“@” 表示提及,“:” 表示表情符號,“/” 表示智慧型選擇器",
|
||||
"Could not reload comments" : "無法重新加載評論",
|
||||
|
||||
@@ -15,6 +15,8 @@ OC.L10N.register(
|
||||
"Edit comment" : "編輯留言",
|
||||
"Delete comment" : "刪除留言",
|
||||
"Cancel edit" : "取消編輯",
|
||||
"New comment" : "新留言",
|
||||
"Write a comment …" : "編寫留言……",
|
||||
"Post comment" : "張貼留言",
|
||||
"@ for mentions, : for emoji, / for smart picker" : "@ 表示提及、: 表示表情符號、/ 表示智慧型選取程式",
|
||||
"Could not reload comments" : "無法重新載入留言",
|
||||
|
||||
@@ -13,6 +13,8 @@
|
||||
"Edit comment" : "編輯留言",
|
||||
"Delete comment" : "刪除留言",
|
||||
"Cancel edit" : "取消編輯",
|
||||
"New comment" : "新留言",
|
||||
"Write a comment …" : "編寫留言……",
|
||||
"Post comment" : "張貼留言",
|
||||
"@ for mentions, : for emoji, / for smart picker" : "@ 表示提及、: 表示表情符號、/ 表示智慧型選取程式",
|
||||
"Could not reload comments" : "無法重新載入留言",
|
||||
|
||||
@@ -26,7 +26,7 @@ namespace OCA\Comments\Controller;
|
||||
|
||||
use OCP\AppFramework\Controller;
|
||||
use OCP\AppFramework\Http;
|
||||
use OCP\AppFramework\Http\Attribute\IgnoreOpenAPI;
|
||||
use OCP\AppFramework\Http\Attribute\OpenAPI;
|
||||
use OCP\AppFramework\Http\NotFoundResponse;
|
||||
use OCP\AppFramework\Http\RedirectResponse;
|
||||
use OCP\Comments\IComment;
|
||||
@@ -41,7 +41,7 @@ use OCP\Notification\IManager;
|
||||
/**
|
||||
* @package OCA\Comments\Controller
|
||||
*/
|
||||
#[IgnoreOpenAPI]
|
||||
#[OpenAPI(scope: OpenAPI::SCOPE_IGNORE)]
|
||||
class NotificationsController extends Controller {
|
||||
public function __construct(
|
||||
string $appName,
|
||||
|
||||
@@ -30,6 +30,7 @@ use OCP\EventDispatcher\Event;
|
||||
use OCP\EventDispatcher\IEventListener;
|
||||
use OCP\Files\IRootFolder;
|
||||
|
||||
/** @template-implements IEventListener<CommentsEntityEvent> */
|
||||
class CommentsEntityEventListener implements IEventListener {
|
||||
public function __construct(
|
||||
private IRootFolder $rootFolder,
|
||||
|
||||
@@ -33,6 +33,7 @@ use OCP\EventDispatcher\Event;
|
||||
use OCP\EventDispatcher\IEventListener;
|
||||
use OCP\Util;
|
||||
|
||||
/** @template-implements IEventListener<LoadAdditionalScriptsEvent> */
|
||||
class LoadAdditionalScripts implements IEventListener {
|
||||
public function handle(Event $event): void {
|
||||
if (!($event instanceof LoadAdditionalScriptsEvent)) {
|
||||
|
||||
@@ -35,6 +35,7 @@ use OCP\EventDispatcher\Event;
|
||||
use OCP\EventDispatcher\IEventListener;
|
||||
use OCP\Util;
|
||||
|
||||
/** @template-implements IEventListener<LoadSidebar> */
|
||||
class LoadSidebarScripts implements IEventListener {
|
||||
public function __construct(
|
||||
private ICommentsManager $commentsManager,
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
OC.L10N.register(
|
||||
"contactsinteraction",
|
||||
{
|
||||
"Recently contacted" : "Нещодавно спілкувався",
|
||||
"Recently contacted" : "Нещодавно спілкувалися",
|
||||
"Contacts Interaction" : "Взаємодія з контактами",
|
||||
"Manages interaction between users and contacts" : "Керує взаємодією між користувачами та контактами",
|
||||
"Collect data about user and contacts interactions and provide an address book for the data" : "Збирайте дані про взаємодію користувачів і контактів і створюйте адресну книгу для цих даних"
|
||||
"Collect data about user and contacts interactions and provide an address book for the data" : "Збирайте дані про взаємодію користувачів і контактів та створюйте адресну книгу на основі цих даних"
|
||||
},
|
||||
"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);");
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{ "translations": {
|
||||
"Recently contacted" : "Нещодавно спілкувався",
|
||||
"Recently contacted" : "Нещодавно спілкувалися",
|
||||
"Contacts Interaction" : "Взаємодія з контактами",
|
||||
"Manages interaction between users and contacts" : "Керує взаємодією між користувачами та контактами",
|
||||
"Collect data about user and contacts interactions and provide an address book for the data" : "Збирайте дані про взаємодію користувачів і контактів і створюйте адресну книгу для цих даних"
|
||||
"Collect data about user and contacts interactions and provide an address book for the data" : "Збирайте дані про взаємодію користувачів і контактів та створюйте адресну книгу на основі цих даних"
|
||||
},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);"
|
||||
}
|
||||
@@ -40,6 +40,7 @@ use Psr\Log\LoggerInterface;
|
||||
use Sabre\VObject\Component\VCard;
|
||||
use Sabre\VObject\UUIDUtil;
|
||||
|
||||
/** @template-implements IEventListener<ContactInteractedWithEvent> */
|
||||
class ContactInteractionListener implements IEventListener {
|
||||
|
||||
use TTransactional;
|
||||
@@ -74,7 +75,7 @@ class ContactInteractionListener implements IEventListener {
|
||||
$uid = $event->getUid();
|
||||
$email = $event->getEmail();
|
||||
$federatedCloudId = $event->getFederatedCloudId();
|
||||
|
||||
|
||||
$existingContact = $this->cardSearchDao->findExisting(
|
||||
$event->getActor(),
|
||||
$uid,
|
||||
|
||||
@@ -34,7 +34,7 @@ use OCA\Files\Event\LoadSidebar;
|
||||
use OCA\Viewer\Event\LoadViewer;
|
||||
use OCP\AppFramework\Controller;
|
||||
use OCP\AppFramework\Http;
|
||||
use OCP\AppFramework\Http\Attribute\IgnoreOpenAPI;
|
||||
use OCP\AppFramework\Http\Attribute\OpenAPI;
|
||||
use OCP\AppFramework\Http\JSONResponse;
|
||||
use OCP\AppFramework\Http\TemplateResponse;
|
||||
use OCP\AppFramework\Services\IInitialState;
|
||||
@@ -46,7 +46,7 @@ use OCP\IConfig;
|
||||
use OCP\IL10N;
|
||||
use OCP\IRequest;
|
||||
|
||||
#[IgnoreOpenAPI]
|
||||
#[OpenAPI(scope: OpenAPI::SCOPE_IGNORE)]
|
||||
class DashboardController extends Controller {
|
||||
|
||||
/** @var IInitialState */
|
||||
|
||||
@@ -74,7 +74,8 @@
|
||||
:checked="isStatusActive(status)"
|
||||
@input="updateStatusCheckbox(status, $event.target.checked)">
|
||||
<label :for="'status-checkbox-' + status">
|
||||
<span :class="statusInfo[status].icon" aria-hidden="true" />
|
||||
<NcUserStatusIcon v-if="status === 'status'" status="online" aria-hidden="true" />
|
||||
<span v-else :class="statusInfo[status].icon" aria-hidden="true" />
|
||||
{{ statusInfo[status].text }}
|
||||
</label>
|
||||
</li>
|
||||
@@ -124,6 +125,7 @@ import axios from '@nextcloud/axios'
|
||||
import NcButton from '@nextcloud/vue/dist/Components/NcButton.js'
|
||||
import Draggable from 'vuedraggable'
|
||||
import NcModal from '@nextcloud/vue/dist/Components/NcModal.js'
|
||||
import NcUserStatusIcon from '@nextcloud/vue/dist/Components/NcUserStatusIcon.js'
|
||||
import Pencil from 'vue-material-design-icons/Pencil.vue'
|
||||
import Vue from 'vue'
|
||||
|
||||
@@ -140,7 +142,6 @@ const statusInfo = {
|
||||
},
|
||||
status: {
|
||||
text: t('dashboard', 'Status'),
|
||||
icon: 'icon-user-status-online',
|
||||
},
|
||||
}
|
||||
|
||||
@@ -152,6 +153,7 @@ export default {
|
||||
Draggable,
|
||||
NcModal,
|
||||
Pencil,
|
||||
NcUserStatusIcon,
|
||||
},
|
||||
mixins: [
|
||||
isMobile,
|
||||
|
||||
@@ -73,7 +73,7 @@ $linkCheckPlugin = new \OCA\DAV\Files\Sharing\PublicLinkCheckPlugin();
|
||||
$filesDropPlugin = new \OCA\DAV\Files\Sharing\FilesDropPlugin();
|
||||
|
||||
$server = $serverFactory->createServer($baseuri, $requestUri, $authPlugin, function (\Sabre\DAV\Server $server) use ($authBackend, $linkCheckPlugin, $filesDropPlugin) {
|
||||
$isAjax = (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] === 'XMLHttpRequest');
|
||||
$isAjax = in_array('XMLHttpRequest', explode(',', $_SERVER['HTTP_X_REQUESTED_WITH'] ?? ''));
|
||||
/** @var \OCA\FederatedFileSharing\FederatedShareProvider $shareProvider */
|
||||
$federatedShareProvider = \OC::$server->query(\OCA\FederatedFileSharing\FederatedShareProvider::class);
|
||||
if ($federatedShareProvider->isOutgoingServer2serverShareEnabled() === false && !$isAjax) {
|
||||
|
||||
@@ -96,7 +96,7 @@ preg_match('/(^files\/\w+)/i', substr($requestUri, strlen($baseuri)), $match);
|
||||
$baseuri = $baseuri . $match[0];
|
||||
|
||||
$server = $serverFactory->createServer($baseuri, $requestUri, $authPlugin, function (\Sabre\DAV\Server $server) use ($authBackend, $linkCheckPlugin, $filesDropPlugin) {
|
||||
$isAjax = (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] === 'XMLHttpRequest');
|
||||
$isAjax = in_array('XMLHttpRequest', explode(',', $_SERVER['HTTP_X_REQUESTED_WITH'] ?? ''));
|
||||
$federatedShareProvider = \OCP\Server::get(FederatedShareProvider::class);
|
||||
if ($federatedShareProvider->isOutgoingServer2serverShareEnabled() === false && !$isAjax) {
|
||||
// this is what is thrown when trying to access a non-existing share
|
||||
|
||||
@@ -1 +1 @@
|
||||
<svg width="16" height="16" version="1.1" viewbox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="m4 1c-0.5 0-1 0.5-1 1v2c0 0.5 0.5 1 1 1s1-0.5 1-1v-2c0-0.5-0.5-1-1-1zm8 0c-0.5 0-1 0.5-1 1v2c0 0.5 0.5 1 1 1s1-0.5 1-1v-2c0-0.5-0.5-1-1-1zm-6.5 2v1c0 0.831-0.5 1.5-1.5 1.5s-1.5-0.5-1.5-1.5v-0.9375c-0.8841 0.227-1.5 1.0247-1.5 1.9375v8c0 1.108 0.892 2 2 2h10c1.108 0 2-0.892 2-2v-8c0-0.9128-0.61588-1.7105-1.5-1.9375v0.9375c0 0.831-0.5 1.5-1.5 1.5s-1.5-0.5-1.5-1.5v-1zm7.5 5v5h-10v-5z"/></svg>
|
||||
<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="m4 1c-0.5 0-1 0.5-1 1v2c0 0.5 0.5 1 1 1s1-0.5 1-1v-2c0-0.5-0.5-1-1-1zm8 0c-0.5 0-1 0.5-1 1v2c0 0.5 0.5 1 1 1s1-0.5 1-1v-2c0-0.5-0.5-1-1-1zm-6.5 2v1c0 0.831-0.5 1.5-1.5 1.5s-1.5-0.5-1.5-1.5v-0.9375c-0.8841 0.227-1.5 1.0247-1.5 1.9375v8c0 1.108 0.892 2 2 2h10c1.108 0 2-0.892 2-2v-8c0-0.9128-0.61588-1.7105-1.5-1.9375v0.9375c0 0.831-0.5 1.5-1.5 1.5s-1.5-0.5-1.5-1.5v-1zm7.5 5v5h-10v-5z"/></svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 499 B After Width: | Height: | Size: 499 B |
+6
-6
@@ -178,8 +178,8 @@ OC.L10N.register(
|
||||
"Friday" : "Viernes",
|
||||
"Saturday" : "Sábado",
|
||||
"Sunday" : "Domingo",
|
||||
"Pick a start time for {dayName}" : "Elige una hora de inicio para {dayName}",
|
||||
"Pick a end time for {dayName}" : "Elige una hora de fin para {dayName}",
|
||||
"Pick a start time for {dayName}" : "Elija una hora de inicio para {dayName}",
|
||||
"Pick a end time for {dayName}" : "Elija una hora fin para {dayName}",
|
||||
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Cambiar automáticamente el estado del usuario a \"No molestar\" cuando no esté disponible para silenciar todas las notificaciones.",
|
||||
"Failed to load availability" : "No se ha podido cargar la disponibilidad",
|
||||
"Saved availability" : "Disponibilidad guardada",
|
||||
@@ -194,12 +194,12 @@ OC.L10N.register(
|
||||
"Birthday calendars will be generated by a background job." : "Los calendarios de cumpleaños se generarán mediante un trabajo en segundo plano.",
|
||||
"Hence they will not be available immediately after enabling but will show up after some time." : "Por ello, no estarán disponibles inmediatamente tras activarlos, sino que aparecerán después de cierto tiempo.",
|
||||
"Send notifications for events" : "Enviar notificaciones de los eventos",
|
||||
"Notifications are sent via background jobs, so these must occur often enough." : "Las notificaciones son enviadas a través de trabajos en segundo plano, por lo que estos deben ocurrir con la suficiente frecuencia.",
|
||||
"Notifications are sent via background jobs, so these must occur often enough." : "Las notificaciones son enviadas a través de trabajos en segundo plano, por lo que estos deben ocurrir con suficiente frecuencia.",
|
||||
"Send reminder notifications to calendar sharees as well" : "Enviar recordatorio también a los usuarios con los que se comparte el calendario",
|
||||
"Reminders are always sent to organizers and attendees." : "Los recordatorios siempre se envía a los organizadores y asistentes.",
|
||||
"Reminders are always sent to organizers and attendees." : "Los recordatorios siempre se envían a los organizadores y asistentes.",
|
||||
"Enable notifications for events via push" : "Activar notificaciones push para eventos",
|
||||
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Instala también la {calendarappstoreopen}app de Calendario{linkclose} o {calendardocopen}conecta tu escritorio y móvil para sincronizar ↗{linkclose}.",
|
||||
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Por favor, asegúrate de configurar correctamente {emailopen}el servidor web{linkclose}",
|
||||
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Instale también la {calendarappstoreopen}app de Calendario{linkclose} o {calendardocopen}conecte su escritorio y móvil para sincronizar ↗{linkclose}.",
|
||||
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Por favor, asegúrese de configurar correctamente {emailopen}el servidor web{linkclose}",
|
||||
"There was an error updating your attendance status." : "Ha habido un error al actualizar tu estado de asistencia.",
|
||||
"Please contact the organizer directly." : "Por favor, contacta directamente con el organizador.",
|
||||
"Are you accepting the invitation?" : "¿Aceptas la invitación?",
|
||||
|
||||
@@ -176,8 +176,8 @@
|
||||
"Friday" : "Viernes",
|
||||
"Saturday" : "Sábado",
|
||||
"Sunday" : "Domingo",
|
||||
"Pick a start time for {dayName}" : "Elige una hora de inicio para {dayName}",
|
||||
"Pick a end time for {dayName}" : "Elige una hora de fin para {dayName}",
|
||||
"Pick a start time for {dayName}" : "Elija una hora de inicio para {dayName}",
|
||||
"Pick a end time for {dayName}" : "Elija una hora fin para {dayName}",
|
||||
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Cambiar automáticamente el estado del usuario a \"No molestar\" cuando no esté disponible para silenciar todas las notificaciones.",
|
||||
"Failed to load availability" : "No se ha podido cargar la disponibilidad",
|
||||
"Saved availability" : "Disponibilidad guardada",
|
||||
@@ -192,12 +192,12 @@
|
||||
"Birthday calendars will be generated by a background job." : "Los calendarios de cumpleaños se generarán mediante un trabajo en segundo plano.",
|
||||
"Hence they will not be available immediately after enabling but will show up after some time." : "Por ello, no estarán disponibles inmediatamente tras activarlos, sino que aparecerán después de cierto tiempo.",
|
||||
"Send notifications for events" : "Enviar notificaciones de los eventos",
|
||||
"Notifications are sent via background jobs, so these must occur often enough." : "Las notificaciones son enviadas a través de trabajos en segundo plano, por lo que estos deben ocurrir con la suficiente frecuencia.",
|
||||
"Notifications are sent via background jobs, so these must occur often enough." : "Las notificaciones son enviadas a través de trabajos en segundo plano, por lo que estos deben ocurrir con suficiente frecuencia.",
|
||||
"Send reminder notifications to calendar sharees as well" : "Enviar recordatorio también a los usuarios con los que se comparte el calendario",
|
||||
"Reminders are always sent to organizers and attendees." : "Los recordatorios siempre se envía a los organizadores y asistentes.",
|
||||
"Reminders are always sent to organizers and attendees." : "Los recordatorios siempre se envían a los organizadores y asistentes.",
|
||||
"Enable notifications for events via push" : "Activar notificaciones push para eventos",
|
||||
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Instala también la {calendarappstoreopen}app de Calendario{linkclose} o {calendardocopen}conecta tu escritorio y móvil para sincronizar ↗{linkclose}.",
|
||||
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Por favor, asegúrate de configurar correctamente {emailopen}el servidor web{linkclose}",
|
||||
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Instale también la {calendarappstoreopen}app de Calendario{linkclose} o {calendardocopen}conecte su escritorio y móvil para sincronizar ↗{linkclose}.",
|
||||
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Por favor, asegúrese de configurar correctamente {emailopen}el servidor web{linkclose}",
|
||||
"There was an error updating your attendance status." : "Ha habido un error al actualizar tu estado de asistencia.",
|
||||
"Please contact the organizer directly." : "Por favor, contacta directamente con el organizador.",
|
||||
"Are you accepting the invitation?" : "¿Aceptas la invitación?",
|
||||
|
||||
+5
-5
@@ -113,8 +113,8 @@ OC.L10N.register(
|
||||
"{actor} unshared address book {addressbook} from group {group}" : "{actor} ha eliminato la condivisone della rubrica {addressbook} con il gruppo {group}",
|
||||
"{actor} created contact {card} in address book {addressbook}" : "{actor} ha creato il contatto {card} nella rubrica {addressbook}",
|
||||
"You created contact {card} in address book {addressbook}" : "Hai creato il contatto {card} nella rubrica {addressbook}",
|
||||
"{actor} deleted contact {card} from address book {addressbook}" : "{actor} ha cancellato il contatto {card} nella rubrica {addressbook}",
|
||||
"You deleted contact {card} from address book {addressbook}" : "Hai cancellato il contatto {card} nella rubrica {addressbook}",
|
||||
"{actor} deleted contact {card} from address book {addressbook}" : "{actor} ha eliminato il contatto {card} nella rubrica {addressbook}",
|
||||
"You deleted contact {card} from address book {addressbook}" : "Hai eliminato il contatto {card} nella rubrica {addressbook}",
|
||||
"{actor} updated contact {card} in address book {addressbook}" : "{actor} ha aggiornato il contatto {card} nella rubrica {addressbook}",
|
||||
"You updated contact {card} in address book {addressbook}" : "Hai aggiornato il contatto {card} nella rubrica {addressbook}",
|
||||
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "Un <strong>contatto</strong> o <strong>rubrica</strong> sono stati modificati ",
|
||||
@@ -123,16 +123,16 @@ OC.L10N.register(
|
||||
"File is not updatable: %1$s" : "Il file non è aggiornabile: %1$s",
|
||||
"Could not write to final file, canceled by hook" : "Impossibile scrivere nel file finale, annullato da hook",
|
||||
"Could not write file contents" : "Impossibile scrivere il contenuto del file",
|
||||
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes","%n bytes"],
|
||||
"_%n byte_::_%n bytes_" : ["%n byte","%n byte","%n byte"],
|
||||
"Error while copying file to target location (copied: %1$s, expected filesize: %2$s)" : "Errore durante la copia del file nella destinazione (copiato: %1$s, dimensione prevista del file: %2$s)",
|
||||
"Expected filesize of %1$s but read (from Nextcloud client) and wrote (to Nextcloud storage) %2$s. Could either be a network problem on the sending side or a problem writing to the storage on the server side." : "Dimensione prevista del file %1$s, letto (dal client Nextcloud) e scritto (nell'archivio Nextcloud) %2$s. Potrebbe trattarsi di un problema di rete sul lato d'invio o di un problema di scrittura nell'archivio sul lato server.",
|
||||
"Could not rename part file to final file, canceled by hook" : "Impossibile rinominare il file di parte in file finale, annullato da hook",
|
||||
"Could not rename part file to final file" : "Impossibile rinominare il file di parte in file finale",
|
||||
"Failed to check file size: %1$s" : "Verifica della dimensione del file non riuscito: %1$s",
|
||||
"Could not open file" : "Impossibile aprire il file",
|
||||
"Encryption not ready: %1$s" : "Crittografia non pronta: %1$s",
|
||||
"Encryption not ready: %1$s" : "Cifratura non pronta: %1$s",
|
||||
"Failed to open file: %1$s" : "Apertura del file non riuscito: %1$s",
|
||||
"Failed to unlink: %1$s" : "Scollegamento fallito: %1$s",
|
||||
"Failed to unlink: %1$s" : "Scollegamento non riuscito: %1$s",
|
||||
"Invalid chunk name" : "Nome non valido per lo spezzone",
|
||||
"Could not rename part file assembled from chunks" : "Non è possibile rinominare il file assemblato da più spezzoni",
|
||||
"Failed to write file contents: %1$s" : "Scrittura del contenuto del file non riuscita: %1$s",
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user