summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/submodules.yml22
-rw-r--r--docs/_ext/releasenotes.py102
m---------docs/_include/vyos-1x0
-rw-r--r--docs/changelog/1.3.rst3
-rw-r--r--docs/changelog/1.4.rst3
-rw-r--r--docs/changelog/index.rst2
6 files changed, 126 insertions, 6 deletions
diff --git a/.github/workflows/submodules.yml b/.github/workflows/submodules.yml
index 82b8d4e4..a90d0c70 100644
--- a/.github/workflows/submodules.yml
+++ b/.github/workflows/submodules.yml
@@ -5,7 +5,7 @@ on:
# 06:00 UTC on Monday
- cron: '0 6 * * 1'
jobs:
- updateVyOS-1x_master:
+ update_master:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
@@ -19,21 +19,26 @@ jobs:
git checkout current
git pull
git submodule status
+ - name: update releasenotes
+ run: |
+ pip3 install phabricator
+ python3 docs/_ext/releasenotes.py -t ${{ secrets.PHABRICATOR_API }} -b current equuleus
- name: Create Pull Request
uses: peter-evans/create-pull-request@v3
with:
token: ${{secrets.GITHUB_TOKEN}}
- commit-message: "vyos-1x: update current branch"
+ commit-message: "Github: update current branch"
committer: GitHub <noreply@github.com>
author: ${{ github.actor }} <${{ github.actor }}@users.noreply.github.com>
- title: "vyos-1x: update current branch"
+ title: "Github: update current branch"
body: |
Autoupdate vyos-1x submodule
+ update releasenotes
branch: update-dependencies-master
delete-branch: true
- updateVyOS-1x_equuleus:
+ update_equuleus:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
@@ -48,15 +53,20 @@ jobs:
git checkout equuleus
git pull
git submodule status
+ - name: update releasenotes
+ run: |
+ pip3 install phabricator
+ python3 docs/_ext/releasenotes.py -t ${{ secrets.PHABRICATOR_API }} -b equuleus
- name: Create Pull Request
uses: peter-evans/create-pull-request@v3
with:
token: ${{secrets.GITHUB_TOKEN}}
- commit-message: "vyos-1x: update equuleus branch"
+ commit-message: "Github: update equuleus branch"
committer: GitHub <noreply@github.com>
author: ${{ github.actor }} <${{ github.actor }}@users.noreply.github.com>
- title: "vyos-1x: update equuleus branch"
+ title: "Github: update equuleus branch"
body: |
Autoupdate vyos-1x submodule
+ update releasenotes
branch: update-dependencies-equuleus
delete-branch: true
diff --git a/docs/_ext/releasenotes.py b/docs/_ext/releasenotes.py
new file mode 100644
index 00000000..4bc05e1b
--- /dev/null
+++ b/docs/_ext/releasenotes.py
@@ -0,0 +1,102 @@
+from datetime import datetime
+from phabricator import Phabricator
+import argparse
+
+parser = argparse.ArgumentParser()
+parser.add_argument("-t", "--token", type=str, help="API token", required=True)
+parser.add_argument("-b", "--branch", nargs="+", help="List of github branches", required=True)
+
+args = parser.parse_args()
+
+
+phab = Phabricator(host='https://phabricator.vyos.net/api/', token=args.token)
+
+'''
+# code to find new PHIDs
+# show project ids
+projects = phab.project.query(limit=200)
+for project in projects.response['data']:
+ print(projects.response['data'][project]['phid'], projects.response['data'][project]['name'])
+'''
+
+projects = {
+ 'equuleus': {
+ 'phid': 'PHID-PROJ-zu26ui4vbmvykpjtepij',
+ 'name': 'VyOS 1.3 Equuleus',
+ 'filename': 'docs/changelog/1.3.rst',
+ 'tasks': [],
+ 'releasenotes': []
+ },
+ 'current': {
+ 'phid': 'PHID-PROJ-m4utvy456e2shcprpq3b',
+ 'name': 'VyOS 1.4 Sagitta',
+ 'filename': 'docs/changelog/1.4.rst',
+ 'tasks': [],
+ 'releasenotes': []
+ }
+}
+
+for b in args.branch:
+ if b not in projects.keys():
+ raise Exception('given branch not defined')
+
+# get project tasks
+
+for project in projects:
+ if project not in args.branch:
+ continue
+
+ _after = None
+
+ # get tasks from API
+ while True:
+ #print(f'get {_after}')
+ _tasks = phab.maniphest.search(
+ constraints={
+ 'projects': [projects[project]['phid']],
+ #'statuses': ['closed'],
+ },
+ after=_after)
+
+ projects[project]['tasks'].extend(_tasks.response['data'])
+ _after = _tasks.response['cursor']['after']
+ if _after is None:
+ break
+
+ # prepare tasks for release notes
+ for task in projects[project]['tasks']:
+ if task['fields']['status']['value'] in ['resolved']:
+ #_info = phab.maniphest.info(task_id=task['id'])
+ #_info = _info.response
+ releasenote = {}
+ releasenote['type'] = task['fields']['subtype']
+ date = datetime.fromtimestamp(task['fields']['dateClosed'])
+ releasenote['closedate'] = date.strftime('%Y%m%d')
+ releasenote['name'] = task['fields']['name']
+ releasenote['id'] = task['id']
+ #print(f"{project}: {task['fields']['status']} {task['id']}")
+ projects[project]['releasenotes'].append(releasenote)
+
+ projects[project]['releasenotes'] = sorted(
+ projects[project]['releasenotes'], key = lambda x: x['closedate'],
+ reverse=True
+ )
+
+ rst_text = "#" * len(projects[project]['name'])
+ rst_text += f"\n{projects[project]['name']}\n"
+ rst_text += "#" * len(projects[project]['name'])
+ rst_text += "\n"
+
+ date = None
+ for rn in projects[project]['releasenotes']:
+ if date != rn['closedate']:
+ rst_text += "\n\n"
+ rst_text += f"{rn['closedate']}\n"
+ underline = '=' * len(rn['closedate'])
+ rst_text += f"{underline}\n\n"
+ date = rn['closedate']
+ rst_text += f"* :vytask:`T{rn['id']}` ({rn['type']}): {rn['name']}\n"
+
+ f = open(projects[project]['filename'], "w")
+ f.write(rst_text)
+ f.close()
diff --git a/docs/_include/vyos-1x b/docs/_include/vyos-1x
-Subproject 0dd41096f14771ffa476f52793308bffac51b59
+Subproject 86209c679c6b7ca9d5bac1f67ffd391b9b16c00
diff --git a/docs/changelog/1.3.rst b/docs/changelog/1.3.rst
new file mode 100644
index 00000000..fb55ff5e
--- /dev/null
+++ b/docs/changelog/1.3.rst
@@ -0,0 +1,3 @@
+#################
+VyOS 1.3 Equuleus
+#################
diff --git a/docs/changelog/1.4.rst b/docs/changelog/1.4.rst
new file mode 100644
index 00000000..81551af7
--- /dev/null
+++ b/docs/changelog/1.4.rst
@@ -0,0 +1,3 @@
+################
+VyOS 1.4 Sagitta
+################
diff --git a/docs/changelog/index.rst b/docs/changelog/index.rst
index ae964145..c5af65ef 100644
--- a/docs/changelog/index.rst
+++ b/docs/changelog/index.rst
@@ -10,6 +10,8 @@ Changelog
:maxdepth: 1
:includehidden:
+ 1.4
+ 1.3
1.2.6
1.2.5
1.2.4