Skip to content

Commit

Permalink
Merge pull request #64 from heywens/master
Browse files Browse the repository at this point in the history
TL Localization - Chapter 6, section 5 (1,577 words)
  • Loading branch information
severinolorillajr committed Feb 17, 2018
2 parents 2f907fa + beaa618 commit 4133307
Showing 1 changed file with 77 additions and 77 deletions.
154 changes: 77 additions & 77 deletions book/06-github/sections/5-scripting.asc
Original file line number Diff line number Diff line change
Expand Up @@ -96,34 +96,34 @@ end
Dito, kinukuha natin ang kargamento ng JSON na inilulunsad ng GitHub sa atin at hinahanap kung sino ang nag-push nito, kung anong branch sila nag-push at kung anu-ano ang mga file sa lahat ng mga gawaing na-push.
Pagkatapos ay sinusuri natin laban sa pamantayan at nagpadala ng isang email kung ito ay tumutugma.

In order to develop and test something like this, you have a nice developer console in the same screen where you set the hook up.
You can see the last few deliveries that GitHub has tried to make for that webhook.
For each hook you can dig down into when it was delivered, if it was successful and the body and headers for both the request and the response.
This makes it incredibly easy to test and debug your hooks.
Upang bumuo at suriin ang isang bagay tulad nito, mayroon kang isang magaling na developer console sa parehong screen kung saan mo isi-net up ang hook.
Maaari mong makita ang huling mga paghahatid na sinubukan ng GitHub upang gawin para sa webhook na iyon.
Sa bawat hook maaari kang maghukay pababa kapag ito ay naihatid, kung ito ay matagumpay at ang nilalaman at mga header para sa parehong kahilingan at tugon.
Ginagawa nito maging hindi kapani-paniwalang madali na suriin at i-debug ang iyong mga hook.

[[_web_hook_debug]]
.Web hook debugging information.
image::images/scripting-04-webhook-debug.png[Webhook debug]
.Impormasyon sa pag-debug ng Web hook.
image::images/scripting-04-webhook-debug.png[Pag-debug ng Webhook]

The other great feature of this is that you can redeliver any of the payloads to test your service easily.
Ang iba pang mahusay na tampok nito ay na maaari mong maibalik ang anumang mga kargamento upang madaling masubukan ang iyong serbisyo.

For more information on how to write webhooks and all the different event types you can listen for, go to the GitHub Developer documentation at https://developer.github.com/webhooks/
Para sa karagdagang impormasyon kung paano magsulat ng mga webhook at lahat ng iba't-ibang mga uri ng kaganapan na maaari mong pakinggan, pumunta sa dokumentasyon ng GitHub Developer sa https://developer.github.com/webhooks/

==== The GitHub API
==== Ang API ng GitHub

(((GitHub, API)))
Services and hooks give you a way to receive push notifications about events that happen on your repositories, but what if you need more information about these events?
What if you need to automate something like adding collaborators or labeling issues?
Ang mga serbisyo at mga hook ay nagbibigay sa iyo ng isang paraan upang makatanggap ng mga abiso na push tungkol sa mga kaganapan na nangyayari sa iyong mga repositoryo, ngunit paano kung kailangan mo ng karagdagang impormasyon tungkol sa mga kaganapang ito?
Paano kung kailangan mong gawing awtomatiko ang isang bagay tulad ng pagdaragdag ng mga tagatulong o mga isyu sa pag-label?

This is where the GitHub API comes in handy.
GitHub has tons of API endpoints for doing nearly anything you can do on the website in an automated fashion.
In this section we'll learn how to authenticate and connect to the API, how to comment on an issue and how to change the status of a Pull Request through the API.
Ito ay kung saan ang API ng GitHub ay madaling gamitin.
Ang GitHub ay may toneladang mga endpoint ng API para sa paggawa ng halos anumang bagay na maaari mong gawin sa website sa isang awtomatiko na paraan.
Sa seksyong ito, matututo tayo kung paano magpatunay at kumonekta sa API, paano magkomento sa isang isyu at paano baguhin ang katayuan ng isang Kahilingan na Pull sa pamamagitan ng API.

==== Basic Usage
==== Pangunahing Paggamit

The most basic thing you can do is a simple GET request on an endpoint that doesn't require authentication.
This could be a user or read-only information on an open source project.
For example, if we want to know more about a user named ``schacon'', we can run something like this:
Ang pinaka-pangunahing bagay na maaari mong gawin ay isang simpleng kahilingan na GET sa isang endpoint na hindi nangangailangan ng pagpapatunay.
Ito ay maaaring isang gumagamit o impormasyon sa pagbasa lamang sa isang proyekto na open source.
Halimbawa, kung gusto nating malaman ang higit pa tungkol sa isang gumagamit na pinangalanang ``schacon'', maaari nating patakbuhin ang isang bagay tulad nito:

