chaincodeのCI環境構築

チームでアプリケーションを開発する場合は特に当てはまりますが、アプリケーションが動作する状態であるか保証できることは重要です。
ここで、最低限ビルドができることを継続的に確認すること、必要に応じてテストがパスすることを継続的に確認することを CI と呼ぶこととします。

CI を含む、VCS を使ったチーム開発フローは様々なバリエーションがあると思いますので、今回は以下のような開発フローを前提とします。

前提

  • main ブランチが最新である
    • 常にビルドができる状態を維持できている
  • 開発者は main ブランチから TOPIC ブランチを派生させてコミットする
    • TOPIC ブランチはキリの良いタイミングで main ブランチにマージさせる
    • main ブランチへマージする際、CI を pass しないとマージできない

尚、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 }}