SAP BTPのCloud FoundryにGithub Actionsを使って自動デプロイする

本記事は[GitHub Actions Advent Calendar 2021](https://qiita.com/advent-calendar/2021/github-actions)の12日目の記事です。

前回の記事で作ったSAP BTP のCloud Foundry環境にデプロイしたアプリをGitHubに保存して自動でBTP環境にデプロイ出来るようにします。

#前提条件
以下のブログと同じことをしていること

https://qiita.com/nanaki11/items/47e6033dee3f76d0b156

#GitHubActions

https://github.co.jp/features/actions

みんな大好きGitHubのワークフロー機能です。
CircleCIとかと同じような事ができます。

#今回の流れ
・コードをGithubにcommitする
・ワークフローを作る
・ワークフローの実行結果を確認する

#コードをGithubにcommitする

アプリのフォルダで以下コマンド実施

```bash
$ git config --global user.name "XXXX"
$ git config --global user.email "XXXX@hogehoge.com"
$ git init
$ git add .
$ git commit -m "Initial commit"
$ git remote add origin https://github.com/XXXX/XXXXXX.git
$ git push -u origin master
```

#ワークフローを作る
##GitHub画面からワークフロー新規作成
GitHubにアクセスして自分のリポジトリのActionsタブから**New workfow**ボタンを押す

https://github.com/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137987/a35245ef-8723-542e-758c-e22b2ccc6f54.png)

テンプレートがいくつかあり、Node.jsからセットアップ始めます
今回使うCloud FoundryとかBPTはないですが、AzureとかAWSとか言語別・デプロイ先別にテンプレがあるのでいいですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137987/dc061fdb-7cb0-45d2-5fce-4137133474d8.png)

以下の通りワークフローを作りました

```yaml
name: Nodejs CI

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Use Node.js
      uses: actions/setup-node@v1
      with:
        node-version: 14

    - name: Disable package-lock.json
      run: npm config set package-lock false
    - name: Install CF-CLI
      run: |
          curl -v -L -o cf-cli_amd64.deb 'https://cli.run.pivotal.io/stable?release=debian64&source=github'
          sudo dpkg -i cf-cli_amd64.deb
    - name: Install node
      run: npm install;npm cache clean --force
    - name: Login to SAP BTP
      run: |
         cf login -a https://api.cf.us10.hana.ondemand.com -u ${{ secrets.BTP_MAILADRESS }} -p ${{ secrets.BTP_PASSWORD }} -o bb8713batrial -s dev
         cf push
```

##ワークフローの解説
少しワークフローの解説をします
おまじない的に初期設定のまま使ってる場所もあります

マスターブランチにPushしたときに動くようにします
他にもプルリクがあったときに動くようにしたり、対象ブランチを変えたり出来ます

```yaml
on:
  push:
    branches: [ master ]
```

必要なものをインストール**CF-CLI**とか**Dependencies**とか

```yaml
    - name: Disable package-lock
      run: npm config set package-lock false
    - name: Install CF-CLI
      run: |
         curl -v -L -o cf-cli_amd64.deb 'https://cli.run.pivotal.io/stable?release=debian64&source=github'
         sudo dpkg -i cf-cli_amd64.deb
    - name: Install Dependencies
      run: npm install
```

BTPにログインしてCF-CLIを使ってPush
組織（-o）とスペース（-s）の部分は必要に応じて変えてください。

```yaml
    - name: Login to SAP BTP
      run: |
         cf login -a https://api.cf.us10.hana.ondemand.com -u ${{ secrets.BTP_MAILADRESS }} -p ${{ secrets.BTP_PASSWORD }} -o bb8713batrial -s dev
         cf push
```
##secretsの登録
メアドとかパスワードを平文で書くのはさすがになのでsecretsに登録します
**Settings**→**secrets**→**New repository secret**から値を登録します

トライアルのアカウント名とかはそのまま出してますね（笑）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137987/c5d718d3-abd0-a462-72bc-e84b50739147.png)



#ワークフローの実行結果を確認する

Actionsタブからワークフローが実行できていることを確認できます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137987/03a121b6-3578-bf3b-94fa-461f8f186242.png)


BTPのスペースのイベントを見ると指定の時間にアプリがcreateされていることを確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137987/d841f8c3-a03b-55c3-bfbb-89234219f927.png)