Netlify REST APIでNetlifyにサイトをデプロイ・更新・削除する
タグ:
注意 公開するサービスに組み込む場合は、パブリックアクセストークンでの認証ではなくoAuth2を使ってくれとのことです。 https://www.netlify.com/docs/api/#authenticating […]
広告ここから
広告ここまで
目次
注意
公開するサービスに組み込む場合は、パブリックアクセストークンでの認証ではなくoAuth2を使ってくれとのことです。
アップロードするファイルの準備
NetlifyへのデプロイはZIPファイルを利用します。
zip -r ../netlify.zip ./のようなコマンドで事前にzipファイルを作っておきましょう。
$ ls -la | grep netlify.zip -rw-r--r-- 1 hideokamoto staff 10712627 1 17 12:56 netlify.zip
netlify.zipがあることを確認しましたので、ここからはデプロイ用のAPIを色々コールしていきます。
新しくサイトをデプロイする
新しくサイトを追加する場合は、POST https://api.netlify.com/api/v1/sites/を利用します。
$ curl -XPOST -H "Authorization: Bearer XXXXXXXXXXXXXXXX" -H "Content-Type: application/zip" --data-binary @netlify.zip https://api.netlify.com/api/v1/sites/ | jq .
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 10.2M 100 229 100 10.2M 7 360k 0:00:32 0:00:29 0:00:03 0
{
"id": "XXXXXXXXXXXXXXXX",
"deploy_id": "XXXXXXXXXXXXXXXX",
"subdomain": "technician-camel-99999999",
"url": "https://XXXXXXXXXXXXXXXX.technician-camel-9999999.netlify.com",
"state": "uploaded",
"required": []
}
これでデプロイ完了です。
簡単ですね。
デプロイ済のサイトを更新する
Netlify側にサイト(プロジェクト)が存在する場合は、そのプロジェクトのIDを指定してやるとOKです。
$ curl -XPOST -H "Authorization: Bearer XXXXXXXXXXXXXXXX" -H "Content-Type: application/zip" --data-binary @netlify.zip https://api.netlify.com/api/v1/sites/YOUR_SITE_ID | jq .
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 10.2M 100 229 100 10.2M 7 360k 0:00:32 0:00:29 0:00:03 0
{
"id": "XXXXXXXXXXXXXXXX",
"deploy_id": "XXXXXXXXXXXXXXXX",
"subdomain": "technician-camel-99999999",
"url": "https://XXXXXXXXXXXXXXXX.technician-camel-9999999.netlify.com",
"state": "uploaded",
"required": []
}
ちなみにPUTでもPOSTでもどちらでもOKっぽいです。
デプロイステータスを確認する
デプロイ履歴については、GET api/v1/sites/{side_id}/deploysから確認できます。
$ curl -XGET -H "Authorization: Bearer XXXXXXXXXXXXXXXX" https://api.netlify.com/api/v1/sites/YOUR_SITE_ID/deploys | jq .
[
{
"id": "XXXXXXXXXXXXXXXXXXXX",
"site_id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"build_id": "XXXXXXXXXXXXXXXXXXXXXXXX",
"state": "ready",
"name": "actuary-indicate-99999",
"url": "https://actuary-indicate-99999.netlify.com",
"admin_url": "https://app.netlify.com/sites/actuary-indicate-99999",
"deploy_url": "https://XXXXXXXXXXXXXXXXXXXX.actuary-indicate-99999.netlify.com",
"deploy_ssl_url": "https://XXXXXXXXXXXXXXXXXXXX--actuary-indicate-99999.netlify.com",
"screenshot_url": "https://353a23c500dde3b2ad58-c49fe7e7355d384845270f4a7a0a7aa1.ssl.cf2.rackcdn.com/XXXXXXXXXXXXXXXXXXXX/screenshot.png",
"created_at": "2016-12-16T07:34:45Z",
"updated_at": "2016-12-16T07:34:52Z",
"user_id": "58539805d6865d1b92f0ac6d",
"error_message": null,
"required": [],
"commit_ref": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"review_id": null,
"branch": "gh-pages",
"commit_url": "https://github.com/hideokamoto/example/commit/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"skipped": null,
"locked": null,
"log_access_attributes": {
"type": "firebase",
"url": "https://netlify.firebaseio.com/builds/XXXXXXXXXXXXXXXXXXXXXXXX/log"
},
"title": null,
"review_url": null,
"published_at": null
}
]
デプロイ済のサイトを削除する
削除する場合は、DELETEリクエストを投げます。
これのリクエストはJSONを返してこないので、HTTPステータスコードを確認する必要があります。
$ curl -XDELETE -H "Authorization: Bearer XXXXXXXXXXXXXXXX" -H "Content-Type: application/zip" --data-binary @netlify.zip https://api.netlify.com/api/v1/sites/YOUR_SITE_ID -D -
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 10.2M 100 229 100 10.2M 7 360k 0:00:32 0:00:29 0:00:03 0
HTTP/1.1 100 Continue
Date: Tue, 17 Jan 2017 04:17:50 GMT
Server: Netlify
HTTP/1.1 204 No Content
Cache-Control: no-cache
Date: Tue, 17 Jan 2017 04:18:12 GMT
X-Frame-Options: ALLOWALL
X-Ratelimit-Limit: 500
X-Ratelimit-Remaining: 499
X-Ratelimit-Reset: 2017-01-17 04:19:12 UTC
X-Request-Id: a2e53169-00f3-4cdf-ae49-b05ba85de3a5
X-Runtime: 0.093986
Age: 29
Connection: keep-alive
Server: Netlify
200番台の値が返ってきていれば、削除完了です。