GitHub Actionsとsfdx-cliで実現するSalesforceパッケージ開発のCI/CD SaaS * Salesforce Developers / Winter 2020 2020/12/11 https://alp.connpass.com/event/194735/
GitHub Actionsとsfdx-cliで実現するSalesforceパッケージ開発のCI/CD2020/12/11SaaS * Salesforce Developers / Winter 2020Naoki Ainoya / Alp, Inc.
View Slide
自己紹介● Naoki Ainoya● SRE / Alp, Inc.● Salesforceアプリケーション開発のCI/CD構築をサポート
本日お話すること● Salesforceに詳しくないエンジニアでも開発を円滑に回せるようにするための工夫● GitHub Actionsを使った様々な開発工程の自動化● 開発フロー・リリースフローを紹介しながら説明します
サブスクリプションビジネス効率化・収益最大化プラットフォーム
Scalebaseが対象とするビジネスモデル
契約・請求・分析のオペレーションを一気通貫で管理SFAや会計システムと連携し、シームレスなオペレーションを実現
Scalebase Connect for Salesforce の紹介● Scalebaseの計算エンジンを使って Salesforce上で柔軟なサブスクリプション契約・見積もりが行えるアプリケーション● AppExchangeで公開
Scalebase Connect for Salesforce の構成● ScalebaseのAPIと通信● Salesforceの取引先情報の同期も行う
弊社のSalesforceアプリケーション開発体制● Salesforce専任のエンジニアは社員にいない● 外部パートナーの力をお借りしつつ全員で勉強しながら作っている
自動化へのモチベーション● バックエンドやwebフロントエンドの開発をしつつなので、いつもSalesforceアプリケーション開発をしているわけではない● 久しぶりにやると、開発の流れやリリース仕方忘れがち● CI/CDを整備してうろ覚え状態でも開発が進められるようになればよいなと考えた
自動化へのアプローチ● GitHub Actionsとsfdx-cliを組み合わせて無理ない範囲で自動化● sfdx-cli○ https://developer.salesforce.com/ja/tools/sfdxcli
前提: パッケージ構成● 第1世代パッケージ管理● パッケージ開発組織上でパッケージ作成をしている● 将来的には第2世代パッケージ管理に移行したい● 第2世代パッケージ管理ではスクラッチ組織でパッケージが作成できるようになる。便利。● 第1世代管理パッケージ | Salesforce DX 開発者ガイドhttps://developer.salesforce.com/docs/atlas.ja-jp.sfdx_dev.meta/sfdx_dev/sfdx_dev_build_release.htm
開発フロー● GitHub/gitのブランチ運用で開発フローを回している● ブランチ構成:○ 任意ブランチ:開発用ブランチ。masterから派生させて開発している○ master: 開発環境用統合ブランチ○ production: 管理パッケージリリース用ブランチ
開発フロー全体像順を追って説明していきます
開発フロー/基本の開発手順
開発フロー/基本の開発手順featureA開発してPR作成
開発フロー/基本の開発手順$ sfdx force:org:create
開発フロー/基本の開発手順$ sfdx force:org:create$ sfdx force:source:deployPR毎にスクラッチ組織を作成することで40組織/dayの制約にかからないよう対策
開発フロー/基本の開発手順$ sfdx force:apex:test:run
開発フロー/基本の開発手順コードレビュー・テストが問題なければマージ
リリースフローQAの後、パッケージをリリースするフローテストが問題なければマージリリース準備へ
リリースフローmaster->productionへリリースチェックリストが書かれた PRが自動で作成されている(git-pr-release)これをマージしてリリース作業開始
リリースフロー半自動なので作業手順も書いている
リリースフロー/パッケージ組織にデプロイ$ sfdx force:source:convert$ sfdx force:mdapi:deploy
リリースフロー/ベータパッケージ作成$ sfdx force:package1:version:create
リリースフロー/QA用の組織にインストール
リリースフロー/テスト・QA実施
リリースフロー/管理パッケージ作成
リリースフロー/リリース
TIPS:差分救出スクリプト● パッケージ組織は人がログインできて色々設定変更できてしまう● 万が一パッケージ組織に不意に手作業が入ってしまった場合に、差分をgitリポジトリに戻すCIを作っている● sfdx force:source:retrieve コマンドでパッケージ組織にデプロイされたソースコードを取得して、GitHub上のコードと差分があった場合にプルリクエスト作成● GitHub上のコードがSalesforceアプリのSingle Source of Truthとなるように気をつける
まとめ● アルプ/ScalebaseでのSalesforceアプリケーション開発の開発フロー・自動化についてお話しました● sfdx-cliとGitHub Actionsを組み合わせると様々な自動化ができて便利です
We're Hiring!● 一緒にSalesforceアプリケーション開発しましょう!● 社員・業務委託募集中!● https://thealp.co.jp● https://herp.careers/v1/alpinc