ブログ

ryuzeeによるブログ記事。不定期更新
アジャイル開発に取り組むチーム向けのコーチングや、技術顧問、認定スクラムマスター研修などの各種トレーニングを提供しています。ぜひお気軽にご相談ください(初回相談無料)

コマンドラインからDropboxを操作する方法 (+Jenkinsとの連携)

前回のエントリでは、ReVIEWとJenkinsを組み合わせてPDFを自動でビルドする方法について説明しました。今回は更に進んで、ビルドされたPDFをJenkinsサーバから自動でコマンドライン経由でDropboxに保存する方法について説明します。 なお、ここで説明する内容は別にJenkinsと連携しなくても使えます。 例えば、サーバのファイルを定期的にバックアップしたり、シェルスクリプトの中で呼び出したりといったことが可能です。

Dropbox API Commandの導入

コマンドライン経由でDropboxを操作するためには、Dropbox API Commandと呼ばれるツールを使うのが簡単です。 githubで公開されており、ライセンスはMITライセンスです。 https://github.com/s-aska/dropbox-api-command

インストール

Dropbox API Commandはperlで書かれています。インストール中にCPANのモジュールをビルドしたりするので、gccやmakeなどが導入されている必要があります。Ubuntuの場合は以下のようになります。

sudo apt-get install make gcc libssl-dev wget
wget https://raw.github.com/miyagawa/cpanminus/master/cpanm
sudo perl cpanm App::dropboxapi

これでインストールは完了です。

Dropbox側の設定

Dropboxを操作するために、App KeyやApp Secretを始めとしていくつかの設定が必要です。 まず、ブラウザで、https://www.dropbox.com/developers にアクセスし、左メニューからMy Appを選択します。 以下のように表示されます。

ここでCreate an appボタンをクリックします。 以下のような画面が表示されますので適当に入力します。なお、Access levelについてはセキュリティ上Full Dropboxを避けておいたほうが良いと思います。

以上で、Createボタンをクリックしてください。App keyとApp secretが発行されます。

これでDropbox側の下準備は終わりました。

Dropbox API Commandの設定

コマンドラインから以下を実行します。

dropbox-api setup

すると以下のように順番に質問されますので、API KeyやAPI SecretやAccess levelを設定します。

Please Input API Key: ***************
Please Input API Secret: ***************
Please Input Access type
  a ... App folder - Your app only needs access to a single folder within the user's Dropbox
  f ... Full Dropbox - Your app needs access to the user's entire Dropbox
[a or f]: *
URL: http://api.dropbox.com/0/oauth/authorize?oauth_token=***************&oauth_callback=
Please Access URL and press Enter
OK?

Access levelの指定をした後に、URLが表示されるので、ブラウザにそのURLを貼り付けて、認証を行います。

ここで許可をクリックしてください。次の画面で正しく設定が終わったことを確認できたらコマンドラインに戻ります。

Please Access URL and press Enter
OK?

とありますので、Enterを押下します。 以下のように表示されれば設定は終了です。

success! try
> dropbox-api ls
> dropbox-api find /

接続情報について

上記で入力されたApp Keyを始めとする各種の設定値は、ホームディレクトリ以下に

.dropbox-api-config

という名前で保存されます。このファイルをコピーすれば、他のマシンでもすぐに利用できます。

Dropbox API Commandの使い方

コマンドの使い方は簡単です。dropbox-api help とすれば利用可能なコマンドが表示されます。

Usage: dropbox-api <command> [args] [options]

Available commands:
    setup get access_key and access_secret
    ls    list directory contents
    find  walk a file hierarchy
    cp    copy file or directory
    mv    move file or directory
    mkdir make directory (Create intermediate directories as required)
    rm    remove file or directory (Attempt to remove the file hierarchy rooted in each file argument)
    put   upload file
    get   download file
    sync  sync directory (local => dropbox or dropbox => local)
    uid   get accound uid

