diff --git a/.github/workflows/config/changelog-config.json b/.github/workflows/config/changelog-config.json
new file mode 100644
index 00000000..a845104f
--- /dev/null
+++ b/.github/workflows/config/changelog-config.json
@@ -0,0 +1,118 @@
+{
+ "categories": [
+ {
+ "title": "## Executors\n\nChangelog
",
+ "labels": ["executor", "local", "slurm", "dgxcloud", "lepton", "skypilot", "docker"],
+ "exclude_labels": ["ignore"]
+ },
+ {
+ "title": " \n\n## Ray Integration\n\nChangelog
",
+ "labels": ["ray", "kuberay", "ray-slurm"],
+ "exclude_labels": ["ignore"]
+ },
+ {
+ "title": " \n\n## CLI & Configuration\n\nChangelog
",
+ "labels": ["cli", "config", "parsing"],
+ "exclude_labels": ["ignore"]
+ },
+ {
+ "title": " \n\n## Experiment & Job Management\n\nChangelog
",
+ "labels": ["experiment", "job", "task"],
+ "exclude_labels": ["ignore"]
+ },
+ {
+ "title": " \n\n## Packaging & Deployment\n\nChangelog
",
+ "labels": ["packaging", "deployment"],
+ "exclude_labels": ["ignore"]
+ },
+ {
+ "title": " \n\n## Documentation\n\nChangelog
",
+ "labels": ["docs", "documentation"],
+ "exclude_labels": ["ignore"]
+ },
+ {
+ "title": " \n\n## CI/CD\n\nChangelog
",
+ "labels": ["ci", "github-actions", "workflow"],
+ "exclude_labels": ["ignore"]
+ },
+ {
+ "title": " \n\n## Bug Fixes\n\nChangelog
",
+ "labels": ["bug", "bugfix", "fix"],
+ "exclude_labels": ["ignore"]
+ }
+ ],
+ "ignore_labels": [
+ "ignore",
+ "skip-changelog"
+ ],
+ "sort": "ASC",
+ "template": "\n${{CHANGELOG}} \n\n## Others\n\nChangelog
\n\n${{UNCATEGORIZED}}\n \n",
+ "pr_template": "- ${{TITLE}} [#${{NUMBER}}](${{URL}})",
+ "empty_template": "- No changes in this release",
+ "label_extractor": [
+ {
+ "pattern": "(.*executor.*)|(.*local.*)|(.*slurm.*)|(.*dgxcloud.*)|(.*lepton.*)|(.*skypilot.*)|(.*docker.*)",
+ "target": "executor",
+ "flags": "gimu",
+ "on_property": ["title", "body"]
+ },
+ {
+ "pattern": "(.*ray.*)|(.*kuberay.*)",
+ "target": "ray",
+ "flags": "gimu",
+ "on_property": ["title", "body"]
+ },
+ {
+ "pattern": "(.*cli.*)|(.*command.*)|(.*parse.*)|(.*argument.*)",
+ "target": "cli",
+ "flags": "gimu",
+ "on_property": ["title", "body"]
+ },
+ {
+ "pattern": "(.*experiment.*)|(.*job.*)|(.*task.*)",
+ "target": "experiment",
+ "flags": "gimu",
+ "on_property": ["title", "body"]
+ },
+ {
+ "pattern": "(.*packaging.*)|(.*package.*)|(.*deploy.*)|(.*archive.*)|(.*mount.*)",
+ "target": "packaging",
+ "flags": "gimu",
+ "on_property": ["title", "body"]
+ },
+ {
+ "pattern": "(.*doc.*)|(.*readme.*)|(.*guide.*)|(.*tutorial.*)",
+ "target": "docs",
+ "flags": "gimu",
+ "on_property": ["title", "body"]
+ },
+ {
+ "pattern": "(.*\\bci\\b.*)|(.*github.*)|(.*workflow.*)|(.*action.*)",
+ "target": "ci",
+ "flags": "gimu",
+ "on_property": ["title", "body"]
+ },
+ {
+ "pattern": "(.*\\[bug.*)|(.*\\bfix\\b.*)|(.*bugfix.*)|(.*patch.*)",
+ "target": "bug",
+ "flags": "gimu",
+ "on_property": ["title", "body"]
+ }
+ ],
+ "duplicate_filter": {
+ "pattern": ".+",
+ "on_property": "title",
+ "method": "match"
+ },
+ "transformers": [
+ ],
+ "max_tags_to_fetch": 100,
+ "max_pull_requests": 500,
+ "max_back_track_time_days": 365,
+ "exclude_merge_branches": [
+ ],
+ "tag_resolver": {
+ "method": "semver"
+ }
+}
+