Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

リリースフロー/リリース

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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