Giter VIP home page Giter VIP logo

attobot's Introduction

AttoBot

NOTE: AttoBot has been disabled, please use Registrator.jl.

attobot

AttoBot is a package release bot for Julia. It creates pull requests to Julia METADATA when releases are tagged in GitHub, as an alternative to the PkgDev.jl functions register, tag and publish.

Usage

To set up AttoBot on your repository, go to https://github.com/integration/attobot and click "Configure" to select the repositories you wish to add. It will only operate on packages with the standard ".jl" suffix (all other packages will be ignored).

If the package is not yet registered in METADATA.jl, it will be automatically added when you make your first release.

Creating a release

Releases are created via GitHub releases: this is some extra functionality built on top of git tags that trigger a webhook used by AttoBot.

  1. Click on the "releases" link in the repository banner.
    release link
  2. Click "Draft new release"
    draft new release
  3. Enter a tag label in the appropriate semver form (i.e. vX.Y.Z where X,Y,Z are numbers): GitHub will create the tag if it doesn't already exist. Include any other details and click "Publish release".

AttoBot will then open a pull request against METADATA and CC you in the process. In certain cases AttoBot may open an issue on the repository if the release is not correct (e.g. if the tag is not in the correct form). If the pull request does not appear within 30 seconds or so, please open an issue.

Updating/deleting a release

If you need to make a change before the release before the METADATA pull request has been merged (e.g. if you need to fix your Compat settings), the easiest option is to delete the release (and corresponding tag), then create a new release with the same version number; AttoBot will then update the existing pull request and make a comment that it has been updated. To delete a release and its tag:

  1. Click on the "releases" link in the repository banner.
    release link
  2. Click on the title of the release in question
    release title
  3. Click "Delete".
    release delete
  4. The tag still exists; click on the tag title
    tag title
  5. Click "Delete"
    release title

Privacy statement

AttoBot receives the content of certain GitHub hooks, namely the integration_installation event (which doesn't appear to be documented, but in any case is ignored by AttoBot), and the release event. These contain certain publicly available details about the repository and the user who initiated the event. AttoBot will also make several subsequent queries via the public GitHub api to the repository in question. The contents of these may be retained in server logs.

The user who triggers the release will be marked as the commit author, and if their email is publicly available via GitHub, or they have made a commit to the repository in question using a public email address, then it will appear in the METADATA commit log. If you don't wish for this to happen, then you should make your email address private.

AttoBot should not be enabled on private repositories: not only are these not supported by METADATA (thus any such pull requests will be rejected), but you may inadvertently leak private information.

Credits

attobot's People

Contributors

andreasnoack avatar ararslan avatar bicycle1885 avatar glenhertz avatar mikeinnes avatar simonbyrne avatar tkelman avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

attobot's Issues

allow developer that calls attobot to close PR

I had learned that the appropriate way to re-check a new tag after some minor correction was to close and then reopen the pr. It would help if my use of attobot did not preclude that close and reopen action, or something with the same outcome.

Detect issues with PR

Attobot could detect issues, e.g. wrong minimum Julia version, and automatically reject the PR to METADATA, without having to waste CI and developer time waiting to see what happens.

Tag reminders

I'm not sure if this is in the realm of possibilities. But it would be interesting to see if it's possible to add reminders to tag a package for new commits that have been available on master for more than x days/months. This would help remind package authors to tag updates to their packages

upper bound bumped dependency in previous versions

When for example I bump the version of IndexedTables required by JuliaDB from 0.4.2 to 0.5.1, it would be nice if attobot goes through the require file of all the previously tagged versions of JuliaDB and puts an upper bound of 0.5.1 (exclusive) if an upper bound doesn't already exist.

trouble tagging Clp.jl 0.3.1

Possibly doing something silly on my end, but I just tagged Clp.jl v0.3.1 and haven't seen a corresponding PR to METADATA. Any ideas?

Thanks!

`@ping` all repo watcher's in in the PR to METADATA

Right now when attobot makes a METADATA PR, it cc's the person who it is making the PR on behalf of.

I suggest it should all tag anyone who is currently Watching the package repo on github.
Because they have selected Watching, which indicates they want to be aware of every thing going on WRT a package.
Presumably, they also want to know when a release is proposed.

Verify that Travis runs against all supported Julia versions

I currently have to check this manually, but it would be neat if possible to do here. Parse the .travis.yml, if present, and compare to REQUIRE. If a package still says it supports 0.4, then its travis, if running, should be sure to test against it.

Unable to detect ONNX release

I just updated FluxML/ONNX.jl to v0.1.0. Isn't attobot expected to make a PR for this in metadata.jl? Because there was no PR from attobot's side.

Is attobot only triggered if the release is created as shown in the documentation?

Instead of going back and reading the documentation for attobot before creating the v0.7.1 release of MixedModels I relied on my memory of how attobot works.

Turns out relying on my memoryy wasn't such a great idea.

I used PkgDev.tag("MixedModels") in Julia to tag the package then used the Tags tab on the Github repository to create a release. So Release v0.7.1 does indeed exist on the Github repository but it seems that it did not trigger attobot to create a pull request on the METADATA repository.

What would be a good way of triggering the PR on METADATA?

Create tag/register labels

Suggested by @kshyatt

Attobot should automatically label PRs as to whether they are tagging an existing package or registering a new one.

The problem is that non-contributors can't add labels (and AttoBot probably shouldn't be a contributor on METADATA, as I'm not really convinced there aren't gaping security holes). One option would be to add the functionality to AttoBotDeleter, and give the integration restricted write access to PRs (but not the repository itself). However this will require using the integration authentication, rather than attobot's account.

Testing downstream packages upon the creation of a new tag

As Julia evolves, many packages are built on top of each other and it becomes hard to release a new version with breaking changes. It would be helpful if we, as the authors of a package MyPackage, were able to see right away the impact of the breaking changes in downstream packages.

We can manually do this with:

downstream = Pkg.dependents("MyPackage")
for pkg in downstream
  Pkg.test(pkg)
end

but I wonder if we could have a built-in functionality in attobot for handling this breaking changes more seriously. Do you have suggestions on how that could be achieved?

cc: @tkelman, @sbromberger

REQUIRE file

Attobot complains about a missing REQUIRE file.
As I understood, the information is moved to Project.toml and manifest.toml and I assume the REQUIRE file is obsolete (because redundant).

If this is so, attobot should accept packages without REQUIRE.

Thank you for your help - attobot is great; it makes package maintenance easy as a walk in the park!
Cordially
Andreas

Where did I go wrong? :)

I had a go at this: I registered packages with Autobot:

screen shot 2016-12-05 at 08 42 57

then:

julia> using PkgDev
julia> PkgDev.tag("ColorSchemes", :minor)
INFO: Tagging ColorSchemes v1.2.0
INFO: Committing METADATA for ColorSchemes

shell> git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working tree clean

shell> git push
Everything up-to-date

shell>  git push origin --tags
Counting objects: 1, done.
Writing objects: 100% (1/1), 171 bytes | 0 bytes/s, done.
Total 1 (delta 0), reused 0 (delta 0)
To github.com:cormullion/ColorSchemes.jl.git
 * [new tag]         v1.2.0 -> v1.2.0

That's all I have to do? What happens now?

attobot is not tracking releases

I'm in the process of releasing a Hotfix release for BioSequences.jl which will be version 0.6.2, and also doing a release for GeneticVariation.jl JuliaLang/METADATA.jl#9921 (comment)

Yesterday evening, when I tagged the BioSequences.jl v0.6.2 release I noticed that attobot did not create a PR, despite attobot being configured to watch those two packages.

Also, whilst attobot created a PR for GeneticVariation.jl, it has stopped updating it when I made changes to the release in response to comments.

No PR opened

I just enabled attobot on MathProgBase.jl and tagged v0.6.0. It's been a few minutes without a corresponding PR to METADATA.

Thanks!

delete attobot PR?

I am a new user of attobot, I submitted several PR's publishing my new package until
I got the hang of CI , now I want to delete my initial failed attaempts.
How do I delete PR's that attobot already issued in my name?
I deleted the tag and release but the PR is still showing in METADATA repo.

Thanks.

No PR for DynamicalBilliards.jl

I installed Attobot in order to avoid the complications of PkgDev.

The tutorial says I should open an issue if there is not anything done within some seconds and there has passed several minutes since then. I haven;t gotten any notification on my email, so I checked the PRs at the official METADATA.jl page. I also did not find anything there.

I have had many release versions tagged on github before installing Attobot. After installing attobot I made a new minor tag release, i.e. from v0.5.0 to v0.5.1 .

Let me know what else information I should give you.

React to "tag deleted" event?

Does github send events for that? If so it would be good to signal somehow "this PR is WIP, the submitter just deleted the release that triggered it, don't merge right this moment since the tag sha's might not match." Maybe re-trigger travis (eats a few minutes of queue for something that is likely to fail, not ideal), change the title to WIP until a new version of the release triggers an amended metadata PR commit, or add a "hold on, revision in progress" comment?

attobot v2

The existing model of attobot has worked reasonably well so far:

  • It is easy to set up.
  • It is able to use the existing GitHub Release UI
  • It doesn’t require write access to the repo
  • It doesn’t require internal state or a UI, so can be implemented as a single AWS Lambda script.

There are some downsides:

  • It is tied to GitHub
  • It requires two distinct steps: 1) the creation of a GitHub Release, and 2) someone to merge the result into METADATA.
  • The user needs to manually track existing version numbers.
  • The mechanism for error handling is poor: for “immediate” problems, an issue is opened on the repo in question; other errors result in CI failures on METADATA, with discussion there.
  • Fixing the problem by deleting/modifying a Release before being merged requires multiple steps, not all of which are intuitive.

In addition, Pkg3 presents new challenges:

  • The version number is stored in the Project.toml file, and ideally should be kept in sync with the tagged versions
  • There can be multiple package registries

Proposal 1: the easy one

We basically keep the current model, and ignore the version number in the Project.toml file, using the version number of the tag instead.

  • (optional) It could open a PR (post-tag) to update the Project.toml file so that it isn’t too far out of sync.
  • (optional) a .attobot config file containing the registries to which updates should be pushed

Proposal 2: the strict one

Similar to 1, but throw an error if version number in the Project.toml file doesn’t match the tag (perhaps by opening a PR to fix it). It would then require the user to go through the cumbersome process of deleting the Release and retagging (which may be quite frequently).

Proposal 3: watch the Project.toml

Rather than listening for GitHub Releases, we watch the version number in the Project.toml file, tagging a new version whenever it is incremented. It is not exactly clear how this could be handled (e.g. would you only watch certain branches?), and unless it had write access to the repo, there would be no way to create corresponding git tags on the repo itself.

Proposal 4: our own UI

Create our own Pkg UI which would allow users to create new patch/minor/major releases (possibly combined with JuliaCI checks). It could then update the Project.toml via pull requests, though still could not create tags without having write access to the repo.

Show AppVeyor Test Tags

There's no reason to not care about Windows. It should at least be highlighted during the release process that a package's tests fail or don't fail on Windows in the same way that it is for other OSs.

Did not generate a PR for new repo

I tagged v0.1.0 of my package for a new contribution. I got no messages and see no new PR for it on METADATA after 13 minutes.

(An earlier attempt with the tag name "0.1.0" did generate an issue complaining about the tag name.)

no pull request after adding a first release

Hello, I have just added my stakaz/BracedErrors package to attobot and created a first release by following the steps on the attobot page. But nothing happened after creating the release.

Could someone tell me what was wrong about it? This is my first official package. Thanks.

don't require REQUIRE

It would be nice not to reject packages that don't have a REQUIRE, only a Project.toml.

Packages that have transitioned to the new format have to maintain a REQUIRE just for attobot. Cf #48, this discussion

REQUIRE file for Julia 1.0

I've received a complaint from attobot: "Error tagging new release. The REQUIRE file could not be found." However, as far as I can tell, the Julia 1.0 docs don't mention a REQUIRE file.

It was mentioned recently that "attobot does need a bit of a revamp for Pkg3", which is understandable. In the meantime, should I appease attobot by creating an empty REQUIRE file?

rerelease problem [solved]

I had made a release v.08.4 for GeoEfficiency 20 hr ago then I had to delete it and make a commit to the repository then rerelease the version.
for the first part it is all ok. but no action is done on rereleasing even when I edit the release and changed its name.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.