chaincodeのCI環境構築
チームでアプリケーションを開発する場合は特に当てはまりますが、アプリケーションが動作する状態であるか保証できることは重要です。
ここで、最低限ビルドができることを継続的に確認すること、必要に応じてテストがパスすることを継続的に確認することを CI と呼ぶこととします。
CI を含む、VCS を使ったチーム開発フローは様々なバリエーションがあると思いますので、今回は以下のような開発フローを前提とします。
前提
main
ブランチが最新である- 常にビルドができる状態を維持できている
- 開発者は
main
ブランチから TOPIC ブランチを派生させてコミットする- TOPIC ブランチはキリの良いタイミングで
main
ブランチにマージさせる main
ブランチへマージする際、CI を pass しないとマージできない
- TOPIC ブランチはキリの良いタイミングで
尚、chaincode のテスト方法は分からないため、ビルドができることだけを確認することにします。
また、Chacindoe は go 言語で開発されていることを前提とします。
CI (GitHub Actions)
name: Build chaincode on: push jobs: build-chaincode: runs-on: ubuntu-latest container: image: hyperledger/fabric-ccenv:1.4.7 env: CHAINCODE_DIR: ./ steps: - name: Check out code into the Go module directory uses: actions/checkout@v2 - name: Build run: | cd "$CHAINCODE_DIR" go get -v -t -d ./... go build -v . # [オプション] # Actionの実行結果をSlack通知をする場合は GitHub の secret に以下を追加する # SLACK_WEBHOOK_URL: SlackのWEBHOOK URL # SLACK_CHANNEL : Slackのチャンネル名(ex. "#SOME_CHANNEL_NAME") # # - name: Slack Notification # uses: weseek/ghaction-slack-notification@master # if: always() # with: # type: ${{ job.status }} # job_name: '*${{ github.workflow }}*' # channel: ${{ secrets.SLACK_CHANNEL }} # isCompactMode: true # url: ${{ secrets.SLACK_WEBHOOK_URL }}