See 'dropbox-api help <command>' for more information on a specific command.

よく使うのは、putとgetとrmくらいだと思います。 putはファイルをアップロードする際に使います。以下のようになります。 第一引数にアップロードするファイルのパス、第二引数はDropboxのパスになります。Access Levelをappに指定している場合は、指定したアプリケーションフォルダのトップが起点になります。

dropbox-api put /tmp/hoge.txt dropbox:/

削除する場合は

dropbox-api rm /hoge.txt

Jenkinsと組み合わせる

ここまでやってきたまとめとしてJenkinsと組み合わせます。 前回のエントリではgithubに配置しているReVIEWのソースをPDFにビルドするところまで自動化しましたが、さらに、Dropboxにアップロードするところまで連携します。

下準備

Jenkinsを動作させているサーバにDropbox API Commandをインストールしてください。手順は上に書いた通りです。 次に、ここまでで作成された、ホームディレクトリにある.dropbox-api-configファイルをJenkinsサーバのjenkinsユーザーのホームディレクトリに配置してください(通常は/var/lib/jenkins)。 ここまでできたらJenkinsサーバ上で、jenkinsユーザーになって、

dropbox-api ls

を実行してください。正常に応答が返ってくるか確認します。

Jenkinsのビルドの設定

前回のエントリのビルドの設定の末尾に変更を加えます。

具体的には最後にdropbox-api put を使ってビルドされたPDFをアップロードしています。

cd ${WORKSPACE} && export PATH=$PATH:/usr/local/review/bin && review-pdfmaker sample.yaml && mkdir -p ${WORKSPACE}/build && mv sample.pdf ${WORKSPACE}/build/ && dropbox-api put ${WORKSPACE}/build/sample.pdf dropbox:/sample.pdf

以上で、ビルドをしてください。設定がうまく行っていれば、ビルドされたファイルはDropboxに配置されます。

  • スクラム実践者が知るべき97のこと
  • 著者/訳者:Gunther Verheyen / 吉羽龍太郎 原田騎郎 永瀬美穂
  • 出版社:オライリージャパン(2021-03-23)
  • 定価:¥ 2,640
  • スクラムはアジャイル開発のフレームワークですが、その実装は組織やチームのレベルに応じてさまざまです。本書はスクラムの実践において、さまざまな課題に対処してきた実践者が自らの経験や考え方を語るエッセイ集です。日本語書き下ろしコラムを追加で10本収録
  • プロダクトマネジメント ―ビルドトラップを避け顧客に価値を届ける
  • 著者/訳者:Melissa Perri / 吉羽龍太郎
  • 出版社:オライリージャパン(2020-10-26)
  • 定価:¥ 2,640
  • プロダクト開発を作った機能の数やベロシティなどのアウトプットで計測すると、ビルドトラップと呼ばれる失敗に繋がります。本書ではいかにしてビルドトラップを避けて顧客に価値を届けるかを解説しています。
  • SCRUM BOOT CAMP THE BOOK 【増補改訂版】
  • 著者/訳者:西村直人 永瀬美穂 吉羽龍太郎
  • 出版社:翔泳社(2020-05-20)
  • 定価:¥ 2,640
  • スクラム初心者に向けて基本的な考え方の解説から始まり、プロジェクトでの実際の進め方やよく起こる問題への対応法まで幅広く解説。マンガと文章のセットでスクラムを短期間で理解できます。スクラムの概要を正しく理解したい人、もう一度おさらいしたい人にオススメ。
  • みんなでアジャイル ―変化に対応できる顧客中心組織のつくりかた
  • 著者/訳者:Matt LeMay / 吉羽龍太郎、永瀬美穂、原田騎郎、有野雅士
  • 出版社:オライリージャパン(2020-3-19)
  • 定価:¥ 2,640
  • アジャイルで本当の意味での成果を出すには、開発チームだけでアジャイルに取り組むのではなく、組織全体がアジャイルになる必要があります。本書にはどうやってそれを実現するかのヒントが満載です
  • レガシーコードからの脱却 ―ソフトウェアの寿命を延ばし価値を高める9つのプラクティス
  • 著者/訳者:David Scott Bernstein / 吉羽龍太郎、永瀬美穂、原田騎郎、有野雅士
  • 出版社:オライリージャパン( 2019-9-18 )
  • 定価:¥ 3,132
  • レガシーコードになってから慌てるのではなく、日々レガシーコードを作らないようにするにはどうするか。その観点で、主にエクストリームプログラミングに由来する9つのプラクティスとその背後にある原則をわかりやすく説明しています。
  • Effective DevOps ―4本柱による持続可能な組織文化の育て方
  • 著者/訳者:Jennifer Davis、Ryn Daniels / 吉羽 龍太郎、長尾高弘
  • 出版社:オライリージャパン( 2018-3-24 )
  • 定価:¥ 3,888
  • 主にDevOpsの文化的な事柄に着目し、異なるゴールを持つチームが親和性を高め、矛盾する目標のバランスを取りながら最大限の力を発揮する方法を解説します
  • ジョイ・インク 役職も部署もない全員主役のマネジメント
  • 著者/訳者:リチャード・シェリダン / 原田騎郎, 安井力, 吉羽龍太郎, 永瀬美穂, 川口恭伸
  • 出版社:翔泳社( 2016-12-20 )
  • 定価:¥ 1,944
  • 米国で何度も働きやすい職場として表彰を受けているメンローの創業者かつCEOであるリチャード・シェリダン氏が、職場に喜びをもたらす知恵や経営手法、より良い製品の作り方などを惜しみなく紹介しています
  • アジャイルコーチの道具箱 – 見える化の実例集
  • 著者/訳者:Jimmy Janlén / 原田騎郎, 吉羽龍太郎, 川口恭伸, 高江洲睦, 佐藤竜也
  • 出版社:Leanpub( 2016-04-12 )
  • 定価:$14.99
  • この本は、チームの協調とコミュニケーションを改善したり、行動を変えるための見える化の実例を集めたものです。96個(+2)の見える化の方法をそれぞれ1ページでイラストとともに解説しています。アジャイル開発かどうかに関係なくすぐに使えるカタログ集です
  • カンバン仕事術 ―チームではじめる見える化と改善
  • 著者/訳者:原田騎郎 安井力 吉羽龍太郎 角征典 高木正弘
  • 出版社:オライリージャパン( 2016-03-25 )
  • 定価:¥ 2,138
  • チームの仕事や課題を見える化する手法「カンバン」について、その導入から実践までを図とともにわかりやすく解説した書籍。カンバンの原則などの入門的な事柄から、サービスクラス、プロセスの改善など、一歩進んだ応用的な話題までを網羅的に解説します。
  • Software in 30 Days スクラムによるアジャイルな組織変革“成功"ガイド
  • 著者/訳者:Ken Schwaber、Jeff Sutherland著、角征典、吉羽龍太郎、原田騎郎、川口恭伸訳
  • 出版社:アスキー・メディアワークス( 2013-03-08 )
  • 定価:¥ 1,680
  • スクラムの父であるジェフ・サザーランドとケン・シュエイバーによる著者の日本語版。ビジネス層、マネジメント層向けにソフトウェア開発プロセス変革の必要性やアジャイル型開発プロセスの優位性について説明
  • How to Change the World 〜チェンジ・マネジメント3.0〜
  • 著者/訳者:Jurgen Appelo, 前川哲次(翻訳), 川口恭伸(翻訳), 吉羽龍太郎(翻訳)
  • 出版社:達人出版会
  • 定価:500円
  • どうすれば自分たちの組織を変えられるだろう?それには、組織に変革を起こすチェンジ・マネジメントを学習することだ。アジャイルな組織でのマネージャーの役割を説いた『Management 3.0』の著者がコンパクトにまとめた変化のためのガイドブック