Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improved changelog to be automatically managed by towncrier #885

Open
wants to merge 64 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
c1060e4
added add_waves_by_depth method and TCL scripts for modelsim, aldec, …
Jul 7, 2020
f4e5ae4
lint fixes for inline comments and line breaks
Jul 7, 2020
4611a12
black formatting for CI failure
Jul 7, 2020
3bc4e76
Merge branch 'VUnit:master' into master
GlenNicholls Jan 5, 2023
e17d29e
migrating to towncrier to manage changelog
GlenNicholls Jan 5, 2023
0954a19
versioned release notes file and moved old version changelogs to it s…
GlenNicholls Jan 6, 2023
06dc597
removed latest tag from 4.6, fixed errors with towncrier build --conf…
GlenNicholls Jan 6, 2023
b67d613
updated version for modified file, removed accidental changes that we…
GlenNicholls Jan 6, 2023
d39d9fd
added gitignore for newsfragments
GlenNicholls Jan 6, 2023
a58d8b7
added newline
GlenNicholls Jan 6, 2023
6177106
black changes for CI
GlenNicholls Jan 6, 2023
1bd84d7
added gitignore for theme, added changelog instructions, cleaned up s…
GlenNicholls Jan 6, 2023
23ff2c3
clarified newsfragment
GlenNicholls Jan 6, 2023
4ed1186
fixed issue with check_call
GlenNicholls Jan 6, 2023
572069f
remove this commit
GlenNicholls Jan 6, 2023
fc6abbc
Revert "remove this commit"
GlenNicholls Jan 6, 2023
cb38bb2
fixed errors with release, still need to change towncrier flag from -…
GlenNicholls Jan 6, 2023
daebd49
fixed link in template, added ignore for release dir
GlenNicholls Jan 6, 2023
fd0861b
changed title level symbol to fix error
GlenNicholls Jan 6, 2023
f8ac389
removed dep on sphinxcontrib-towncrier since it is not stable yet and…
GlenNicholls Jan 6, 2023
fadca63
whoops, forgot to remove stuff for testing
GlenNicholls Jan 6, 2023
4027d7c
fixed CI failures
GlenNicholls Jan 6, 2023
450c536
added check for news file based on labels
GlenNicholls Jan 11, 2023
640f5db
debugging broken GHA
GlenNicholls Jan 11, 2023
1f47346
Added name for each news check
GlenNicholls Jan 11, 2023
b4fb01a
not running news validation unless specific labels exist
GlenNicholls Jan 11, 2023
996cea9
added matrix for labels
GlenNicholls Jan 11, 2023
2402df2
debugging step conditional run
GlenNicholls Jan 11, 2023
ca849cd
fixed bug with expression
GlenNicholls Jan 11, 2023
2a57c0b
testing the issue num is correct
GlenNicholls Jan 11, 2023
ab67890
changed event to pull_request
GlenNicholls Jan 11, 2023
60d2987
enabled conditional in news validation and changed news dir to change…
GlenNicholls Jan 11, 2023
b3d42e8
changed issue num to PR num
GlenNicholls Jan 11, 2023
e09cfaa
fixed issue with conditional not allowing matrix expression
GlenNicholls Jan 11, 2023
678766c
testing conditional
GlenNicholls Jan 11, 2023
8d4f1a1
trying with single quotes for conditional
GlenNicholls Jan 11, 2023
2d6a83c
added matrix var injection since conditional with matrix name wont work
GlenNicholls Jan 11, 2023
8e101da
matrix prep getting 'Array', maybe checkout repo?
GlenNicholls Jan 11, 2023
acf29e0
debugging matrix prep
GlenNicholls Jan 12, 2023
4e97efa
removing quotes
GlenNicholls Jan 12, 2023
3b5ca0a
re-added checkout to matrix prep
GlenNicholls Jan 12, 2023
199da55
trying to write json array to file
GlenNicholls Jan 12, 2023
8158c4d
trying fromjson again
GlenNicholls Jan 12, 2023
d2e930e
I think tojson was right since the array should be empty...
GlenNicholls Jan 12, 2023
3684311
adding values to debug
GlenNicholls Jan 12, 2023
f48c8b8
adding values to debug
GlenNicholls Jan 12, 2023
b689737
converting json to bash array not working
GlenNicholls Jan 12, 2023
6a4457b
removing raw, dont think thats what we want
GlenNicholls Jan 12, 2023
cd68ee0
debugging regex
GlenNicholls Jan 12, 2023
2766825
debugging matrix json
GlenNicholls Jan 12, 2023
86b1c6b
enabled debug since labels arent being set
GlenNicholls Jan 12, 2023
ba6f969
removing ', not sure if that's the issue
GlenNicholls Jan 12, 2023
887cdc2
removing ', not sure if that's the issue
GlenNicholls Jan 12, 2023
8360ba8
removing ', not sure if that's the issue
GlenNicholls Jan 12, 2023
acda37d
removing ', not sure if that's the issue
GlenNicholls Jan 12, 2023
c902728
attempting to filter directly in jq
GlenNicholls Jan 12, 2023
ef389de
quoting issue
GlenNicholls Jan 12, 2023
03fec15
fixed bugs with outputting from job
GlenNicholls Jan 12, 2023
6997e97
fixed bugs with outputting from job
GlenNicholls Jan 12, 2023
8a0fcb8
fixed bash var ref
GlenNicholls Jan 12, 2023
0549a40
removed debug
GlenNicholls Jan 12, 2023
bfd047b
removed checkout for matrix export
GlenNicholls Jan 12, 2023
9a8879e
testing lack of checkout
GlenNicholls Jan 12, 2023
91d95e8
verified checkout isnt required for matrix prep
GlenNicholls Jan 12, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 45 additions & 1 deletion .github/workflows/push.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
name: 'push'

