Skip to content

changelog.yaml getting screwed up #41

@gardar

Description

@gardar

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions