LoginSignup
6
6

More than 5 years have passed since last update.

GitHub | octokit.rb で 公開鍵を登録・参照・削除 #github #octokit

Posted at

GitHub | octokit.rb で 公開鍵を登録・参照・削除 #github #octokit

概要

octokit.rb で GitHub に公開鍵を追加・参照・削除します。

前提

  • 対象ユーザーは GitHub に登録済み
  • octokit.rb をインストール済み

手順

Gemfile の作成

環境変数の設定に dotenv gem を利用します

source "https://rubygems.org"

gem "dotenv"
gem "octokit"

.env の作成

GitHub のアクセストークンは GitHub で確認。
鍵のパスは登録対象の鍵のパスを記述する。
PUBLIC_KEY_ID は GitHub に登録する際の鍵の ID を指定します

GITHUB_ACCESS_TOKEN=your_access_token
PUBLIC_KEY_PATH=/path/to/your/key
PUBLIC_KEY_ID=your_key_id

鍵の登録スクリプト

API は以下。
add_key

鍵の ID にはタイムスタンプを付与します。

require 'octokit'
require 'dotenv'

Dotenv.load
client = Octokit::Client.new(:access_token => ENV['GITHUB_ACCESS_TOKEN'])
timestamp = Time.now.strftime('%Y%m%d_%H%M%S')
# key name format = base_keyname + _ + timestamp (yyyymmdd_hhmiss)
client.add_key("#{ENV['PUBLIC_KEY_ID']}_#{timestamp}", File.read(ENV['PUBLIC_KEY_PATH']))

鍵登録の実行

ruby add_public_key.rb

鍵の参照スクリプト

API は以下。
keys

.env ファイル・ Gemfile は登録処理と同じ。
自ユーザーの鍵をすべて取得します。

require 'octokit'
require 'dotenv'

Dotenv.load
client = Octokit::Client.new(:access_token => ENV['GITHUB_ACCESS_TOKEN'])
print client.keys.map { |e|e[:title] }

鍵参照の実行

ruby list_public_keys.rb
  • 実行結果
["deploy_20141211_151046"]

鍵の削除スクリプト

API は以下。
remove_key

.env ファイル・ Gemfile は登録処理と同じ。
登録処理で複数登録した鍵のうち、最新のタイムスタンプを除いて削除します

require 'octokit'
require 'dotenv'

Dotenv.load
client = Octokit::Client.new(:access_token => ENV['GITHUB_ACCESS_TOKEN'])

puts "before remove"
print client.keys.map { |e|e[:title] }, "\n"
puts "start remove"
client.keys.sort_by { |e|e[:title] }
            .reverse
            .drop(1)
            .each { |e|client.remove_key(e[:id]) }
puts "finish remove"
puts "after remove"
print client.keys.map { |e|e[:title] }, "\n"

鍵削除の実行

ruby remove_public_key.rb
  • 出力
before remove
["deploy_20141211_154231", "deploy_20141211_154939", "deploy_20141211_154956"]
start remove
finish remove
after remove
["deploy_20141211_154956"]

参照

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6