diff options
| -rw-r--r-- | .github/workflows/submodules.yml | 22 | ||||
| -rw-r--r-- | docs/_ext/releasenotes.py | 102 | ||||
| m--------- | docs/_include/vyos-1x | 0 | ||||
| -rw-r--r-- | docs/changelog/1.3.rst | 3 | ||||
| -rw-r--r-- | docs/changelog/1.4.rst | 3 | ||||
| -rw-r--r-- | docs/changelog/index.rst | 2 | 
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 | 
