PROGRAMMING

GAEにあるプロジェクトのソースコードをDLする(2つの方法)

こんにちは。もんしょー(@sima199407)です。

ある人
GAE(GCP)でソースコードをダウンロードする方法ってありますかー?

こんな声があるかと思います。

僕もちょっとハマったところなので解説していこうと思います。

準備すること

まずpython2.7が必要ですが、Macだとデフォルトでインストールされているかと思います。

一応確認すると

$ python -V
Python 2.7.10

という感じで入っているかと思います。

3つの工程を紹介

①cloud SDKをインストール

②App Engine SDKをインストール

③プロジェクトからソースコードDLする

という流れになります。

すでにcloud SDKをすでにインストールしているなら「②App Engine SDKをインストール」のステップにいきましょう。

①cloud SDKをインストール

cloud SDKとはGAE上にアクセスしなくてもローカル環境からデプロイをできるようにするためのツールです。

公式ドキュメント「Cloud SDK のインストール」を見るとやり方が書いてありますし、詳しく解説がほしいときは「GCPのgcloudコマンドのインストールと最初の認証までを初心者向けに細かく解説」を見ると参考になります。

②App Engine SDKをインストール

以下からインストールファイルをDLします。

元の Python 用 App Engine SDK をダウンロードしてインストールする

インストールの段階で「Make Command Symlinks?」
→シンボリックリンクを作成する?ということなので、「OK」を押します。

インストールの確認作業

インストールが正常にできたか

appcfg.py help

を叩いて確認します。

③プロジェクトからソースコードDLする

いよいよGAEからソースコードをDLしてみましょう。

必要なのは以下の2点

・プロジェクトID
・バージョンID

プロジェクトIDはダッシュボード、バージョンはナビゲーションメニューの「コンピューティング>App Engine > バージョン」から確認できます。

DL作業は1つだけでして、以下のコマンドを打てばオッケーです。

appcfg.py -A [プロジェクトID] -V [バージョンID] download_app [DLしたデータの保存ディレクトリ]

-V は省略するとデフォルトのバージョンをDLします。

またディレクトリは必須の設定になります。

エラー1

こんなエラーが出ることがあります。

appcfg.py: error: Cannot download to path "./": directory already exists and it isn't empty.

原因として、パスだけを指定してディレクトリを選択していないことが原因です。
空のファイルを作成するか新規ファイル名を入力してコマンドを叩けば解決できます。

エラー2

If your browser is on a different machine then exit and re-run this
application with the command-line parameter

--noauth_local_webserver

というエラーが出たときは、
オプションに[—noauth_local_webserver]をつけて再度コマンドを叩いてみましょう

appcfg.py -A [プロジェクトID] -V [バージョンID] download_app [DLしたデータの保存ディレクトリ] --noauth_local_webserver

すると以下のように認証コードを求められます

Enter verification code:

認証コードは[Enter verification code:]の上に表示されているURLにアクセスし登録したアカウントからログインすると、

認証コードがでてきますのでこれをターミナルに貼り付けます。

Authentication successful.

認証成功しました!

これでプロジェクトのソースはDLできるはずです。

追記:「Fetching files…」までしか出力されないとき

そもそもソースコードが残っていないけどプロジェクトがある場合に起こり得ることでして、そのときはGCPの過去のソースコードを取りに行くことができます。

ナビゲーションメニュー > ツール「Cloud Build」>「ビルド履歴」 から任意の履歴をクリック >「ビルド情報」ソースをクリック

この方法が正規のものではないかと思いますがこんな方法でもソースコードを取りに行くことができます。

-PROGRAMMING
-, ,