on:
label:
types: [created, edited]
push:
pull_request:
schedule:
Expand Down Expand Up @@ -137,13 +139,55 @@ jobs:
- name: '🚧 Run job'
run: tox -e py${{ matrix.task }} -- --color=yes

#
# Release Notes (News) Validation
#
news-matrix-prep:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
steps:
- id: set-matrix
run: |
set -e

cat <<EOF > json
${{ toJSON(github.event.pull_request.labels.*.name) }}
EOF

eval "news_labels=( $(jq '.[] | select(test("news:"))' json) )"
news_labels_json=$(jq --compact-output --null-input '$ARGS.positional' --args -- "${news_labels[@]}")

echo "Setting matrix to labels: ${news_labels[@]}"
echo "Matrix labels JSON: $news_labels_json"
echo "matrix={\"news\":$(echo $news_labels_json)}" >> $GITHUB_OUTPUT

news:
runs-on: ubuntu-latest
needs: news-matrix-prep
strategy:
fail-fast: false
matrix: ${{ fromJSON(needs.news-matrix-prep.outputs.matrix) }}
name: '📰 Validate News · ${{ matrix.news }}'
steps:

- name: '🧰 Checkout'
uses: actions/checkout@v3

- name: News file exists
run: |
fname="$(echo ${{ github.event.pull_request.number }}.${{ matrix.news }}.rst | sed 's,news:,,g')"
news_file="docs/news.d/$fname"
echo "News file that must exist for the label '${{ matrix.news }}': '$news_file'"
test -f $news_file

#
# Deploy to PyPI
#

