前に書いたようにCloud Foundryのデプロイが遅すぎるのでGitHub ActionsでCIデプロイをすることにしました。
ibmcloud CLIをインストールしてpushコマンドまで
cf push
までの流れをまとめるとこんな感じです。
- ibmcloudとcfプラグインのインストール
$ curl -fsSL https://clis.cloud.ibm.com/install/linux | sh
$ ibmcloud cf install
- ログインとpush
$ ibmcloud login -u USERNAME -p PASSWORD -r リージョン
$ ibmcloud target --cf
$ ibmcloud cf push
ibmcloud login -sso
とするとブラウザ経由でワンタイムパスを入れたり、リージョンをコマンド入力待ちになるためCI利用はしにくいですが、-u / -p / -rなどを指定して実行することでCIでも利用できます。
GitHub Actionsのログをマスクする
パスワードなどはシークレットに登録すれば良いですが、ログにIDなどが表示されます。
ログを一部表示にします。
- name: add-mask
run: |
echo "::add-mask::${{ secrets.IBMCLOUD_TEST }}"
echo "::add-mask::${{ secrets.IBMCLOUD_USER_ID }}"
echo "::add-mask::${{ secrets.IBMCLOUD_USER_PASS }}"
echo "::add-mask::${{ secrets.IBMCLOUD_USER_ACCOUNT_ID }}"
echo "::add-mask::${{ secrets.IBMCLOUD_USER_NAME }}"
GitHub Actionsのログをマスクするメモの記事にまとめました。
yml全体
node.js.yml
name: Node.js CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [15.x]
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
steps:
- uses: actions/checkout@v2
- name: add-mask
run: |
echo "::add-mask::${{ secrets.IBMCLOUD_TEST }}"
echo "::add-mask::${{ secrets.IBMCLOUD_USER_ID }}"
echo "::add-mask::${{ secrets.IBMCLOUD_USER_PASS }}"
echo "::add-mask::${{ secrets.IBMCLOUD_USER_ACCOUNT_ID }}"
echo "::add-mask::${{ secrets.IBMCLOUD_USER_NAME }}"
- name: ibmcloud cli install
run: |
curl -fsSL https://clis.cloud.ibm.com/install/linux | sh
ibmcloud cf install
- name: ibmclound login
run: ibmcloud login -u ${{ secrets.IBMCLOUD_USER_ID }} -p ${{ secrets.IBMCLOUD_USER_PASS }} -r us-south
- name: ibmclound target --cf
run: ibmcloud target --cf
- name: ibmclound cf push
run: ibmcloud cf push
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node-version }}
- run: npm install && npm start
これでGitHubにPush後にCI側でIBM Cloudにデプロイしてくれるようになりました。