IBM Cloud Code EngineでGithubのプライベートリポジトリからソースを取得するよ

前回、IBM Cloud Code Engine上にGithubのパブリックリポジトリからPythonのStreamlitサンプルプログラムを取得してデプロイする方法を説明しましたが、今回はGithubのプライベートリポジトリからソースを取得するための設定について説明します。

前回記事：[Streamlit PythonをIBM Cloudへデプロイするよ](https://qiita.com/saboten10/items/b55a384445d65128722e)

# Githubプライベートリポジトリからのソース取得
メカニズムはGithub上で自分の公開鍵を登録しておいて、IBM Cloud Code Engine側にはその秘密鍵を登録します。IBM Cloud Code Engine側からはSSHを使ってGithub上のソースを取得する仕組みです。

## SSH鍵の作成
これはすでに自分で作成して持っている人は飛ばしてください。そんなものは作った覚えがないということであれば次の手順で公開鍵と秘密鍵を作成します。
### Macでターミナルを開いて公開鍵と秘密鍵があるか確認する
ターミナルを開いて前に作ったことがあるか確認します。自分は２０１６年に作ってたみたい

```Console
(base) saboten-no-MacBook-Pro:~ saboten$ ls -al .ssh
total 24
drwx------   5 saboten  staff   160  9 15  2016 .
drwxr-xr-x+ 59 saboten  staff  1888  2  3 10:06 ..
-rw-------   1 saboten  staff  1675  9 15  2016 id_rsa
-rw-r--r--   1 saboten  staff   418  9 15  2016 id_rsa.pub
```
### 公開鍵と秘密鍵の作成
もし利用している環境で上記のファイルがなければ今回新しく公開鍵と秘密鍵を作成します。

```Console
$ mkdir ~/.ssh
$ cd ~/.ssh
$ ssh-keygen -t rsa
```
このコマンドで下記３つを質問されます。すべてディフォルトでいいのでリターンキーを押してください。
* 鍵の保存フォルダ（ディフォルトでホームディレクトリ直下の.sshフォルダです）
* パスフレーズ（これ設定しません※）
* パスフレーズ確認

※IBM Cloud Code Engine側から利用するときにパスフレーズで保護しないでと書かれていたので。

下記２つのファイルが~/.sshフォルダ以下に作成されれば公開鍵と秘密鍵が準備できました。

```Console
id_rsa
id_rsa.pub
```

## Githubへの公開鍵の登録方法
これはGithubのヘルプにも記載されている手順ですが、Githubのアカウントから設定メニューを開いてSSH公開鍵をペーストします。
### GithubのアカウントメニューからSettingsを選択します。
<img width="250" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89268/32a1d3d3-a07b-413d-e64f-4218a8db1d01.png">

### New SSH keyを押します
<img width="650" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89268/400e35b2-905f-b39c-c5da-7707aaa37482.png">
### 自分の公開鍵を設定します
<img width="550" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89268/7ff34867-268f-4a09-889c-27375ef2e0f2.png">

```Console
$ pbcopy < ~/.ssh/id_rsa.pub
```
Macのターミナルでさきほど作成した公開鍵をクリップボードに入れます。
このあと、Github側のKey欄にクリップボードに入っている内容をペーストします。
そしてAdd SSH keyボタンを押して完了です。

これでGithub側の準備はできました。

## IBM Cloud Code Engine側設定
### コード・リポジトリー・アクセスの追加
IBM Cloud Code Engine側でコード・リポジトリー・アクセスを追加していきます。
* Code Engine->プロジェクト->自分のプロジェクト
画面左側のコード・リポジトリー・アクセスを選択して、作成ボタンを押します。
<img width="650" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89268/0ed54d55-a5d4-00b8-aa87-95911537e1f9.png">

作成ボタンを押すとこの画面が出てくるので下記３つを入力します。
* 名前　：任意の文字列で名前をつけます
* コード・リポジトリー・サーバー
* SSH秘密鍵

<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89268/f59d680c-d9c3-df9d-f0c1-8ddb59f708d0.png">


#### コードリポジトリーサーバー
下記のような記述をします。

```
github.com/(githubユーザー名)/(リポジトリ名)
```

自分の場合は次のリポジトリでやってみます。

```
github.com/saboten10/azure_text_to_speech
```
#### SSH秘密鍵
先ほど作成した秘密鍵を利用します。Macのコンソールで下記コマンドで秘密鍵をクリップボードに格納します。

```Console
$ pbcopy < ~/.ssh/id_rsa
```
この内容を画面のSSH秘密鍵のフィールドにペーストします。作成ボタンを押すとこのプロジェクトからコード・リポジトリー・アクセスが追加されます。

# 動作確認
実際にコードを引っ張ってきてデプロイしてみます。

## ビルド詳細の指定
![Cursor_Code_Engine_23_IBM_Cloud.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89268/46b9d32c-e9fc-8261-e26a-341d4bd184e6.png "Cursor_Code_Engine_23_IBM_Cloud.png")
アプリケーションのビルド指定で、コード・リポジトリーURLにGithubへのSSHアクセス用の宛先を記述します。

```
git@github.com:(ユーザー名)/(リポジトリ名）.git
```

コード・リポジトリー・アクセスには先程作成したアクセス名を指定します。
これでGithubからソースを取得してきてビルドができるようになります。

# まとめ
今回はIBM　Cloud Code EngineでGithubのプライベート設定されているリポジトリからソースを取得してCode Engineにデプロイする方法を説明しました。Githubで公開したくないソースもたくさんあると思いますのでこの方法で試してみてください。