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

changelog.yaml getting screwed up #41

Open
gardar opened this issue Dec 22, 2023 · 3 comments
Open

changelog.yaml getting screwed up #41

gardar opened this issue Dec 22, 2023 · 3 comments

Comments

@gardar
Copy link
Contributor

gardar commented Dec 22, 2023

Ran into a issue where changelog.yaml got screwed up somehow.

I'm not sure what exactly caused it, but it seems like it's somehow related to when the collection got moved from a single-digit minor edition to a double-digit one (from version 0.9.0 to 0.10.0).

I noticed that the last change to the changelog that happened prior to the indent getting screwed up was that version 0.10.0 got added to the changelog but it is missing the changes key.

  0.10.0:
    release_date: '2023-12-12'

Looking through the history of the file I see that for other versions the changes key is always added when a new version is added to the changelog, such as:

  0.9.1:
    changes:
      trivial:
        - 'patch: New prometheus/prometheus upstream release 2.48.1! (https://github.com/prometheus-community/ansible/pull/260)'
    release_date: '2023-12-10'

At the same time where the changelog.yaml indent got screwed up it also added a new section for version 0.10.1 which is missing the changes key.

It also looks like the sorting does not understand the semantic versioning fully as versions 0.10.0 and 0.10.1 are inserted between the last 0.1.x version and first 0.2.x version and not after version 0.9.x as you'd expect.

  0.1.5:
    changes:
      bugfixes:
      - 'fix: follow PEP 440 standard for supported ansible versions (https://github.com/prometheus-community/ansible/pull/46)'
      - 'fix: various role argument specs (https://github.com/prometheus-community/ansible/pull/50)'
      trivial:
      - 'docs: Remove references to to previous named ansible collection cloudalchemy
        (https://github.com/prometheus-community/ansible/pull/44)'
      - 'refactor: move yamllint cfg to standard path (https://github.com/prometheus-community/ansible/pull/47)'
    release_date: '2023-03-05'
  0.10.0:
    release_date: '2023-12-12'
  0.10.1:
    release_date: '2023-12-12'
  0.2.0:
    changes:
      bugfixes:
      - 'fix: Fix typo on Install selinux python packages for RedHat family (https://github.com/prometheus-community/ansible/pull/57)'
      minor_changes:
      - 'feat: add systemd exporter role (https://github.com/prometheus-community/ansible/pull/62)'
      removed_features:
      - 'removed: community.crypto is only needed when testing (https://github.com/prometheus-community/ansible/pull/56)'
      trivial:
      - 'refactor: Disable line-length check in arguments_specs (https://github.com/prometheus-community/ansible/pull/58)'
      - 'refactor: avoid using command module for systemd version fact (https://github.com/prometheus-community/ansible/pull/52)'
      - 'test: fix: 2.12+ test requirements install (https://github.com/prometheus-community/ansible/pull/61)'
    release_date: '2023-03-08'

I manually fixed the indent but since the changes key is missing for those versions antsibull-changelog fails to process the changelog.

 antsibull-changelog generate -v
  shell: /usr/bin/bash -e {0}
Traceback (most recent call last):
  File "/home/runner/.local/lib/python3.10/site-packages/antsibull_changelog/cli.py", line 317, in run
    return arguments.func(arguments)
  File "/home/runner/.local/lib/python3.10/site-packages/antsibull_changelog/cli.py", line 699, in command_generate
    changes = load_changes(config)
  File "/home/runner/.local/lib/python3.10/site-packages/antsibull_changelog/changes.py", line 934, in load_changes
    return ChangesData(config, path)
  File "/home/runner/.local/lib/python3.10/site-packages/antsibull_changelog/changes.py", line 504, in __init__
    self.load(data_override=data_override)
  File "/home/runner/.local/lib/python3.10/site-packages/antsibull_changelog/changes.py", line 510, in load
    super().load(data_override=data_override)
  File "/home/runner/.local/lib/python3.10/site-packages/antsibull_changelog/changes.py", line 113, in load
    self.data = sanitize_changes(load_yaml(self.path), config=self.config)
  File "/home/runner/.local/lib/python3.10/site-packages/antsibull_changelog/yaml.py", line 33, in load_yaml
    return yaml.load(stream, Loader=_SafeLoader)
  File "/usr/lib/python3/dist-packages/yaml/__init__.py", line 114, in load
    return loader.get_single_data()
  File "/usr/lib/python3/dist-packages/yaml/constructor.py", line 49, in get_single_data
    node = self.get_single_node()
  File "yaml/_yaml.pyx", line 707, in yaml._yaml.CParser.get_single_node
  File "yaml/_yaml.pyx", line 725, in yaml._yaml.CParser._compose_document
  File "yaml/_yaml.pyx", line 776, in yaml._yaml.CParser._compose_node
  File "yaml/_yaml.pyx", line 892, in yaml._yaml.CParser._compose_mapping_node
  File "yaml/_yaml.pyx", line 905, in yaml._yaml.CParser._parse_next_event
yaml.parser.ParserError: while parsing a block mapping
  in "/home/runner/work/ansible/ansible/changelogs/changelog.yaml", line 2, column 1
did not find expected key
  in "/home/runner/work/ansible/ansible/changelogs/changelog.yaml", line 265, column 1

Here's the commit where the indent got screwed up: prometheus-community/ansible@e0697b4

Here's the commit where version 0.10.0 was added: prometheus-community/ansible@2fb25ec

The indenting issue has happened before: prometheus-community/ansible@766f0d7 but it got fixed on the next run, however the broken version sections is not something I've seen before.

@rndmh3ro
Copy link
Collaborator

rndmh3ro commented Jan 8, 2024

Hey @gardar,

I just released antsichaut 0.3.8 on Pypi: https://github.com/ansible-community/antsichaut/releases/tag/0.3.8

I noticed that the last change to the changelog that happened prior to the indent getting screwed up was that version 0.10.0 got added to the changelog but it is missing the changes key.

If there are no changes detected, it should look like this:

releases:
  0.10.1:
    changes: {}
    release_date: '2024-01-08'

This should be fixed by 3a29d64


It also looks like the sorting does not understand the semantic versioning fully as versions 0.10.0 and 0.10.1 are inserted between the last 0.1.x version and first 0.2.x version and not after version 0.9.x as you'd expect.

This too is fixed in 0.3.8, by PR https://github.com/ansible-community/antsichaut/pull/35/files


Can you test please with the latest release?

@gardar
Copy link
Contributor Author

gardar commented Jan 8, 2024

Excellent, first impressions of v0.3.8 are good, although I haven't tried running it without any changes.

@gardar
Copy link
Contributor Author

gardar commented Apr 24, 2024

From time to time this keeps happening, haven't been able to figure out exactly why or under what condition.

Here is a commit where my changelog.yaml got screwed up: prometheus-community/ansible@a3aaf70#diff-badba4dd47cd1a24e2765eb5c5f420a529872e06a0ce09251c35ea2cb5b4ebd9

Curiously on the commit before that, the empty changes: {} section was removed, which is perhaps the root cause of the changelog.yaml getting screwed up?
prometheus-community/ansible@85d0ae8#diff-badba4dd47cd1a24e2765eb5c5f420a529872e06a0ce09251c35ea2cb5b4ebd9

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants