Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Salesforce Application Development with GitHub Actions and sfdx-cli

Naoki Ainoya
December 11, 2020

Salesforce Application Development with GitHub Actions and sfdx-cli

GitHub Actionsとsfdx-cliで実現するSalesforceパッケージ開発のCI/CD
SaaS * Salesforce Developers / Winter 2020
2020/12/11
https://alp.connpass.com/event/194735/

Naoki Ainoya

December 11, 2020
Tweet

More Decks by Naoki Ainoya

Other Decks in Programming

Transcript

  1. GitHub Actionsとsfdx-cliで実現する
    Salesforceパッケージ開発のCI/CD
    2020/12/11
    SaaS * Salesforce Developers / Winter 2020
    Naoki Ainoya / Alp, Inc.

    View full-size slide

  2. 自己紹介
    ● Naoki Ainoya
    ● SRE / Alp, Inc.
    ● Salesforceアプリケーション開発の
    CI/CD構築をサポート

    View full-size slide

  3. 本日お話すること
    ● Salesforceに詳しくないエンジニアでも開発を円滑に回せるようにするための工夫
    ● GitHub Actionsを使った様々な開発工程の自動化
    ● 開発フロー・リリースフローを紹介しながら説明します

    View full-size slide

  4. サブスクリプションビジネス効率化・収益
    最大化プラットフォーム

    View full-size slide

  5. Scalebaseが対象とするビジネスモデル

    View full-size slide

  6. 契約・請求・分析のオペレーションを一気通貫で管理
    SFAや会計システムと連携し、シームレスなオペレーションを実現

    View full-size slide

  7. 契約・請求・分析のオペレーションを一気通貫で管理
    SFAや会計システムと連携し、シームレスなオペレーションを実現

    View full-size slide

  8. Scalebase Connect for Salesforce の紹介
    ● Scalebaseの計算エンジンを使って Salesforce上で柔軟なサブスクリプション契約
    ・見積もりが行えるアプリケーション
    ● AppExchangeで公開

    View full-size slide

  9. Scalebase Connect for Salesforce の構成
    ● ScalebaseのAPIと通信
    ● Salesforceの取引先情報の同期も行う

    View full-size slide

  10. 弊社のSalesforceアプリケーション開発体制
    ● Salesforce専任のエンジニアは社員にいない
    ● 外部パートナーの力をお借りしつつ全員で勉強しながら作っている

    View full-size slide

  11. 自動化へのモチベーション
    ● バックエンドやwebフロントエンドの開発をしつつなので、
    いつもSalesforceアプリケーション開発をしているわけではない
    ● 久しぶりにやると、開発の流れやリリース仕方忘れがち
    ● CI/CDを整備してうろ覚え状態でも開発が進められるようになれば
    よいなと考えた

    View full-size slide

  12. 自動化へのアプローチ
    ● GitHub Actionsとsfdx-cliを組み合わせて無理ない範囲で自動化
    ● sfdx-cli
    ○ https://developer.salesforce.com/ja/tools/sfdxcli

    View full-size slide

  13. 前提: パッケージ構成
    ● 第1世代パッケージ管理
    ● パッケージ開発組織上でパッケージ作成をしている
    ● 将来的には第2世代パッケージ管理に移行したい
    ● 第2世代パッケージ管理ではスクラッチ組織でパッケージが作成できるようになる。
    便利。
    ● 第1世代管理パッケージ | Salesforce DX 開発者ガイド
    https://developer.salesforce.com/docs/atlas.ja-jp.sfdx_dev.meta/sfdx_dev/sfdx_dev_build_release.htm

    View full-size slide

  14. 開発フロー
    ● GitHub/gitのブランチ運用で開発フローを回している
    ● ブランチ構成:
    ○ 任意ブランチ:開発用ブランチ。masterから派生させて開発している
    ○ master: 開発環境用統合ブランチ
    ○ production: 管理パッケージリリース用ブランチ

    View full-size slide

  15. 開発フロー全体像
    順を追って説明していきます

    View full-size slide

  16. 開発フロー/基本の開発手順

    View full-size slide

  17. 開発フロー/基本の開発手順
    featureA開発して
    PR作成

    View full-size slide

  18. 開発フロー/基本の開発手順

    View full-size slide

  19. 開発フロー/基本の開発手順
    $ sfdx force:org:create

    View full-size slide

  20. 開発フロー/基本の開発手順
    $ sfdx force:org:create
    $ sfdx force:source:deploy
    PR毎にスクラッチ組織を
    作成することで40組織/dayの
    制約にかからないよう対策

    View full-size slide

  21. 開発フロー/基本の開発手順
    $ sfdx force:apex:test:run

    View full-size slide

  22. 開発フロー/基本の開発手順
    コードレビュー・テス
    トが問題なければ
    マージ

    View full-size slide

  23. リリースフロー
    QAの後、パッケージをリリースするフロー
    テストが問題なけれ
    ばマージ
    リリース準備へ

    View full-size slide

  24. リリースフロー
    master->productionへ
    リリースチェックリストが書かれた PRが自
    動で作成されている
    (git-pr-release)
    これをマージしてリリース作業開始

    View full-size slide

  25. リリースフロー
    半自動なので作業手順も書いている

    View full-size slide

  26. リリースフロー/パッケージ組織にデプロイ
    $ sfdx force:source:convert
    $ sfdx force:mdapi:deploy

    View full-size slide

  27. リリースフロー/パッケージ組織にデプロイ
    $ sfdx force:source:convert
    $ sfdx force:mdapi:deploy

    View full-size slide

  28. リリースフロー/ベータパッケージ作成
    $ sfdx force:package1:version:create

    View full-size slide

  29. リリースフロー/ベータパッケージ作成
    $ sfdx force:package1:version:create

    View full-size slide

  30. リリースフロー/QA用の組織にインストール

    View full-size slide

  31. リリースフロー/テスト・QA実施

    View full-size slide

  32. リリースフロー/管理パッケージ作成

    View full-size slide

  33. リリースフロー/リリース

    View full-size slide

  34. TIPS:差分救出スクリプト
    ● パッケージ組織は人がログインできて色々設定変更できてしまう
    ● 万が一パッケージ組織に不意に手作業が入ってしまった場合に、
    差分をgitリポジトリに戻すCIを作っている
    ● sfdx force:source:retrieve コマンドでパッケージ組織にデプロイされたソースコード
    を取得して、GitHub上のコードと差分があった場合に
    プルリクエスト作成
    ● GitHub上のコードがSalesforceアプリのSingle Source of Truthとなるように気を
    つける

    View full-size slide

  35. まとめ
    ● アルプ/ScalebaseでのSalesforceアプリケーション開発の開発フロー・自動化につ
    いてお話しました
    ● sfdx-cliとGitHub Actionsを組み合わせると様々な自動化ができて便利です

    View full-size slide

  36. We're Hiring!
    ● 一緒にSalesforceアプリケーション開発しましょう!
    ● 社員・業務委託募集中!
    ● https://thealp.co.jp
    ● https://herp.careers/v1/alpinc

    View full-size slide