[source,javascript]
----
Expand All @@ -141,8 +141,8 @@ $ curl https://api.github.com/users/schacon
}
----

There are tons of endpoints like this to get information about organizations, projects, issues, commits -- just about anything you can publicly see on GitHub.
You can even use the API to render arbitrary Markdown or find a `.gitignore` template.
Mayroong toneladang mga endpoint tulad nito upang kumuha ng impormasyon tungkol sa mga organisasyon, mga proyekto, mga isyu, mga commit -- halos anumang bagay na maaari mong makita nang publiko sa GitHub.
Maaari mo ring gamitin ang API upang magbigay ng arbitraryo na Markdown o makahanap ng template na `.gitignore`.

[source,javascript]
----
Expand All @@ -151,47 +151,47 @@ $ curl https://api.github.com/gitignore/templates/Java
"name": "Java",
"source": "*.class
# Mobile Tools for Java (J2ME)
# Kasangkapan sa Mobile para sa Java (J2ME)
.mtj.tmp/
# Package Files #
# Mga File ng Package #
*.jar
*.war
*.ear
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
# mga log ng pag-crash ng virtual machine, tingnan sa http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
"
}
----


==== Commenting on an Issue
==== Pagkokomento sa isang Isyu

However, if you want to do an action on the website such as comment on an Issue or Pull Request or if you want to view or interact with private content, you'll need to authenticate.
Gayunpaman, kung nais mong gumawa ng isang aksyon sa website tulad ng komento sa isang Isyu o Kahilingan na Pull o kung nais mong tingnan o makipag-ugnayan sa pribadong nilalaman, kakailanganin mong magpatunay.

There are several ways to authenticate.
You can use basic authentication with just your username and password, but generally it's a better idea to use a personal access token.
You can generate this from the ``Applications'' tab of your settings page.
Mayroong maraming mga paraan upang magpatunay.
Maaari mong gamitin ang pangunahing pagpapatunay gamit lamang ang iyong username at password, ngunit sa pangkalahatan mas magaling na ideya na gumamit ng isang access token na personal.
Maaari mong mabuo ito mula sa tab na ``Mga Aplikasyon'' sa pahina ng iyong mga setting.

[[_access_token]]
.Generate your access token from the ``Applications'' tab of your settings page.
.Buuin ang iyong access token mula sa tab na ``Mga Aplikasyon'' sa pahina ng iyong settings.
image::images/scripting-05-access-token.png[Access Token]

It will ask you which scopes you want for this token and a description.
Make sure to use a good description so you feel comfortable removing the token when your script or application is no longer used.
Magtatanong ito sa iyo kung anong mga saklaw ang gusto mo para sa token na ito at isang paglalarawan.
Siguraduhin na gumamit ng isang mahusay na paglalarawan upang komportable ka sa pagtatanggal ng token kapag ang iyong iskrip o aplikasyon ay hindi na nagamit.

GitHub will only show you the token once, so be sure to copy it.
You can now use this to authenticate in your script instead of using a username and password.
This is nice because you can limit the scope of what you want to do and the token is revocable.
Ipapakita lamang sa iyo ng GitHub ang token ng isang beses, kaya siguraduhin na kopyahin ito.
Maaari mo na ngayong gamitin ito sa pagpapatunay ng iyong iskrip sa halip na gagamit ng isang username at password.
Ito ay maganda dahil maaari mong limitahan ang saklaw kung ano ang gusto mong gawin at ang token ay mababawi.

This also has the added advantage of increasing your rate limit.
Without authenticating, you will be limited to 60 requests per hour.
If you authenticate you can make up to 5,000 requests per hour.
Ito rin ay may dagdag na kalamangan ng pagtaas ng iyong limitasyon sa rate.
Kung walang pagpapatunay, limitado ka sa 60 na kahilingan sa bawat oras.
Kung nagpapatunay ka, maaari kang gumawa ng hanggang 5,0000 na mga kahilingan sa bawat oras.

So let's use it to make a comment on one of our issues.
Let's say we want to leave a comment on a specific issue, Issue #6.
To do so we have to do an HTTP POST request to `repos/<user>/<repo>/issues/<num>/comments` with the token we just generated as an Authorization header.
Kaya gamitin natin ito upang gumawa ng isang komento sa isa sa ating mga isyu.
Sabihin natin na nais nating mag-iwan ng isang komento sa isang partikular na isyu, Isyu #6.
Para gawin ito kailangan nating gumawa ng isang kahilingan na HTTP POST sa `repos/<user>/<repo>/issues/<num>/comments` gamit ang token na binuo natin bilang isang header ng Pagpapatunay.

