View Issue Details
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0006180||Taler||deployment and operations||public||2020-04-14 21:46||2020-07-22 23:39|
|Reporter||Christian Grothoff||Assigned To||Christian Grothoff|
|Platform||i7||OS||Debian GNU/Linux||OS Version||squeeze|
|Product Version||git (master)|
|Target Version||0.8||Fixed in Version||0.8|
|Summary||0006180: setup codespell as part of the CI for all of our source projects|
|Tags||No tags attached.|
I actually use codespell in my editor (Atom) and it's very useful.
This spec is not detailed enough to start. It's kind of a note, not a spec.
" setup codespell as part of the CI for all of our source projects"
As *what* part. Set up *to do what* exactly? How will I know it is done? What tests will you run to verify task completion?
Also, what is "the CI" and how do I access it?
Yes, this is a note, not a spec. The idea was to provide an idea about next steps, not a full spec.
But I can give you more details:
The CI is buildbot. You access it via deployment.git, where you can edit the buildbot master configuration. We can probably re-use an existing slave for _this_ task, but could also deploy additional slave accounts for this or other tasks in the future.
Setup means to run codespell against the source repositories whenever they change and generate a report. The report could be a Web site (say codespell.taler.net) or sending an e-mail to the last committer in case spelling errors were found (I'd prefer this option).
The task is complete if developers get a notification whenever they commit a spelling mistake into the code (basically against any git.taler.net repository with code in a language that codespell supports).
Okay this seems simple enough now. I take this as the defliverable:
> The task is complete if developers get a notification whenever they commit a spelling mistake into the code (basically against any git.taler.net repository with code in a language that
> codespell supports).
- Do you want this to run on *every* codebase?
- What about the ones that do not currently have a buildbot worker?
- Because this will take time to install on each codebase, please specify the highest-priority ones to start with. And above that, a low-impact one that I can use to test. :)
- Do you know a buildbot method to create a meta worker? ie - something that can be called from any shell account with a worker? I don't think this exists and I don't see it in the docs, but I might as well ask before I go another way. Otherwise I guess it should be easy to write a generic "codespell.sh" script, and run codespell.sh from each other script called by each worker, since those scripts already have access to the deployment/buildbot directory.
- Can you install codespell on taler.net? This is preferable to installing locally on "every" shell account that runs a buildbot worker on a codebase. However, it is not available for stretch: https://packages.debian.org/search?keywords=codespell&searchon=names&suite=stable§ion=all Maybe a global pip install: https://github.com/codespell-project/codespell
Yes, every codebase on git.taler.net, and likely eventually also git.gnunet.org (as a service to GNUnet).
This should be a separate buildslave (process/user-ID) that only runs the spell checker. It has nothing to do with other jobs, and again may be run on code bases for which we have no other jobs.
For each codebase, the main work is to write the trigger (if git changes, do run spellchecker) and a factory (checkout code, run spellchecker, report). Overall, I would _hope_ you can write a python function "setup_spellchecker(ARG)" which takes as ARG the URL of a git repo and then that function creates the trigger and the factory rules for that Git repo. Maybe we need additional args to specify the programming language, but overall I would hope for a "write once, use for any repo"-style implementation.
Most important repos: exchange, merchant, wallet*.
I've setup a user email@example.com to run one buildslave for all of the buildbot jobs (for _all_ repos).
||Note: this is on hold until logs and other BB questions are answered for sphinx and can be used here too.|
Worker is now running, output at:
|2020-04-14 21:46||Christian Grothoff||New Issue|
|2020-04-14 21:46||Christian Grothoff||Status||new => assigned|
|2020-04-14 21:46||Christian Grothoff||Assigned To||=> buckE|
|2020-04-17 09:01||buckE||Note Added: 0015672|
|2020-04-17 09:49||Christian Grothoff||Note Added: 0015674|
|2020-06-19 09:19||buckE||Note Added: 0016321|
|2020-06-19 09:19||buckE||Assigned To||buckE => Christian Grothoff|
|2020-06-19 12:54||Christian Grothoff||Note Added: 0016325|
|2020-06-19 12:54||Christian Grothoff||Assigned To||Christian Grothoff => buckE|
|2020-06-19 12:55||Christian Grothoff||Note Added: 0016326|
|2020-06-19 12:56||Christian Grothoff||Note Edited: 0016326||View Revisions|
|2020-06-26 11:32||buckE||Note Added: 0016370|
|2020-06-30 03:56||buckE||Assigned To||buckE => Christian Grothoff|
|2020-07-05 00:06||Christian Grothoff||Assigned To||Christian Grothoff =>|
|2020-07-05 00:06||Christian Grothoff||Status||assigned => confirmed|
|2020-07-22 22:05||Christian Grothoff||Assigned To||=> Christian Grothoff|
|2020-07-22 22:05||Christian Grothoff||Status||confirmed => assigned|
|2020-07-22 22:05||Christian Grothoff||Target Version||git (master) => 0.8|
|2020-07-22 23:39||Christian Grothoff||Note Added: 0016505|
|2020-07-22 23:39||Christian Grothoff||Status||assigned => resolved|
|2020-07-22 23:39||Christian Grothoff||Resolution||open => fixed|
|2020-07-22 23:39||Christian Grothoff||Fixed in Version||=> 0.8|