Should I uninstall the old TabBot App once all the Action PR are merged?
Iām seeing the same thing. Hereās a link to an example error: https://github.com/JuliaApproximation/ApproxFunIntrospect.jl/commit/66e666b25f043f991c2a223bd099c3bd1e4cc422/checks?check_suite_id=446140216
Alright @dlfivefifty @rdeits the error seems to arise if your repository does not have a Project.toml
file.
The two solutions are:
- Add a
Project.toml
file to your repository. - Delete the
.github/workflows/TagBot.yml
file from your repository.
I think this is clearly a bug In the Action and should be corrected. Mass PRs are generally frowned upon, as it creates undesired work for a lot of people. Adding in extra steps to work around a bug in the PR is a step too far.
To be fair, REQUIRE
files have been deprecated and discouraged for a long time.
Some of the repositories havenāt been touched since Julia v0.5. Donāt put in a PR to a defunct repository that doesnāt take into account itās not valid on Julia v1.0ā¦ Itās equivalent to putting a PR into a Python repository, which also doesnāt have a Project.toml file
Ok, Iāll try to address everything in order:
Yeah I think so. Iām not sure that it handles updates, but it could be made to do so.
This was already discussed, but some additional information: Even if it were in Julia, itās a Docker image so the Julia download would only be at build time. So users would not download Julia, they would download a Docker image that has Julia preinstalled.
I would have liked to have written it in Julia,.
But Iāll be totally honest: Python is objectively better for this stuff right now. Iām not saying Julia wonāt be a better general purpose language one day in the future (I really want it to be!) but changelog template support would be far worse without Jinja, and GPG password support would not exist without python-gnupg. In its current state, TagBot finishes its run before a Julia-implemented TagBot would finish compiling stuff. Obviously performance is less important when itās running in the background without your knowledge, but hey, with potentially 2000 jobs every hour I think that the energy savings are substantial. Iāve gotta make up for the huge number of CI jobs I triggered yesterdayā¦
Also, my dev experience has been far better. Because the code is basically one giant ball of side effects, testing it is really hard without a good, convenient mocking library and unittest.mock
is far ahead of Julia alternatives (I say this as someone who maintains a mocking library!). The test suite with ~100% coverage, static analysis, lint checking, and format checking takes less than 3 seconds. Iād imagine the Julia equivalent to take minutes.
In the future, you probably could rewrite it in Julia and be successful; itās only ~600 LOC.
This was an oversight by me. Iām sorry. I disabled those emails on my own account a long time ago and I totally forgot that they were a thing.
I also didnāt really expect the PR to be merged by any really old packages that donāt have a Project.toml, and I didnāt explain that thoroughly enough above.
To be clear now: TagBot is only for āmodernā packages that want to be registered in a registry. If your package is being developed and registered presently, you should definitely have a Project.toml
. If itās not, you should not bother installing TagBot.
Iāve updated TagBot to no longer error in this case.
You can if you want, itās a good idea because it immediately revokes my access to your packages through the App. But if you donāt, the App will still not run on your packages because it checks first to see if the Action is set up.
Old TagBot had this list of issue/PR labels for excluding items from the changelog:
When using the automatic changelog, you can ensure that certain issues or pull requests are not included.
These might include usage questions or typo fixes that arenāt worth mentioning.
To exclude an issue or PR, add a label to it with one of the following values:
changelog skip
duplicate
exclude from changelog
invalid
no changelog
question
wont fix
You can spell these in a few different ways.
For example,no changelog
could benochangelog
,no-changelog
,no_changelog
,No Changelog
,NoChangelog
,No-Changelog
, orNo_Changelog
.
However, IIUC, it looks like the latest TagBot supports only changelog-skip
:
Can you add back all the previously supported labels?
Edit: posted as an issue Are labels like `no changelog` supported in GitHub Action? Ā· Issue #57 Ā· JuliaRegistries/TagBot Ā· GitHub
Just as an aside; we do now have caching infrastructure in place in many cloud hosting providers (including those that GH actions run inside of) that allow us to pay O(1) monthly costs for downloads within those datacenters. If you happen to launch an incredibly popular bot that runs in a new datacenter, we will just add a caching server in that datacenter. So donāt let download cost dissuade you from building cool infrastructure! I do happen to agree with Christopher that Python is a great tool for this purpose though; some pieces of the Julia caching infrastructure are written in Python for exactly these reasons. That decision boundary is moving, but itās a bit of a slog with a few major technical hurdles in the way.
So once we merge all PRs, or enable the action manually on all Julia repositories, we can safely revoke the permissions granted on an org to the TagBot app?
I very much appreciate all the work that was put into this, and the help with the transition.
However, having a lot of Julia repositories, this morning I found hundreds of notifications in my mailbox.
I would like to suggest that the next time someone wants to make thousands of automated PRs, they consider
- an on-demand option with package-level granularity (type the Github
username/repo.jl
into a web form, get a PR) - an on-demand option with user-level granularity (all Julia repos for that user/organization get such a PR).
Recently the .travis.yml
configuration file had deprecating changes, probably a rare occurrence.
Personally, I am choosing not to rely on Github actions, as I donāt want to depend on Github.
But this is not a problem for me, since tagging manually doesnāt bother me.
itās really unfortunate the github does not permit apps to send notifications to each other. if it did, then JuliaRegistrator could tell TagBot when to run, instead the latter being cronād.
Couldnāt agree more. Honestly, I canāt imagine it will last this way. inotify
got invented because polling is awful. I predict that within 6 months theyāll have fixed this.
Yes you can.
Absolutely, I was actually thinking the same thing for future migrations. Sorry for the inconvenience!
Yeah, this was the original wanted design but itās not possible right now, probably for security reasons. I hope theyāll figure something out!
Iād prefer to use an ssh deploy key rather than a personal access token, but Iām a bit confused about how and whether this will work. Is the problem that the tagbot action canāt trigger a new build for the tag using the github API? In that case I donāt see how the ssh key can help.
The problem is that GitHub does not allow an action to trigger another action. However, if you as a user (e.g. with SSH key) authorize the push, then the doc-building action will trigger. However, if you are not using a user authorization for pushing the docs, then the gh-pages page build (which is also an action) is not triggered, see GitHub Pages build not triggered with GITHUB_TOKEN Ā· Issue #1177 Ā· JuliaDocs/Documenter.jl Ā· GitHub.
There is a chain of GitHub workflows: TagBot ā Documenter ā gh-pages. IIUC, SSH key (DOCUMENTER_KEY
) is only relevant for Documenter ā gh-pages. For TagBot ā Documenter, I suppose you need to setup a custom token in TagBot.yml
(like this: Use custom token in .github/workflows/TagBot.yml by tkf Ā· Pull Request #13 Ā· JuliaTesting/PerformanceTestTools.jl Ā· GitHub )?
You can use a SSH deploy key for TagBot too (GitHub - JuliaRegistries/TagBot: Creates tags, releases, and changelogs for your Julia packages when they're registered), can even use the same as for Documenter. I think this is a better approach since access tokens are not limited to one repo like SSH keys.
I didnāt know that TagBot supports SSH key. Thanks for the clarification.