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

    広告ここから
    広告ここまで
    Home
    Search
    Bookmark