deploy:
runs-on: ubuntu-latest
needs: [ fmt, lin, docker, win ]
needs: [ fmt, lin, docker, win, news ]
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
name: '🚀 Deploy'
steps:
Expand Down
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,12 @@ my_logger.csv
/build/
/dist/
/docs/_build
/docs/_release_notes_draft.rst
/docs/_theme
/docs/license.rst
/docs/release_notes.rst
/docs/theme.tgz
/examples/vhdl/array_axis_vcs/src/test/data/out.csv
/release/
/tests/acceptance/*_out
/tests/unit/test_report_output.txt
/vunit/vhdl/check/test/tb_check_equal.vhd
Expand Down
2 changes: 1 addition & 1 deletion docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@

language = "en"

exclude_patterns = ["release_notes/*.*"]
exclude_patterns = ["news.d/**"] # towncrier manages changelog

pygments_style = "sphinx"

Expand Down
39 changes: 36 additions & 3 deletions docs/contributing.rst
Original file line number Diff line number Diff line change
Expand Up @@ -193,9 +193,8 @@ Releases are automatically made by GitHub Actions on any ``master`` commit which

To create a new tagged release commit:

- Create corresponding release notes in ``docs/release_notes/X.Y.Z.rst``.
- The release notes files in ``docs/release_notes/`` are used to
automatically generate the :ref:`release notes <release_notes>`.
- Reference :ref:`release_notes_instructions` for creating relevant news that will be
added to the final draft of the :ref:`release_notes`.
- Execute ``python tools/release.py create X.Y.Z``.
- Will make commit with the new ``about.py`` version and release notes and tag it.
- Will make another commit setting ``about.py`` to the next pre release candidate version.
Expand All @@ -222,3 +221,37 @@ Therefore, when bumping the submodules, maintainers/contributors need to remembe
version.

Furthermore, since OSVVM is tagged periodically, bumping from tag to tag is strongly suggested.

.. _release_notes_instructions:

Release Notes Instructions
--------------------------

The :vunit_file:`release notes directory <docs/news.d>` contains "newsfragments" which
are short (`reST formatted
<https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html>`_) files that
contain information for users.

Make sure to use full sentences in the **past or present tense** and use punctuation.

Each file should be named like ``<issue #>.<type>.rst``, where ``<issue #>`` is the
GitHub issue or pull request number, and ``<type>`` is one of:

* ``breaking``: a change which may break existing functionality, such as feature removal
or behavior change
* ``bugfix``: fixes a bug
* ``change``: backwards compatible features or improvements
* ``deprecation``: feature deprecation
* ``misc``: a ticket was closed, but it is not necessarily important for the user

For example: ``123.feature.rst``, ``456.bugfix.rst``.

``towncrier`` preserves multiple paragraphs and formatting
(code blocks, lists, and so on), but for entries other than features, it is usually
better to stick to a single paragraph to keep it concise.

The Tox ``*-docs`` environment will construct a draft, "unreleased" section in the
generated HTML page to make it easier to debug and fix syntax issues with the
newsfragments. During a release, towncrier will add the latest
:vunit_file:`newsfragments <docs/news.d>` to the :ref:`release_notes` and then remove
the newsfragments from version control.
3 changes: 3 additions & 0 deletions docs/news.d/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
*
!*.*.rst
!template.rst.j2
2 changes: 2 additions & 0 deletions docs/news.d/885.misc.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Improved release notes by adding sections to to aid in finding relevant information
about releases and updated contributing guide with instructions.
37 changes: 37 additions & 0 deletions docs/news.d/template.rst.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
{% for section, _ in sections.items() %}

{% set underline = underlines[0] %}{% if section %}{{section}}
{{ underline * section|length }}{% set underline = underlines[1] %}

{% endif %}

`Download from PyPI <https://pypi.python.org/pypi/vunit_hdl/{{versiondata["version"]}}/>`__ | `Commits since this release <https://github.com/VUnit/vunit/compare/v{{versiondata["version"]}}...master>`__

{% if sections[section] %}
{% for category, val in definitions.items() if category in sections[section]%}
{{ definitions[category]['name'] }}
{{ underline * definitions[category]['name']|length }}

{% if definitions[category]['showcontent'] %}
{% for text, values in sections[section][category].items() %}
- {{ text }}
{{ values|join(',\n ') }}
{% endfor %}

{% else %}
- {{ sections[section][category]['']|join(', ') }}

{% endif %}
{% if sections[section][category]|length == 0 %}
No significant changes.

{% else %}
{% endif %}

{% endfor %}
{% else %}
No significant changes.


{% endif %}
{% endfor %}
Loading