summaryrefslogtreecommitdiffstats
path: root/.github
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-21 11:54:28 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-21 11:54:28 +0000
commite6918187568dbd01842d8d1d2c808ce16a894239 (patch)
tree64f88b554b444a49f656b6c656111a145cbbaa28 /.github
parentInitial commit. (diff)
downloadceph-e6918187568dbd01842d8d1d2c808ce16a894239.tar.xz
ceph-e6918187568dbd01842d8d1d2c808ce16a894239.zip
Adding upstream version 18.2.2.upstream/18.2.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '.github')
-rw-r--r--.github/CODEOWNERS178
-rw-r--r--.github/dependabot.yml22
-rw-r--r--.github/labeler.yml286
-rw-r--r--.github/milestone.yml7
-rw-r--r--.github/pull_request_template.md68
-rw-r--r--.github/workflows/create-backport-trackers.yml50
-rw-r--r--.github/workflows/needs-rebase.yml18
-rw-r--r--.github/workflows/pr-check-deps.yml10
-rw-r--r--.github/workflows/pr-checklist.yml19
-rw-r--r--.github/workflows/pr-triage.yml28
-rw-r--r--.github/workflows/stale.yml58
11 files changed, 744 insertions, 0 deletions
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
new file mode 100644
index 000000000..6912e34fa
--- /dev/null
+++ b/.github/CODEOWNERS
@@ -0,0 +1,178 @@
+# Dashboard team to review dashboard related code
+/src/pybind/mgr/dashboard @ceph/dashboard
+/qa/suites/rados/dashboard @ceph/dashboard
+/qa/tasks/mgr/test_dashboard.py @ceph/dashboard
+/qa/tasks/mgr/test_module_selftest.py @ceph/dashboard
+/qa/tasks/mgr/dashboard @ceph/dashboard
+/monitoring @ceph/dashboard
+/doc/mgr/dashboard.rst @ceph/dashboard
+
+# For Orchestrator related PRs
+/src/cephadm @ceph/orchestrators
+/src/pybind/mgr/orchestrator @ceph/orchestrators
+/src/pybind/mgr/rook @ceph/orchestrators
+/src/pybind/mgr/cephadm @ceph/orchestrators
+/src/pybind/mgr/test_orchestrator @ceph/orchestrators
+/src/python-common/ceph/deployment @ceph/orchestrators
+/qa/workunits/cephadm @ceph/orchestrators
+/qa/tasks/cephadm.py @ceph/orchestrators
+/qa/tasks/cephadm_cases @ceph/orchestrators
+/qa/tasks/mgr/test_orchestrator_cli.py @ceph/orchestrators
+/qa/tasks/mgr/test_cephadm_orchestrator.py @ceph/orchestrators
+/qa/suites/orch @ceph/orchestrators
+/doc/mgr/orchestrator.rst @ceph/orchestrators
+/doc/mgr/orchestrator_modules.rst @ceph/orchestrators
+/doc/cephadm @ceph/orchestrators
+/doc/dev/cephadm @ceph/orchestrators
+/doc/man/8/cephadm.rst @ceph/orchestrators
+
+/qa/suites/orch/rook @ceph/rook
+/src/pybind/mgr/rook @ceph/rook
+/doc/mgr/rook.rst @ceph/rook
+
+#ceph-volume
+/src/ceph-volume @ceph/ceph-volume
+/doc/ceph-volume @ceph/ceph-volume
+
+# crimson
+/src/crimson @ceph/crimson
+/src/test/crimson @ceph/crimson
+
+# doc-writers
+AUTHORS @ceph/doc-writers
+CodingStyle @ceph/doc-writers
+COPYING* @ceph/doc-writers
+/doc/ @ceph/doc-writers
+README* @ceph/doc-writers
+*.rst @ceph/doc-writers
+
+# core
+/doc/man/8/ceph-authtool.rst @ceph/core @ceph/doc-writers
+/doc/man/8/ceph-conf.rst @ceph/core @ceph/doc-writers
+/doc/man/8/ceph-create-keys.rst @ceph/core @ceph/doc-writers
+/doc/man/8/ceph-kvstore-tool.rst @ceph/core @ceph/doc-writers
+/doc/man/8/ceph-mon.rst @ceph/core @ceph/doc-writers
+/doc/man/8/ceph-objectstore-tool.rst @ceph/core @ceph/doc-writers
+/doc/man/8/ceph-osd.rst @ceph/core @ceph/doc-writers
+/doc/man/8/ceph.rst @ceph/core @ceph/doc-writers
+/doc/man/8/crushtool.rst @ceph/core @ceph/doc-writers
+/doc/man/8/monmaptool.rst @ceph/core @ceph/doc-writers
+/doc/man/8/rados.rst @ceph/core @ceph/doc-writers
+/doc/rados @ceph/core @ceph/doc-writers
+/examples/librados @ceph/core
+/qa/standalone @ceph/core
+/qa/suites/rados @ceph/core
+/qa/workunits/erasure-code @ceph/core
+/qa/workunits/mgr @ceph/core
+/qa/workunits/mon @ceph/core
+/qa/workunits/objectstore @ceph/core
+/qa/workunits/rados @ceph/core
+/src/ceph.in @ceph/core
+/src/ceph_osd.cc @ceph/core
+/src/ceph_mon.cc @ceph/core
+/src/blk @ceph/core
+/src/crush @ceph/core
+/src/erasure-code @ceph/core
+/src/kv @ceph/core
+/src/librados @ceph/core
+/src/mgr @ceph/core
+/src/mon @ceph/core
+/src/msg @ceph/core
+/src/os @ceph/core
+/src/osd @ceph/core
+/src/tools/rados @ceph/core
+/src/test/osd @ceph/core
+
+# rbd
+/doc/dev/rbd* @ceph/rbd @ceph/doc-writers
+/doc/man/8/ceph-rbdnamer.rst @ceph/rbd @ceph/doc-writers
+/doc/man/8/rbd* @ceph/rbd @ceph/doc-writers
+/doc/rbd @ceph/rbd @ceph/doc-writers
+/doc/start/quick-rbd.rst @ceph/rbd @ceph/doc-writers
+/examples/librbd @ceph/rbd
+/examples/rbd-replay @ceph/rbd
+/qa/rbd @ceph/rbd
+/qa/run_xfstests* @ceph/rbd
+/qa/suites/krbd @ceph/rbd
+/qa/suites/rbd @ceph/rbd
+/qa/tasks/ceph_iscsi_client.py @ceph/rbd
+/qa/tasks/metadata.yaml @ceph/rbd
+/qa/tasks/qemu.py @ceph/rbd
+/qa/tasks/rbd* @ceph/rbd
+/qa/tasks/userdata* @ceph/rbd
+/qa/workunits/cls/test_cls_journal.sh @ceph/rbd
+/qa/workunits/cls/test_cls_lock.sh @ceph/rbd
+/qa/workunits/cls/test_cls_rbd.sh @ceph/rbd
+/qa/workunits/rbd @ceph/rbd
+/qa/workunits/windows @ceph/rbd
+/src/ceph-rbdnamer @ceph/rbd
+/src/cls/journal @ceph/rbd
+/src/cls/lock @ceph/rbd @ceph/rgw
+/src/cls/rbd @ceph/rbd
+/src/common/options/rbd* @ceph/rbd
+/src/etc-rbdmap @ceph/rbd
+/src/include/krbd.h @ceph/rbd
+/src/include/rbd* @ceph/rbd
+/src/journal @ceph/rbd
+/src/krbd.cc @ceph/rbd
+/src/librbd @ceph/rbd
+/src/ocf @ceph/rbd
+/src/pybind/mgr/rbd_support @ceph/rbd
+/src/pybind/rbd @ceph/rbd
+/src/rbd* @ceph/rbd
+/src/test/cli/rbd @ceph/rbd
+/src/test/cli-integration/rbd @ceph/rbd
+/src/test/cls_journal @ceph/rbd
+/src/test/cls_lock @ceph/rbd @ceph/rgw
+/src/test/cls_rbd @ceph/rbd
+/src/test/journal @ceph/rbd
+/src/test/librbd @ceph/rbd
+/src/test/pybind/test_rbd.py @ceph/rbd
+/src/test/rbd* @ceph/rbd
+/src/test/run-rbd* @ceph/rbd
+/src/test/test_rbd* @ceph/rbd
+/src/tools/rbd* @ceph/rbd
+/systemd/rbdmap.service.in @ceph/rbd
+/udev/50-rbd.rules @ceph/rbd
+
+# rgw
+/doc/dev/radosgw @ceph/rgw @ceph/doc-writers
+/doc/radosgw @ceph/rgw @ceph/doc-writers
+/examples/rgw @ceph/rgw
+/qa/rgw @ceph/rgw
+/qa/suites/rgw @ceph/rgw
+/qa/tasks/barbican.py @ceph/rgw
+/qa/tasks/kafka.py @ceph/rgw
+/qa/tasks/keycloak.py @ceph/rgw
+/qa/tasks/keystone.py @ceph/rgw
+/qa/tasks/pykmip.py @ceph/rgw
+/qa/tasks/rabbitmq.py @ceph/rgw
+/qa/tasks/rgw* @ceph/rgw
+/qa/tasks/s3* @ceph/rgw
+/qa/tasks/tempest.py @ceph/rgw
+/qa/tasks/vault.py @ceph/rgw
+/qa/workunits/rgw @ceph/rgw
+/src/cls/2pc_queue @ceph/rgw
+/src/cls/cmpomap @ceph/rgw
+/src/cls/fifo @ceph/rgw
+/src/cls/log @ceph/rgw
+/src/cls/otp @ceph/rgw
+/src/cls/queue @ceph/rgw
+/src/cls/refcount @ceph/rgw
+/src/cls/rgw @ceph/rgw
+/src/cls/rgw_gc @ceph/rgw
+/src/cls/user @ceph/rgw
+/src/cls/version @ceph/rgw
+/src/rgw @ceph/rgw
+/src/s3select @ceph/rgw
+/src/spawn @ceph/rgw
+/src/test/cls_2pc_queue @ceph/rgw
+/src/test/cls_cmpomap @ceph/rgw
+/src/test/cls_otp @ceph/rgw
+/src/test/cls_queue @ceph/rgw
+/src/test/cls_refcount @ceph/rgw
+/src/test/cls_rgw @ceph/rgw
+/src/test/cls_rgw_gc @ceph/rgw
+/src/test/cls_version @ceph/rgw
+/src/test/rgw @ceph/rgw
+/src/test/test_rgw* @ceph/rgw
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 000000000..98b7d53d8
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,22 @@
+---
+version: 2
+updates:
+ - package-ecosystem: "npm"
+ directory: "/src/pybind/mgr/dashboard/frontend"
+ schedule:
+ interval: "daily"
+ commit-message:
+ prefix: "mgr/dashboard:"
+ labels:
+ - "dashboard"
+ pull-request-branch-name:
+ separator: "-"
+
+ - package-ecosystem: "github-actions"
+ directory: "/"
+ schedule:
+ interval: "daily"
+ commit-message:
+ prefix: ".github/workflows:"
+ pull-request-branch-name:
+ separator: "-"
diff --git a/.github/labeler.yml b/.github/labeler.yml
new file mode 100644
index 000000000..60c1bc5f0
--- /dev/null
+++ b/.github/labeler.yml
@@ -0,0 +1,286 @@
+api-change:
+ - src/pybind/mgr/dashboard/openapi.yaml
+
+build/ops:
+ - "**/CMakeLists.txt"
+ - admin/**
+ - ceph.spec.in
+ - cmake/**
+ - debian/**
+ - do_cmake.sh
+ - do_freebsd.sh
+ - install-deps.sh
+ - keys/**
+ - make-debs.sh
+ - make-dist
+ - make-srpm.sh
+ - run-make-check.sh
+ - win32_build.sh
+ - win32_deps_build.sh
+
+documentation:
+ - AUTHORS
+ - CONTRIBUTING.rst
+ - COPYING*
+ - CodingStyle
+ - PendingReleaseNotes
+ - README.*
+ - SubmittingPatches*
+ - doc/**
+ - doc_deps.deb.txt
+ - man/**
+ - "**/*.+(rst|md)"
+
+libcephsqlite:
+ - doc/rados/api/libcephsqlite.rst
+ - qa/suites/rados/basic/tasks/libcephsqlite.yaml
+ - qa/workunits/rados/test_libcephsqlite.sh
+ - src/SimpleRADOSStriper.*
+ - src/include/libcephsqlite.h
+ - src/libcephsqlite.cc
+ - src/test/libcephsqlite/**
+
+mon:
+ - doc/man/8/ceph-mon.rst
+ - doc/man/8/monmaptool.rst
+ - doc/mon/**
+ - qa/workunits/mon/**
+ - src/mon/**
+ - src/test/mon/**
+
+mgr:
+ - doc/mgr/**
+ - src/mgr/**
+ - src/pybind/mgr/ceph_module.pyi
+ - src/pybind/mgr/mgr_module.py
+ - src/pybind/mgr/mgr_util.py
+ - src/pybind/mgr/object_format.py
+ - src/pybind/mgr/requirements.txt
+ - src/pybind/mgr/tox.ini
+ - src/test/mgr/**
+
+pybind:
+ - src/pybind/cephfs/**
+ - src/pybind/mgr/**
+ - src/pybind/rados/**
+ - src/pybind/rbd/**
+ - src/pybind/rgw/**
+ - src/pybind/**
+ - src/python-common/**
+
+common:
+ - src/common/**
+ - src/global/**
+ - src/log/**
+
+cephadm:
+ - doc/cephadm/**
+ - doc/dev/cephadm/**
+ - doc/man/8/cephadm.rst
+ - qa/suites/orch/cephadm/**
+ - qa/tasks/cephadm.py
+ - qa/tasks/cephadm_cases
+ - qa/tasks/mgr/test_cephadm_orchestrator.py
+ - qa/tasks/mgr/test_orchestrator_cli.py
+ - qa/workunits/cephadm/**
+ - src/cephadm/**
+ - src/pybind/mgr/cephadm/**
+ - src/python-common/**
+
+orchestrator:
+ - doc/mgr/orchestrator.rst
+ - doc/mgr/orchestrator_modules.rst
+ - src/pybind/mgr/orchestrator/**
+ - src/pybind/mgr/rook/**
+ - src/pybind/mgr/test_orchestrator/**
+ - qa/tasks/mgr/test_orchestrator_cli.py
+
+rook:
+ - doc/mgr/rook.rst
+ - src/pybind/mgr/rook/**
+ - qa/tasks/rook.py
+ - qa/suites/orch/rook/smoke/**
+
+bluestore:
+ - src/os/bluestore/**
+
+core:
+ - doc/man/8/ceph-authtool.rst
+ - doc/man/8/ceph-conf.rst
+ - doc/man/8/ceph-create-keys.rst
+ - doc/man/8/ceph-kvstore-tool.rst
+ - doc/man/8/ceph-mon.rst
+ - doc/man/8/ceph-objectstore-tool.rst
+ - doc/man/8/ceph-osd.rst
+ - doc/man/8/ceph.rst
+ - doc/man/8/crushtool.rst
+ - doc/man/8/monmaptool.rst
+ - doc/man/8/rados.rst
+ - doc/rados/**
+ - qa/standalone/**
+ - qa/suites/rados/**
+ - qa/workunits/erasure-code/**
+ - qa/workunits/mgr/**
+ - qa/workunits/mon/**
+ - qa/workunits/objectstore/**
+ - qa/workunits/rados/**
+ - src/ceph.in
+ - src/ceph_osd.cc
+ - src/ceph_mon.cc
+ - src/blk/**
+ - src/crush/*
+ - src/erasure-code/**
+ - src/kv/**
+ - src/librados/**
+ - src/mgr/**
+ - src/mon/**
+ - src/msg/**
+ - src/os/**
+ - src/osd/**
+ - src/tools/ceph_dedup_tool.cc
+ - src/tools/ceph_kvstore_tool.cc
+ - src/tools/ceph_monstore_tool.cc
+ - src/tools/ceph_objectstore_tool.*
+ - src/tools/crushtool.cc
+ - src/tools/kvstore_tool.*
+ - src/tools/monmaptool.cc
+ - src/tools/osdmaptool.cc
+ - src/tools/rados/**
+ - src/test/librados/**
+ - src/test/osd/**
+
+crimson:
+ - doc/dev/crimson/**
+ - src/crimson/**
+ - src/test/crimson/**
+ - qa/suites/crimson-rados/**
+
+dashboard:
+ - src/pybind/mgr/dashboard/**
+ - qa/suites/rados/dashboard/**
+ - qa/tasks/mgr/test_dashboard.py
+ - qa/tasks/mgr/dashboard/**
+ - monitoring/**
+ - doc/mgr/dashboard.rst
+ - doc/dev/developer_guide/dash-devel.rst
+
+cephfs:
+ - doc/cephfs/**
+ - doc/man/8/ceph-fuse.rst
+ - doc/man/8/ceph-mds.rst
+ - doc/man/8/ceph-syn.rst
+ - doc/man/8/mount.ceph.rst
+ - doc/man/8/mount.fuse.ceph.rst
+ - qa/suites/fs/**
+ - qa/suites/multimds/**
+ - qa/tasks/ceph_fuse.py
+ - qa/tasks/cephfs/**
+ - qa/tasks/cephfs_test_runner.py
+ - qa/tasks/fs.py
+ - qa/tasks/kclient.py
+ - qa/tasks/mds_creation_failure.py
+ - qa/tasks/mds_thrash.py
+ - src/ceph_fuse.cc
+ - src/ceph_mds.cc
+ - src/ceph_syn.cc
+ - src/client/**
+ - src/include/ceph_fs.h
+ - src/include/ceph_fuse.h
+ - src/include/cephfs/**
+ - src/include/filepath.h
+ - src/include/frag.h
+ - src/include/fs_types.h
+ - src/libcephfs.cc
+ - src/mds/**
+ - src/mon/MDSMonitor.*
+ - src/mon/FSCommands.*
+ - src/pybind/cephfs/**
+ - src/pybind/mgr/mds_autoscaler/**
+ - src/pybind/mgr/status/**
+ - src/pybind/mgr/volumes/**
+ - src/test/fs/**
+ - src/test/libcephfs/**
+ - src/tools/cephfs/**
+ - src/tools/cephfs_mirror/**
+
+CI:
+ - .github/**
+
+rbd:
+ - doc/man/8/rbd*
+ - doc/rbd/**
+ - qa/suites/rbd/**
+ - qa/workunits/rbd/**
+ - src/include/rbd/**
+ - src/librbd/**
+ - src/pybind/mgr/rbd_support/**
+ - src/pybind/rbd/**
+ - src/test/librbd/**
+ - src/test/rbd_mirror/**
+ - src/tools/rbd/**
+ - src/tools/rbd_ggate/**
+ - src/tools/rbd_mirror/**
+ - src/tools/rbd_nbd/**
+ - src/tools/rbd_wnbd/**
+
+rgw:
+ - qa/suites/rgw/**
+ - qa/tasks/rgw*
+ - qa/tasks/s3*
+ - src/cls/cmpomap/**
+ - src/cls/fifo/**
+ - src/cls/otp/**
+ - src/cls/queue/**
+ - src/cls/rgw/**
+ - src/cls/rgw_gc/**
+ - src/cls/timeindex/**
+ - src/mrgw.sh
+ - src/rgw/**
+ - src/test/cls_rgw/**
+ - src/test/librgw_*
+ - src/test/rgw/**
+ - src/test/test_rgw*
+
+ceph-volume:
+ - src/ceph-volume/**
+ - doc/ceph-volume/**
+ - src/python-common/ceph/deployment/drive_group.py
+ - src/python-common/ceph/deployment/drive_selection/**
+
+tests:
+ - qa/tasks/**
+ - qa/workunits/**
+ - src/test/**
+
+nfs:
+ - src/pybind/mgr/nfs/**
+ - src/pybind/mgr/cephadm/services/nfs.py
+ - src/pybind/mgr/cephadm/templates/services/nfs/ganesha.conf.j2
+ - src/pybind/mgr/dashboard/controllers/nfs.py
+ - src/pybind/mgr/dashboard/tests/test_nfs.py
+ - qa/tasks/cephfs/test_nfs.py
+ - doc/mgr/nfs.rst
+ - doc/cephfs/nfs.rst
+ - doc/cephadm/nfs.rst
+ - doc/radosgw/nfs.rst
+ - doc/dev/vstart-ganesha.rst
+
+monitoring:
+ - doc/cephadm/monitoring.rst
+ - src/pybind/mgr/cephadm/services/monitoring.py
+ - src/pybind/mgr/cephadm/templates/services/alertmanager/**
+ - src/pybind/mgr/cephadm/templates/services/grafana/**
+ - src/pybind/mgr/cephadm/templates/services/prometheus/**
+ - src/pybind/mgr/dashboard/ci/check_grafana_dashboards.py
+ - src/pybind/mgr/prometheus/**
+ - monitoring/**
+
+telemetry:
+ - doc/mgr/telemetry.rst
+ - qa/suites/upgrade/telemetry-upgrade/**
+ - qa/workunits/test_telemetry_pacific.sh
+ - qa/workunits/test_telemetry_pacific_x.sh
+ - qa/workunits/test_telemetry_quincy.sh
+ - qa/workunits/test_telemetry_quincy_x.sh
+ - src/pybind/mgr/telemetry/**
+ - src/telemetry/**
diff --git a/.github/milestone.yml b/.github/milestone.yml
new file mode 100644
index 000000000..073b7e56b
--- /dev/null
+++ b/.github/milestone.yml
@@ -0,0 +1,7 @@
+base-branch:
+ - "(luminous)"
+ - "(nautilus)"
+ - "(octopus)"
+ - "(pacific)"
+ - "(quincy)"
+ - "(reef)"
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
new file mode 100644
index 000000000..494a3f23e
--- /dev/null
+++ b/.github/pull_request_template.md
@@ -0,0 +1,68 @@
+
+
+
+
+<!--
+ - Please give your pull request a title like
+
+ [component]: [short description]
+
+ - Please use this format for each git commit message:
+
+ [component]: [short description]
+
+ [A longer multiline description]
+
+ Fixes: [ticket URL on tracker.ceph.com, create one if necessary]
+ Signed-off-by: [Your Name] <[your email]>
+
+ For examples, use "git log".
+-->
+
+## Contribution Guidelines
+- To sign and title your commits, please refer to [Submitting Patches to Ceph](https://github.com/ceph/ceph/blob/main/SubmittingPatches.rst).
+
+- If you are submitting a fix for a stable branch (e.g. "quincy"), please refer to [Submitting Patches to Ceph - Backports](https://github.com/ceph/ceph/blob/master/SubmittingPatches-backports.rst) for the proper workflow.
+
+- When filling out the below checklist, you may click boxes directly in the GitHub web UI. When entering or editing the entire PR message in the GitHub web UI editor, you may also select a checklist item by adding an `x` between the brackets: `[x]`. Spaces and capitalization matter when checking off items this way.
+
+## Checklist
+- Tracker (select at least one)
+ - [ ] References tracker ticket
+ - [ ] Very recent bug; references commit where it was introduced
+ - [ ] New feature (ticket optional)
+ - [ ] Doc update (no ticket needed)
+ - [ ] Code cleanup (no ticket needed)
+- Component impact
+ - [ ] Affects [Dashboard](https://tracker.ceph.com/projects/dashboard/issues/new), opened tracker ticket
+ - [ ] Affects [Orchestrator](https://tracker.ceph.com/projects/orchestrator/issues/new), opened tracker ticket
+ - [ ] No impact that needs to be tracked
+- Documentation (select at least one)
+ - [ ] Updates relevant documentation
+ - [ ] No doc update is appropriate
+- Tests (select at least one)
+ - [ ] Includes [unit test(s)](https://docs.ceph.com/en/latest/dev/developer_guide/tests-unit-tests/)
+ - [ ] Includes [integration test(s)](https://docs.ceph.com/en/latest/dev/developer_guide/testing_integration_tests/)
+ - [ ] Includes bug reproducer
+ - [ ] No tests
+
+<details>
+<summary>Show available Jenkins commands</summary>
+
+- `jenkins retest this please`
+- `jenkins test classic perf`
+- `jenkins test crimson perf`
+- `jenkins test signed`
+- `jenkins test make check`
+- `jenkins test make check arm64`
+- `jenkins test submodules`
+- `jenkins test dashboard`
+- `jenkins test dashboard cephadm`
+- `jenkins test api`
+- `jenkins test docs`
+- `jenkins render docs`
+- `jenkins test ceph-volume all`
+- `jenkins test ceph-volume tox`
+- `jenkins test windows`
+- `jenkins test rook e2e`
+</details>
diff --git a/.github/workflows/create-backport-trackers.yml b/.github/workflows/create-backport-trackers.yml
new file mode 100644
index 000000000..b3525d9e9
--- /dev/null
+++ b/.github/workflows/create-backport-trackers.yml
@@ -0,0 +1,50 @@
+---
+name: Create backport trackers for trackers in "Pending Backport" state
+on:
+ # To manually trigger this: https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#workflow_dispatch
+ workflow_dispatch:
+ inputs:
+ issues:
+ description: 'whitespace-separated list of issue numbers'
+ type: string
+ default: ''
+ debug:
+ description: '--debug: Show debug-level messages'
+ default: false
+ type: boolean
+ resolveParent:
+ description: '--resolve-parent: Resolve parent issue if all backports resolved/rejected'
+ default: false
+ type: boolean
+ force:
+ description: >
+ --force: When issue numbers provided, process them even if not in
+ 'Pending Backport' status.
+ Otherwise, process all issues in 'Pending Backport' status even if
+ already processed (tag 'backport_processed' added)'
+ default: false
+ type: boolean
+ dryRun:
+ description: '--dry-run: Do not write anything to Redmine'
+ default: false
+ type: boolean
+ schedule:
+ # Every 5 minutes: https://crontab.guru/every-5-minutes
+ - cron: '*/5 * * * *'
+jobs:
+ create-backports:
+ runs-on: ubuntu-latest
+ if: github.ref == 'refs/heads/main'
+ steps:
+ - uses: Bhacaz/checkout-files@e3e34e7daef91a5f237485bb88a260aee4be29dd
+ with:
+ files: src/script/backport-create-issue src/script/requirements.backport-create-issue.txt
+ - uses: actions/setup-python@v4
+ with:
+ python-version: '>=3.6'
+ cache: 'pip'
+ cache-dependency-path: src/script/requirements.backport-create-issue.txt
+ - run: pip install -r src/script/requirements.backport-create-issue.txt
+ - run: python3 src/script/backport-create-issue ${{ inputs.debug && '--debug' || '' }} ${{ inputs.resolveParent && '--resolve-parent' || '' }} ${{ inputs.force && '--force' || '' }} ${{ inputs.dryRun && '--dry-run' || '' }} ${{ inputs.issues }}
+ env:
+ REDMINE_API_KEY: ${{ secrets.REDMINE_API_KEY_BACKPORT_BOT }}
diff --git a/.github/workflows/needs-rebase.yml b/.github/workflows/needs-rebase.yml
new file mode 100644
index 000000000..d9e2c706f
--- /dev/null
+++ b/.github/workflows/needs-rebase.yml
@@ -0,0 +1,18 @@
+---
+name: "Pull Request Needs Rebase?"
+on:
+ pull_request_target:
+ types: [opened, synchronize, reopened]
+jobs:
+ needs-rebase:
+ runs-on: ubuntu-latest
+ steps:
+ # eps1lon/actions-label-merge-conflict@v2.0.1
+ # (NOTE: pinning the action to a given commit is a security best-practice:
+ # https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/security-hardening-for-github-actions)
+ - name: Check if PR needs rebase
+ uses: eps1lon/actions-label-merge-conflict@b8bf8341285ec9a4567d4318ba474fee998a6919
+ with:
+ repoToken: "${{ secrets.GITHUB_TOKEN }}"
+ dirtyLabel: "needs-rebase"
+ commentOnDirty: "This pull request can no longer be automatically merged: a rebase is needed and changes have to be manually resolved"
diff --git a/.github/workflows/pr-check-deps.yml b/.github/workflows/pr-check-deps.yml
new file mode 100644
index 000000000..7815b8fe4
--- /dev/null
+++ b/.github/workflows/pr-check-deps.yml
@@ -0,0 +1,10 @@
+name: Check PR dependencies
+on: [pull_request_target]
+jobs:
+ check_dependencies:
+ runs-on: ubuntu-latest
+ name: Check PR Dependencies
+ steps:
+ - uses: gregsdennis/dependencies-action@80b5ffec566913b1494d5a8577ab0d60e476271d
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/pr-checklist.yml b/.github/workflows/pr-checklist.yml
new file mode 100644
index 000000000..0b3f2d6e5
--- /dev/null
+++ b/.github/workflows/pr-checklist.yml
@@ -0,0 +1,19 @@
+---
+name: "Pull Request Checklist"
+on:
+ pull_request:
+ types:
+ - edited
+ - opened
+ - reopened
+jobs:
+ pr_checklist:
+ runs-on: ubuntu-latest
+ name: Verify
+ steps:
+ - name: Sleep for 30 seconds
+ run: sleep 30s
+ shell: bash
+ - name: Action
+ id: checklist
+ uses: ceph/ceph-pr-checklist-action@32e92d1a2a7c9991ed51de5fccb2296551373d60
diff --git a/.github/workflows/pr-triage.yml b/.github/workflows/pr-triage.yml
new file mode 100644
index 000000000..8566f2599
--- /dev/null
+++ b/.github/workflows/pr-triage.yml
@@ -0,0 +1,28 @@
+---
+name: "Pull Request Triage"
+on: pull_request_target
+env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+jobs:
+ pr-triage:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Assign labels based on modified files
+ # https://github.com/marketplace/actions/labeler?version=v4.0.2
+ uses: actions/labeler@5c7539237e04b714afd8ad9b4aed733815b9fab4
+ with:
+ sync-labels: ''
+ repo-token: "${{ secrets.GITHUB_TOKEN }}"
+ - name: Assign to Dashboard project
+ # https://github.com/marketplace/actions/add-to-github-projects?version=v0.4.1
+ uses: actions/add-to-project@4756e6330fe1e0a736690d3cfd9f11c9399c2ed4
+ with:
+ project-url: https://github.com/orgs/ceph/projects/2
+ github-token: ${{ secrets.GITHUB_TOKEN }}
+ labeled: dashboard
+ - name: Assign milestone based on target brach name
+ # https://github.com/marketplace/actions/pull-request-milestone?version=v1.3.0
+ uses: iyu/actions-milestone@e93115c90ff7bcddee71086e9253f1b6a5f4b48a
+ with:
+ configuration-path: .github/milestone.yml
+ repo-token: "${{ secrets.GITHUB_TOKEN }}"
diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml
new file mode 100644
index 000000000..2de5de3f1
--- /dev/null
+++ b/.github/workflows/stale.yml
@@ -0,0 +1,58 @@
+# Configuration for stale action workflow - https://github.com/actions/stale
+
+name: 'Close stale issues and PRs'
+on:
+ schedule:
+ - cron: '0 * * * *'
+
+jobs:
+ stale:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/stale@v5
+ with:
+ # PAT for GitHub API authentication
+ repo-token: "${{ secrets.GITHUB_TOKEN }}"
+
+ # Comment on the staled PRs
+ stale-pr-message: >
+ This pull request has been automatically marked as stale because it
+ has not had any activity for 60 days. It will be closed if no further
+ activity occurs for another 30 days.
+
+ If you are a maintainer or core committer, please follow-up on this
+ pull request to identify what steps should be taken by the author to move this
+ proposed change forward.
+
+ If you are the author of this pull request, thank you for your proposed
+ contribution. If you believe this change is still appropriate, please
+ ensure that any feedback has been addressed and ask for a code review.
+
+ # Comment on the staled PRs while closed
+ close-pr-message: >
+ This pull request has been automatically closed because there has
+ been no activity for 90 days. Please feel free to reopen this pull
+ request (or open a new one) if the proposed change is still
+ appropriate. Thank you for your contribution!
+
+ # Idle number of days before making PRs stale (exempts Issues)
+ days-before-pr-stale: 60
+
+ # Idle number of days before closing stale PRs (exempts Issues)
+ days-before-pr-close: 30
+
+ # Label to apply on staled PRs
+ stale-pr-label: 'stale'
+
+ # Labels on PRs exempted from stale
+ exempt-pr-labels: 'pinned,security'
+
+ # Exempt all PRs with milestones from stale (also exempts Issues)
+ exempt-all-pr-milestones: true
+
+ # Max number of operations per run
+ operations-per-run: 100
+
+ # Change the order used to fetch the issues and pull requests from GitHub
+ # So we now start with the oldest PRs and work our way backwards
+ ascending: true