API

Netlify REST APIでNetlifyにサイトをデプロイ・更新・削除する

注意 公開するサービスに組み込む場合は、パブリックアクセストークンでの認証ではなくoAuth2を使ってくれとのことです。 https://www.netlify.com/docs/api/#authenticating […]

広告ここから
広告ここまで

注意

公開するサービスに組み込む場合は、パブリックアクセストークンでの認証ではなくoAuth2を使ってくれとのことです。

https://www.netlify.com/docs/api/#authenticating

アップロードするファイルの準備

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

ブックマークや限定記事(予定)など

WP Kyotoサポーター募集中

WordPressやフロントエンドアプリのホスティング、Algolia・AWSなどのサービス利用料を支援する「WP Kyotoサポーター」を募集しています。
月額または年額の有料プランを契約すると、ブックマーク機能などのサポーター限定機能がご利用いただけます。

14日間のトライアルも用意しておりますので、「このサイトよく見るな」という方はぜひご検討ください。

広告ここから
広告ここまで

Related Category posts