[source,javascript]
----
Expand All @@ -215,23 +215,23 @@ $ curl -H "Content-Type: application/json" \
}
----

Now if you go to that issue, you can see the comment that we just successfully posted as in <<_api_comment>>.
Ngayon kung pupunta ka sa isyung iyon, makikita mo ang komento na matagumpay nating naipaskil tulad sa <<_api_comment>>.

[[_api_comment]]
.A comment posted from the GitHub API.
image::images/scripting-06-comment.png[API Comment]
.Isang komentong naipaskil mula sa API ng GitHub.
image::images/scripting-06-comment.png[Komento sa API]

You can use the API to do just about anything you can do on the website -- creating and setting milestones, assigning people to Issues and Pull Requests, creating and changing labels, accessing commit data, creating new commits and branches, opening, closing or merging Pull Requests, creating and editing teams, commenting on lines of code in a Pull Request, searching the site and on and on.
Maaari mong gamitin ang API upang gawin ang tungkol sa anumang bagay na maaari mong gawin sa website -- paglilikha at pagtatakda ng mga milyahe, pagtatalaga ng mga tao sa mga Isyu at mga Kahilingan na Pull, paglilikha at pagbabago ng mga label, pag-access sa datos ng commit, paglilikha ng mga bagong commit at mga branch, pagbubukas, pagsasara o pagsasama ng mga Kahilingan na Pull, paglilikha at pag-edit ng mga koponan, pagkokomento sa mga linya ng code sa isang Kahilingan na Pull, paghahanap sa site at iba pa.

==== Changing the Status of a Pull Request
==== Pagbabago sa Katayuan ng isang Kahilingan na Pull

There is one final example we'll look at since it's really useful if you're working with Pull Requests.
Each commit can have one or more statuses associated with it and there is an API to add and query that status.
May isang pangwakas na halimbawang titingnan natin dahil talagang kapaki-pakinabang ito kung nagtatrabaho ka sa mga Kahilingan na Pull.
Bawat commit ay maaaring magkaroon ng isa o higit pang mga katayuan na nauugnay dito at may isang API na idagdag at i-query ang katayuan nito.

Most of the Continuous Integration and testing services make use of this API to react to pushes by testing the code that was pushed, and then report back if that commit has passed all the tests.
You could also use this to check if the commit message is properly formatted, if the submitter followed all your contribution guidelines, if the commit was validly signed -- any number of things.
Karamihan sa Patuloy na Integrasyon at mga serbisyo ng pagsusuri ay gumagamit ng API na ito upang tumugon sa mga push sa pamamagitan ng pagsusuri sa code na na-push na, at pagkatapos mag-ulat pabalik kung ang commit na iyon ay nakapasa sa lahat ng mga pagsusuri.
Maaari mo ring gamitin ito upang suriin kung ang mensahe ng commit ay maayos na nai-format, kung ang nagsumite ay sumunod sa lahat ng mga patnubay, kung ang commit ay balidong na-sign -- anumang bilang ng mga bagay.

Let's say you set up a webhook on your repository that hits a small web service that checks for a `Signed-off-by` string in the commit message.
Sabihin nating ikaw ay nag-set up ng isang webhook sa iyong repositoryo na tumatama sa isang maliit na serbisyo ng web na nagsusuri para sa isang string na `Signed-off-by` sa mensahe ng commit.

[source,ruby]
----
Expand All @@ -240,63 +240,63 @@ require 'sinatra'
require 'json'
post '/payload' do
push = JSON.parse(request.body.read) # parse the JSON
push = JSON.parse(request.body.read) # i-parse ang JSON
repo_name = push['repository']['full_name']
# look through each commit message
# tingnan ang bawat mensahe ng commit
push["commits"].each do |commit|
# look for a Signed-off-by string
# maghanap ng isang string na Signed-off-by
if /Signed-off-by/.match commit['message']
state = 'success'
description = 'Successfully signed off!'
state = 'tagumpay'
description = 'Matagumpay na na-sign off!'
else
state = 'failure'
description = 'No signoff found.'
state = 'kabiguan'
description = 'Walang natagpuan na signoff.'
end
# post status to GitHub
# magpaskil ng katayuan sa GitHub
sha = commit["id"]
status_url = "https://api.github.com/repos/#{repo_name}/statuses/#{sha}"
status = {
"state" => state,
"description" => description,
"katayuan" => state,
"paglalarawan" => description,
"target_url" => "http://example.com/how-to-signoff",
"context" => "validate/signoff"
"konteksto" => "validate/signoff"
}
HTTParty.post(status_url,
:body => status.to_json,
:headers => {
'Content-Type' => 'application/json',
'User-Agent' => 'tonychacon/signoff',
'Authorization' => "token #{ENV['TOKEN']}" }
'Pagpapatunay' => "token #{ENV['TOKEN']}" }
)
end
end
----

