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 Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View 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 Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide