# AttoBot: a package release bot

**URL:** <https://discourse.julialang.org/t/attobot-a-package-release-bot/494>\
**Category:** Community\
**Tags:** announcement\
**Created:** [November 22, 2016, 12:22pm UTC](https://discourse.julialang.org/t/attobot-a-package-release-bot/494 "2016-11-22T12:22:31Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![simonbyrne](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/simonbyrne/32/19_2.png) [@simonbyrne](https://discourse.julialang.org/u/simonbyrne)\
**Post date:** [November 22, 2016, 12:22pm UTC](https://discourse.julialang.org/t/attobot-a-package-release-bot/494/1 "2016-11-22T12:22:31Z")

</div>

In order to make it easier to tag package releases, I’ve created a GitHub bot to help out:

> **[GitHub - attobot/attobot: Julia package release bot](https://github.com/attobot/attobot)**
>
> Julia package release bot. Contribute to attobot/attobot development by creating an account on GitHub.

Once configured, you can simply [create a release](https://help.github.com/articles/creating-releases/) in GitHub, and AttoBot will take care of the rest (well mostly, at the moment it still requires someone to merge the final result).

It is still a bit experimental, but any feedback would be appreciated.

-Simon

---

<div class="post-metadata">

**Author:** ![mauro3](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mauro3/32/292_2.png) [@mauro3](https://discourse.julialang.org/u/mauro3)\
**Post date:** [November 22, 2016, 12:28pm UTC](https://discourse.julialang.org/t/attobot-a-package-release-bot/494/2 "2016-11-22T12:28:35Z")

</div>

Cool! One question: Does it also work with tags created locally (via `git tag` or `PkgDev.tag(...)`) and then pushed to github?

---

<div class="post-metadata">

**Author:** ![simonbyrne](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/simonbyrne/32/19_2.png) [@simonbyrne](https://discourse.julialang.org/u/simonbyrne)\
**Post date:** [November 22, 2016, 12:37pm UTC](https://discourse.julialang.org/t/attobot-a-package-release-bot/494/3 "2016-11-22T12:37:59Z")

</div>

No, it needs to be done as a release, which occurs on top of creating a tag, i.e. you can create the tag locally, push it to github, then create a release using that tag, or you can just create a release which creates a new tag as part of the process.

It might be possible to change it to tag-based, but `PkgDev.tag` doesn’t push tags, so it would still require an extra step somewhere.

---

<div class="post-metadata">

**Author:** ![tbreloff](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tbreloff/32/68_2.png) [@tbreloff](https://discourse.julialang.org/u/tbreloff)\
**Post date:** [November 22, 2016, 2:16pm UTC](https://discourse.julialang.org/t/attobot-a-package-release-bot/494/4 "2016-11-22T14:16:47Z")

</div>

Holy crap this is the coolest thing ever: [https://github.com/JuliaLang/METADATA.jl/pull/7126](https://github.com/JuliaLang/METADATA.jl/pull/7126). Thanks Simon!!!

---

<div class="post-metadata">

**Author:** ![sdanisch](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sdanisch/32/1406_2.png) [@sdanisch](https://discourse.julialang.org/u/sdanisch)\
**Post date:** [November 22, 2016, 4:45pm UTC](https://discourse.julialang.org/t/attobot-a-package-release-bot/494/5 "2016-11-22T16:45:37Z")

</div>

What times to be alive 🙂 Thanks a lot, Simon!!

---

<div class="post-metadata">

**Author:** ![bicycle1885](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bicycle1885/32/107_2.png) [@bicycle1885](https://discourse.julialang.org/u/bicycle1885)\
**Post date:** [November 22, 2016, 6:56pm UTC](https://discourse.julialang.org/t/attobot-a-package-release-bot/494/6 "2016-11-22T18:56:33Z")

</div>

This must be the easiest way to release packages! My first try finished with just a few clicks and types on GitHub 😍

---

<div class="post-metadata">

**Author:** ![JeffreySarnoff](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jeffreysarnoff/32/1980_2.png) [@JeffreySarnoff](https://discourse.julialang.org/u/JeffreySarnoff)\
**Post date:** [December 8, 2016, 8:28am UTC](https://discourse.julialang.org/t/attobot-a-package-release-bot/494/7 "2016-12-08T08:28:23Z")

</div>

Thank you, Simon: a better way off the package 🎡

---

<div class="post-metadata">

**Author:** ![MikeInnes](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mikeinnes/32/3656_2.png) [@MikeInnes](https://discourse.julialang.org/u/MikeInnes)\
**Post date:** [December 11, 2016, 9:34pm UTC](https://discourse.julialang.org/t/attobot-a-package-release-bot/494/8 "2016-12-11T21:34:57Z")

</div>

Just had a chance to try this out and it works amazingly smoothly! We truly are living in the future.

---

<div class="post-metadata">

**Author:** ![simonbyrne](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/simonbyrne/32/19_2.png) [@simonbyrne](https://discourse.julialang.org/u/simonbyrne)\
**Post date:** [December 14, 2016, 2:19pm UTC](https://discourse.julialang.org/t/attobot-a-package-release-bot/494/9 "2016-12-14T14:19:07Z")

</div>

A quick update: AttoBot can now register packages as well.

---

<div class="post-metadata">

**Author:** ![kristoffer.carlsson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kristoffer.carlsson/32/22_2.png) [@kristoffer.carlsson](https://discourse.julialang.org/u/kristoffer.carlsson)\
**Post date:** [December 17, 2016, 9:54am UTC](https://discourse.julialang.org/t/attobot-a-package-release-bot/494/10 "2016-12-17T09:54:15Z")

</div>

I used attobot to register a PR to metadata which I later closed. I then deleted the tag and recreated it ([https://github.com/KristofferC/ContMechTensors.jl/releases/tag/v0.3.0](https://github.com/KristofferC/ContMechTensors.jl/releases/tag/v0.3.0)). However, it seems that the new tag is not being used to create a METADATA PR.

Any ideas?

---

<div class="post-metadata">

**Author:** ![simonbyrne](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/simonbyrne/32/19_2.png) [@simonbyrne](https://discourse.julialang.org/u/simonbyrne)\
**Post date:** [December 17, 2016, 11:07am UTC](https://discourse.julialang.org/t/attobot-a-package-release-bot/494/11 "2016-12-17T11:07:23Z")

</div>

There was a bug, which I fixed and then retriggered attobot. Unfortunately it then hit the issue where GitHub won’t let you reopen PRs after a force push (which is what attobot is effectively doing).

The general advice is [“don’t do that then”](http://www.dictionary.com/browse/don-t-do-that-then-) (it usually won’t be a problem, as only those with METADATA commit access can close attobot PRs).

In this case, I was able to delete the branch and recreate a [new PR](https://github.com/JuliaLang/METADATA.jl/pull/7337), but I’ll try to figure out a more permanent fix.

(in future, please open issues on the [attobot repo](https://github.com/attobot/attobot), as it is easier for me to keep track of them)

---

<div class="post-metadata">

**Author:** ![Tero\_Frondelius](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tero_frondelius/32/7629_2.png) [@Tero\_Frondelius](https://discourse.julialang.org/u/Tero_Frondelius)\
**Post date:** [January 3, 2017, 7:49am UTC](https://discourse.julialang.org/t/attobot-a-package-release-bot/494/12 "2017-01-03T07:49:08Z")

</div>

This is a really cool Bot. Thank you.