Hopefully this is fairly simple to follow.
In this web hook handler we look through each commit that was just pushed, we look for the string 'Signed-off-by' in the commit message and finally we POST via HTTP to the `/repos/<user>/<repo>/statuses/<commit_sha>` API endpoint with the status.
Sana ito ay medyo simple na sundin.
Sa humahawak ng web hook na ito, tinitingnan natin ang bawat commit na na-push lamang, hinahanap natin ang string na 'Signed-off-by' sa mensahe ng commit at sa wakas tayo ay nag-POST sa pamamagitan ng HTTP sa endpoint ng API na /repos/<user>/<repo>/statuses/<commit_sha>` na may katayuan.

In this case you can send a state ('success', 'failure', 'error'), a description of what happened, a target URL the user can go to for more information and a ``context'' in case there are multiple statuses for a single commit.
For example, a testing service may provide a status and a validation service like this may also provide a status -- the ``context'' field is how they're differentiated.
Sa kasong ito, maaari kang magpadala ng isang katayuan ('tagumpay', 'kabiguan', 'kamalian'), isang paglalarawan sa kung ano ang nangyari, isang target URL na maaari puntahan ng gumagamit para sa karagdagang impormasyon at isang ``konteksto'' sa kaso na mayroong maramihang katayuan para sa isang solong commit.
Halimbawa, isang serbisyo ng pagsusuri ay maaaring magpahintulot ng isang katayuan at isang serbisyo ng pagpapatunay tulad ng sa ito ay maaaring magpahintulot ng isang katayuan -- ang patlang ng ``konteksto'' ay paano sila naiiba.

If someone opens a new Pull Request on GitHub and this hook is set up, you may see something like <<_commit_status>>.
Kung may nagbubukas ng isang bagong Kahilingan na Pull sa GitHub at ang hook na ito ay na-set up, maaari mong makita ang isang bagay tulad ng <<_commit_status>>.

[[_commit_status]]
.Commit status via the API.
image::images/scripting-07-status.png[Commit status]
.Katayuan ng Commit sa pamamagitan ng API.
image::images/scripting-07-status.png[Katayuan ng Commit]

You can now see a little green check mark next to the commit that has a ``Signed-off-by'' string in the message and a red cross through the one where the author forgot to sign off.
You can also see that the Pull Request takes the status of the last commit on the branch and warns you if it is a failure.
This is really useful if you're using this API for test results so you don't accidentally merge something where the last commit is failing tests.
Maaari mo na ngayong makita ang isang maliit na berdeng marka ng tsek sa tabi ng commit na may ``igned-off-by'' na string sa mensahe at isang pulang krus sa pamamagitan ng isa kung saan ang may-akda ay nakalimutan na mag-sign off.
Maaari mo ring makita na ang Kahilingan na Pull ay kumukuha sa katayuan ng huling commit sa branch at binabalaan ka kung ito ay isang kabiguan.
Ito ay talagang kapaki-pakinabang kung gumagamit ka ng API na ito para sa mga resulta ng pagsusuri upang hindi mo sinasadyang pagsamahin ang isang bagay kung saan ang huling paggawa ay hindi nakakapagpapatunay ng mga pagsusuri.

==== Octokit

Though we've been doing nearly everything through `curl` and simple HTTP requests in these examples, several open-source libraries exist that make this API available in a more idiomatic way.
At the time of this writing, the supported languages include Go, Objective-C, Ruby, and .NET.
Check out http://github.com/octokit[] for more information on these, as they handle much of the HTTP for you.
Kahit na ginagawa natin ang halos lahat ng bagay sa pamamagitan ng `curl` at simpleng mga kahilingan sa HTTP sa mga halimbawang ito, maraming mga open-source library na umiiral na ginagawang magagamit ang API na ito sa mas pansalitain na paraan.
Sa panahon ng pagsulat na ito, ang suportadong mga language ay kinabibilangan ng Go, Objective-C, Ruby, at .NET.
Tingnan mo sa http://github.com/octokit[] para sa karagdagang impormasyon sa mga ito, habang pinangangasiwaan nila ang marami sa HTTP para sa iyo.

Hopefully these tools can help you customize and modify GitHub to work better for your specific workflows.
For complete documentation on the entire API as well as guides for common tasks, check out https://developer.github.com[].
Sana ang mga kasangkapan na ito ay maaaring makatulong sa iyo na ipasadya at baguhin ang GitHub upang gumana nang mas mahusay para sa iyong partikular na mga workflow.
Para sa kumpletong dokumentasyon sa buong API pati na rin ang mga gabay para sa mga karaniwang gawain, tingnan ang https://developer.github.com [].

0 comments on commit 4133307

Please sign in to comment.