$30 off During Our Annual Pro Sale. View Details »

Building the GitHub workspace app

Building the GitHub workspace app

In February 2018 we launched a new GitHub + Slack integration. These slides are from Slack's Spec developer conference sharing some of our experience working with their new workspace app tokens.

Brandon Keepers
PRO

May 22, 2018
Tweet

More Decks by Brandon Keepers

Other Decks in Technology

Transcript

  1. Building the GitHub
    workspace app
    Brandon Keepers – GitHub

    View Slide

  2. Wilhelm Klopp
    @wilhelmklopp
    Brandon Keepers
    @bkeepers

    View Slide

  3. View Slide

  4. Compatible Platforms
    +
    Similar Audience

    View Slide

  5. Built on open platforms

    & public APIs
    Showcase the potential of
    integrating the two platforms
    GitHub Apps +

    Slack Workspace apps

    View Slide

  6. Overview
    Benefits
    Challenges
    Next

    View Slide

  7. Overview

    View Slide

  8. View Slide

  9. View Slide

  10. Authenticating
    Workspaces

    View Slide

  11. View Slide

  12. View Slide

  13. View Slide

  14. View Slide

  15. View Slide

  16. View Slide

  17. View Slide

  18. View Slide

  19. View Slide

  20. View Slide

  21. Authenticating
    Users

    View Slide

  22. View Slide

  23. View Slide

  24. View Slide

  25. View Slide

  26. View Slide

  27. View Slide

  28. Benefits

    View Slide

  29. For our users
    • Smooth installation
    • Better, progressive permissions
    • Invite GitHub app to specific channels

    View Slide

  30. For us as implementers
    • Just as easy as user and bot tokens
    • A single token to persist and use
    • Everything happens in Slack or GitHub

    View Slide

  31. Challenges

    View Slide

  32. Simplifying setup

    View Slide

  33. Simplifying setup

    View Slide

  34. Simplifying setup
    • • •

    View Slide

  35. Simplifying setup
    • • •

    View Slide

  36. Simplifying setup
    • • •
    • • •

    View Slide

  37. Simplifying setup
    • • •
    • • •

    View Slide

  38. GitHub User 1
    Slack User 1
    Identity & Access

    View Slide

  39. Organization A
    GitHub User 1 GitHub User 2
    Workspace A
    Slack User 1 Slack User 2
    Identity & Access

    View Slide

  40. Organization A
    GitHub User 1 GitHub User 2
    Workspace A
    Slack User 1 Slack User 2
    Repository A
    Channel A
    Identity & Access

    View Slide

  41. Organization A Organization B
    GitHub User 1 GitHub User 2 GitHub User 3
    Workspace A
    Slack User 1 Slack User 2
    Repository A
    Channel A
    Repository B
    Identity & Access

    View Slide

  42. Organization A Organization B
    GitHub User 1 GitHub User 2 GitHub User 3
    Workspace A Workspace B
    Slack User 1 Slack User 2 Slack User 3 Slack User 4
    Repository A
    Channel A
    Repository B
    Identity & Access

    View Slide

  43. Organization A Organization B
    GitHub User 1 GitHub User 2 GitHub User 3
    Workspace A Workspace B
    Slack User 1 Slack User 2 Slack User 3 Slack User 4
    Repository A
    Channel A
    Repository B
    Identity & Access

    View Slide

  44. Organization A Organization B
    GitHub User 1 GitHub User 2 GitHub User 3
    Workspace A Workspace B
    Slack User 1 Slack User 2 Slack User 3 Slack User 4
    Repository A
    Channel A
    Repository B
    Channel B
    Identity & Access

    View Slide

  45. Organization A Organization B
    GitHub User 1 GitHub User 2 GitHub User 3
    Workspace A Workspace B
    Slack User 1 Slack User 2 Slack User 3 Slack User 4
    Repository A
    Channel A
    Repository B
    Channel B
    Repository C
    Identity & Access

    View Slide

  46. Organization A Organization B
    GitHub User 1 GitHub User 2 GitHub User 3
    Workspace A Workspace B
    Slack User 1 Slack User 2 Slack User 3 Slack User 4
    Repository A
    Channel A
    Repository B
    Channel B
    Repository C
    Identity & Access

    View Slide

  47. Create an explicit relationship
    between work artifacts.
    Delegate access control for work
    artifacts to Slack.
    Takeaways:

    View Slide

  48. Next

    View Slide

  49. Recent Improvements
    Take Action from Slack

    with Slash commands

    View Slide

  50. Experimental API
    $ curl -i -H "Authorization: token $token" -XPOST \
    https://slack.github.com/repos/myorg/myrepo -d @- <{
    "pretext": "@wilhelmklopp, you're up to deploy!",
    "color": "#36a64f",
    "title": "#554: Open Issue from slack",
    "title_link": “https://github.com/myorg/myrepo/pull/554",
    "actions": [
    { "name": "action", "text": "Unqueue", "type": "button" },
    { "name": "action", "text": "Deploy", "style": "danger", "type": "button" }
    ]
    }
    EOF

    View Slide

  51. Bi-directional integration
    Connect your code back to the
    conversation that influenced it.

    View Slide

  52. It’s all open source!
    Contribute on GitHub

    github.com/integrations/slack
    Built on Probot, a framework for
    building GitHub Apps

    probot.github.io

    View Slide

  53. Thank you!
    @bkeepers

    View Slide

  54. View Slide