DataStructures.jl icon indicating copy to clipboard operation
DataStructures.jl copied to clipboard

Changelog for releases 0.18.16 and following

Open jonas-schulze opened this issue 1 year ago • 1 comments

As of today (2024-09-07), 0.18.20 is the most recent version. Unfortunately, though, Changelog.md refers to GitHub releases for anything newer than 0.7.0 but the latest GitHub release (or tag) is 0.18.15. Would it be possible to create the missing GitHub releases such that users can see which PRs went into which release? Thanks in advance.

jonas-schulze avatar Sep 07 '24 09:09 jonas-schulze

The PRs in each release are shown now on the github releases page: https://github.com/JuliaCollections/DataStructures.jl/releases

occationally tagbot screws up and puts them wrong. In particular with things going into different branches. But they look right to me.

We should perhaps delete changelog.md. Its not been used since like before I started maintaining this package.

If you want to look into a tool that actually inspects git history to generate an accurate set of release notes referencing PRs that would be apprecated

oxinabox avatar Sep 09 '24 04:09 oxinabox

The releases and tags were/are missing and there seem to be multiple reasons:

First off the TagBot config was outdated -- this was actually fixed on master some time ago, but not on the release-0.18 branch. I've updated it there now, too.

Next, there was no SSH deploy key configured (to be precise: there was a DOCUMENTER_KEY repository secret but without a matching deploy key this is useless). I think is also why the documentation website hasn't been updated since 2023.

I tried earlier to run TagBot on the release-0.18 branch, with lookback set to 450 (days) in order to get the old releases. This managed to locate the releases, and create the 0.18.16 and 0.18.17 tags (I tried running it twice, each time it creates one), but it then fails to create a release. From the logs:

