36391
今日。githubにyoutube APIに依存するコードをプッシュしました。

<https://github.com/bamchoh/sofys>

ですが、一部コードはローカルにあるので、ビルドする為にはそのコードをgit
cloneした人それぞれで書く必要があります。ソースコードを編集されるような場合だとそれも仕方ないかなと思うんですが、使用するだけの人を想定した場合、バイナリ配布を行ったほうがいいのだろうなと思っています。クラウドのCIサービスを使用する場合、シークレットコードをCIサービスに配置する必要があると思いますが、その内容を外部の人に知られないようにする方法はありますか？その場合はプライベートリポジトリを作成してそのリポジトリのバイナリとして作成するほうが良いのでしょうか？（できるかどうかはわからないのですが）

ここでいうシークレットコードは、 OAuth2 のクライアントコードを想定しています。なので、以下の性質があります。

  * ソースコードを記述している際には、定まっていない
  * バイナリを配布する際には、その中に組み込まれていてほしい
CC BY-SA 3.0
2017-07-15T13:26:34.653
36387
2017-07-24T07:18:39.860
2017-07-24T07:09:13.510
754
18863
question
github
githubにシークレットコードに依存したソースコードを上げるときにベストプラクティス
disclaimer: バイナリの中にシークレットコードを埋め込む以上、頑張ればその情報は復元可能にはなってしまっていると考えます。

CI サービスは、外部からは見えない環境変数 (など)
を、そのビルドに対して定義できるようになっているはずだと考えます。また、シェルの実行もできるのではないか、と考えています。

上記を満たすサービスを利用しているのであれば、

  1. 置き換えたいシークレットコード部分を適当な、ほかでは利用されない文字列で埋めておく (以下、プレースホルダー) 
  2. 環境変数でもって、プレースホールダーを置換するシェルを書く
  3. 通常のビルドを行う

と私だったら行うと思います。
CC BY-SA 3.0
2017-07-15T14:19:34.043
36391
2017-07-24T07:18:39.860
2017-07-24T07:18:39.860
754
754
36387
answer