Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

May 22, 2018
Tweet

More Decks by Brandon Keepers

Other Decks in Technology

Transcript

  1. Building the GitHub
    workspace app
    Brandon Keepers – GitHub

    View full-size slide

  2. Wilhelm Klopp
    @wilhelmklopp
    Brandon Keepers
    @bkeepers

    View full-size slide

  3. Compatible Platforms
    +
    Similar Audience

    View full-size slide

  4. Built on open platforms

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

    Slack Workspace apps

    View full-size slide

  5. Overview
    Benefits
    Challenges
    Next

    View full-size slide

  6. Authenticating
    Workspaces

    View full-size slide

  7. Authenticating
    Users

    View full-size slide

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

    View full-size slide

  9. 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 full-size slide

  10. Simplifying setup

    View full-size slide

  11. Simplifying setup

    View full-size slide

  12. Simplifying setup
    • • •

    View full-size slide

  13. Simplifying setup
    • • •

    View full-size slide

  14. Simplifying setup
    • • •
    • • •

    View full-size slide

  15. Simplifying setup
    • • •
    • • •

    View full-size slide

  16. GitHub User 1
    Slack User 1
    Identity & Access

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  19. 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 full-size slide

  20. 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 full-size slide

  21. 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 full-size slide

  22. 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 full-size slide

  23. 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 full-size slide

  24. 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 full-size slide

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

    View full-size slide

  26. Recent Improvements
    Take Action from Slack

    with Slash commands

    View full-size slide

  27. 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 full-size slide

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

    View full-size slide

  29. 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 full-size slide

  30. Thank you!
    @bkeepers

    View full-size slide