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

Salesforce Application Development with GitHub Actions and sfdx-cli

E32fe793290d1e72b0a78648da9c687b?s=47 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/

E32fe793290d1e72b0a78648da9c687b?s=128

Naoki Ainoya

December 11, 2020
Tweet

Transcript

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

    2020 Naoki Ainoya / Alp, Inc.
  2. 自己紹介 • Naoki Ainoya • SRE / Alp, Inc. •

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

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

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

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

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

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

    AppExchangeで公開
  9. Scalebase Connect for Salesforce の構成 • ScalebaseのAPIと通信 • Salesforceの取引先情報の同期も行う

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

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

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

  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
  14. 開発フロー • GitHub/gitのブランチ運用で開発フローを回している • ブランチ構成: ◦ 任意ブランチ:開発用ブランチ。masterから派生させて開発している ◦ master: 開発環境用統合ブランチ

    ◦ production: 管理パッケージリリース用ブランチ
  15. 開発フロー全体像 順を追って説明していきます

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  34. TIPS:差分救出スクリプト • パッケージ組織は人がログインできて色々設定変更できてしまう • 万が一パッケージ組織に不意に手作業が入ってしまった場合に、 差分をgitリポジトリに戻すCIを作っている • sfdx force:source:retrieve コマンドでパッケージ組織にデプロイされたソースコード

    を取得して、GitHub上のコードと差分があった場合に プルリクエスト作成 • GitHub上のコードがSalesforceアプリのSingle Source of Truthとなるように気を つける
  35. まとめ • アルプ/ScalebaseでのSalesforceアプリケーション開発の開発フロー・自動化につ いてお話しました • sfdx-cliとGitHub Actionsを組み合わせると様々な自動化ができて便利です

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