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番台の値が返ってきていれば、削除完了です。