Closed github-learning-lab[bot] closed 5 years ago
Nice job! Something changed on this repo when you added the "WIP" command. Let's try to get more insight into our app before we look at those changes.
GitHub Apps will then process this data in the background, responding to the repository with their expected default actions.
For the next exercise, let's add our own notification service to get a better idea of what apps are receiving behind the scenes.
application/json
in the Content type dropdownSometimes I respond too fast for the page to update! If you perform an expected action and don't see a response from me, wait a few seconds and refresh the page for your next steps.
Nice work adding smee.io!
When you added "WIP" to the title of this pull request, something changed. Do you see that the pull request's status is "pending" with a yellow dot? This is to block merging while the title includes "WIP".
Let's breakdown how WIP works:
Let's use this next activity to find out what's happening behind the scenes.
When you made this pull request a work in progress, I took it as a cue to add some good content to this repository! Now that we've got some real work, let's remove the WIP label so that we can merge.
WIP
from the titleSince installation, smee.io has been running patiently in the background and keeping a ledger of each webhook event that we've performed on the repository.
When you edited the pull request title, that triggered a specific type of event.
When that event was triggered, it sent a payload of data to our app. Each type of event delivers a different payload template to the app. When customizing or creating apps, having this knowledge becomes crucial.
Can you tell which type of event was sent back to the application when you changed the pull request header?
{"event":"pull_request","payload":{"action":"edited","number":2,"pull_request":{"url":"https://api.github.com/repos/anw984/getting-started-github-apps/pulls/2","id":244451844,"node_id":"MDExOlB1bGxSZXF1ZXN0MjQ0NDUxODQ0","html_url":"https://github.com/anw984/getting-started-github-apps/pull/2","diff_url":"https://github.com/anw984/getting-started-github-apps/pull/2.diff","patch_url":"https://github.com/anw984/getting-started-github-apps/pull/2.patch","issue_url":"https://api.github.com/repos/anw984/getting-started-github-apps/issues/2","number":2,"state":"open","locked":false,"title":"Trigger the app","user":{"login":"github-learning-lab[bot]","id":37936606,"node_id":"MDM6Qm90Mzc5MzY2MDY=","avatar_url":"https://avatars0.githubusercontent.com/in/10572?v=4","gravatar_id":"","url":"https://api.github.com/users/github-learning-lab%5Bbot%5D","html_url":"https://github.com/apps/github-learning-lab","followers_url":"https://api.github.com/users/github-learning-lab%5Bbot%5D/followers","following_url":"https://api.github.com/users/github-learning-lab%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/github-learning-lab%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/github-learning-lab%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/github-learning-lab%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/github-learning-lab%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/github-learning-lab%5Bbot%5D/repos","events_url":"https://api.github.com/users/github-learning-lab%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/github-learning-lab%5Bbot%5D/received_events","type":"Bot","site_admin":false},"body":"## Triggering GitHub Apps\n\nActions that a person or tool takes on GitHub can be used to trigger events. Creating an issue, making a commit, or leaving a comment, to name a few, are logged on GitHub. If GitHub doesn't use it, it can still be useful to other applications.\n\nWhen you install an app, you give the app permission to receive some of this data from GitHub. That data allows the apps to react in ways that are useful to you. You can also allow the app to send information back, or change information completely.\n\nIt's important to mention that GitHub Apps are not people. You can't interact with them by doing things like using an @mention, or assigning them to review your work. On the other hand, they can do things that humans can't - like crunch big data, piece together networks of information and find bugs or errors that people wouldn't.\n\n## App components\n\nAn app is like a home security system. It's equipped to watch your house at all times, but only notifies you for specific criteria.\tWhen you install a home security system, you need to worry about a few components:\n\n- Electricity to have the power to run continuously. You don't want failure when you aren't watching.\n- Standard behaviors to detect things like movement, noise, and doors opening. You don't want to have to program it to understand these actions -- you want to select how it responds to them.\n- A location that will be watched.\n- A notification delivery service -- either to your phone, a dedicated security service, or both.\n\nJust like a home security system, a GitHub App only watches for specific actions, and then responds in predetermined ways.\n\n## Step 2: Trigger the WIP app\n\nWIP is a common abbreviation to mean work in progress.\n\nThe app you've just installed is concerned with one action: changing the title of a pull request. Let's test it out and see what the result is by updating the title of this pull request.\n\n### :keyboard: Activity: Test the app by editing the pull request title\n\n1. To the right of the pull request title, click the Edit button\n1. Add WIP
to the beginning of the title\n1. Click Save\n\n
Perfect! As you might guess, pull_request is a broad event.
In the next exercise, we'll take a look at how apps can take general event payloads and turn those into specific responses via the API.
After you removed WIP from the pull request title, the pull request was unblocked. Now, you're able to merge.
Sometimes I respond too fast for the page to update! If you perform an expected action and don't see a response from me, wait a few seconds and refresh the page for your next steps.
Now that we've explored the WIP app, let's move onto what request info can do. We'll use request info to learn about how GitHub's API, webhooks, and configuration files can combine to give apps customized repository automation.
Triggering GitHub Apps
Actions that a person or tool takes on GitHub can be used to trigger events. Creating an issue, making a commit, or leaving a comment, to name a few, are logged on GitHub. If GitHub doesn't use it, it can still be useful to other applications.
When you install an app, you give the app permission to receive some of this data from GitHub. That data allows the apps to react in ways that are useful to you. You can also allow the app to send information back, or change information completely.
It's important to mention that GitHub Apps are not people. You can't interact with them by doing things like using an @mention, or assigning them to review your work. On the other hand, they can do things that humans can't - like crunch big data, piece together networks of information and find bugs or errors that people wouldn't.
App components
An app is like a home security system. It's equipped to watch your house at all times, but only notifies you for specific criteria. When you install a home security system, you need to worry about a few components:
Just like a home security system, a GitHub App only watches for specific actions, and then responds in predetermined ways.
Step 2: Trigger the WIP app
WIP is a common abbreviation to mean work in progress.
The app you've just installed is concerned with one action: changing the title of a pull request. Let's test it out and see what the result is by updating the title of this pull request.
:keyboard: Activity: Test the app by editing the pull request title
WIP
to the beginning of the titleAfter changing the title, look for my response in this pull request