Tag v0.18.16 already exists
Processing version v0.18.17 (b5ba47d658235e6a67d9c05a539dfbc503c6246f)
Generating changelog for version v0.18.17 (b5ba47d658235e6a67d9c05a539dfbc503c6246f)
Creating release v0.18.17 at b5ba47d658235e6a67d9c05a539dfbc503c6246f
Request POST /repos/JuliaCollections/DataStructures.jl/releases failed with 403: Forbidden
HTTPHeaderDict({'Date': 'Mon, 17 Mar 2025 11:19:56 GMT', 'Content-Type': 'application/json; charset=utf-8', 'X-GitHub-Media-Type': 'github.v3; format=json', 'x-accepted-github-permissions': 'contents=write; contents=write,workflows=write', 'x-github-api-version-selected': '2022-11-28', 'X-RateLimit-Limit': '5000', 'X-RateLimit-Remaining': '4474', 'X-RateLimit-Reset': '1742211303', 'X-RateLimit-Used': '526', 'X-RateLimit-Resource': 'core', 'Access-Control-Expose-Headers': 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset', 'Access-Control-Allow-Origin': '*', 'Strict-Transport-Security': 'max-age=31536000; includeSubdomains; preload', 'X-Frame-Options': 'deny', 'X-Content-Type-Options': 'nosniff', 'X-XSS-Protection': '0', 'Referrer-Policy': 'origin-when-cross-origin, strict-origin-when-cross-origin', 'Content-Security-Policy': "default-src 'none'", 'Vary': 'Accept-Encoding, Accept, X-Requested-With', 'Content-Encoding': 'gzip', 'Transfer-Encoding': 'chunked', 'X-GitHub-Request-Id': '9FC0:1E9FF6:2F23DC5:5F278DB:67D8055B', 'Server': 'github.com'})
Error: GitHub returned a 403 permissions-related error.
                    Please check that your ssh key and TagBot permissions are up to date
                    https://github.com/JuliaRegistries/TagBot#setup
                    
Traceback (most recent call last):
  File "/root/tagbot/action/__main__.py", line 96, in <module>
    repo.create_release(version, sha)
  File "/root/tagbot/action/repo.py", line 608, in create_release
    self._repo.create_git_release(
  File "/usr/local/lib/python3.12/site-packages/github/Repository.py", line 1347, in create_git_release
    headers, data = self._requester.requestJsonAndCheck("POST", f"{self.url}/releases", input=post_parameters)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/github/Requester.py", line 586, in requestJsonAndCheck
    return self.__check(*self.requestJson(verb, url, parameters, headers, input, self.__customConnection(url)))
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/github/Requester.py", line 856, in requestJson
    return self.__requestEncode(cnx, verb, url, parameters, headers, input, encode)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/github/Requester.py", line 977, in __requestEncode
    status, responseHeaders, output = self.__requestRaw(cnx, verb, url, requestHeaders, encoded_input)
                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/github/Requester.py", line 1011, in __requestRaw
    response = cnx.getresponse()
               ^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/github/Requester.py", line 202, in getresponse
    r = verb(
        ^^^^^
  File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 637, in post
    return self.request("POST", url, data=data, json=json, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 589, in request
    resp = self.send(prep, **send_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 703, in send
    r = adapter.send(request, **kwargs)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 667, in send
    resp = conn.urlopen(
           ^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 934, in urlopen
    retries = retries.increment(method, url, response=response, _pool=self)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/github/GithubRetry.py", line 187, in increment
    raise Requester.createException(response.status, response.headers, content)  # type: ignore
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
github.GithubException.GithubException: 403 {"message": "Resource not accessible by integration", "documentation_url": "https://docs.github.com/rest/releases/releases#create-a-release", "status": "403"}

Traceback (most recent call last):
Response (502): {
  File "/root/tagbot/action/__main__.py", line 96, in <module>
    repo.create_release(version, sha)
  File "/root/tagbot/action/repo.py", line 608, in create_release
  "message": "Internal server error"
}
    self._repo.create_git_release(
  File "/usr/local/lib/python3.12/site-packages/github/Repository.py", line 1347, in create_git_release
    headers, data = self._requester.requestJsonAndCheck("POST", f"{self.url}/releases", input=post_parameters)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/github/Requester.py", line 586, in requestJsonAndCheck
    return self.__check(*self.requestJson(verb, url, parameters, headers, input, self.__customConnection(url)))
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/github/Requester.py", line 856, in requestJson
    return self.__requestEncode(cnx, verb, url, parameters, headers, input, encode)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/github/Requester.py", line 977, in __requestEncode
    status, responseHeaders, output = self.__requestRaw(cnx, verb, url, requestHeaders, encoded_input)
                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/github/Requester.py", line 1011, in __requestRaw
    response = cnx.getresponse()
               ^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/github/Requester.py", line 202, in getresponse
    r = verb(
        ^^^^^
  File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 637, in post
    return self.request("POST", url, data=data, json=json, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 589, in request
    resp = self.send(prep, **send_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 703, in send
    r = adapter.send(request, **kwargs)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 667, in send
    resp = conn.urlopen(
           ^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 934, in urlopen
    retries = retries.increment(method, url, response=response, _pool=self)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/github/GithubRetry.py", line 187, in increment
    raise Requester.createException(response.status, response.headers, content)  # type: ignore
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
github.GithubException.GithubException: 403 {"message": "Resource not accessible by integration", "documentation_url": "https://docs.github.com/rest/releases/releases#create-a-release", "status": "403"}

Well, I can also run it locally to fill in the missing releases but I worry that there is still something wrong that will prevent it from working right for the next real release.

fingolfin avatar Mar 17 '25 13:03 fingolfin

I think the SSH / deploy key actually works, indeed https://juliacollections.github.io/DataStructures.jl/dev/ now is up-to-date (first update since 2023-10-30, yay).

But it fails for those releases because they use the version of the CI workflow inside the tagged commit, and those obviously don't contain the fixes that were added to release-0.18 later.

On the upside, I believe if a new release is made, the tagging will work, and also updating the documentation will work. There is also at least one unreleased change, so it would make sense to just make a 0.18.21 release ASAP.

@oxinabox what do you think?

fingolfin avatar Mar 17 '25 16:03 fingolfin

In the meantime, all the missing tags and "GitHub releases" are now there. (Perhaps the release notes are not always optimal, but we can always improve them. There was that much changed anyway, I think?)

fingolfin avatar Mar 17 '25 16:03 fingolfin