Slide 1

Slide 1 text

1 © SMS Co., Ltd. 2024.7.29 株式会社エス・エム・エス 川名 龍 GitHub Actionsで始める Salesforce CI

Slide 2

Slide 2 text

2 © SMS Co., Ltd. 01 02 03 04 05 06 自己紹介 SFにおけるApexテストの実行方法 何故CIが必要か? SFにおけるCIの技術的要素 GitHub Actionsで作ってみる まとめ 目次

Slide 3

Slide 3 text

3 © SMS Co., Ltd. 01 自己紹介

Slide 4

Slide 4 text

4 © SMS Co., Ltd. 自己紹介 川名 龍(かわな りゅう) 株式会社エス・エム・エス キャリア横断開発グループ 経歴: エス・エム・エスへ入社して3ヶ月 Salesforceの世界に入って5年くらい(Admin→Dev) SIer→情シス(小売)→コーポレートエンジニア(SaaS)

Slide 5

Slide 5 text

5 © SMS Co., Ltd. 02 SFにおけるApexテストの実行方法

Slide 6

Slide 6 text

6 © SMS Co., Ltd. • 変更セット 実は数えるくらいしか変更セットを使った事がないです。 こちらも手動で対象のコンポーネントを選択してApexテストの検証をしていきますが、バージョン管理への同期 も出来ないのでなかなか運用が大変です。 SFにおけるApexテストの実行方法 • DevOps Center 変更セットに変わるSalesforce製品としてDevOps Centerというのが出てきていますね。これから実運用する組 織が増えていくのかもしれません。まだ実運用にインストールする良い方法が見えていないです。 • 開発者コンソール 定番ですね。 ただこのコンソール自体はGUIなので自動化などは出来ないです。 • Salesforce CLI この資料ではここのお話をします。 CLIをGitHub Actionsから利用すればテストの自動化が出来ます。

Slide 7

Slide 7 text

7 © SMS Co., Ltd. 03 何故CIが必要か?

Slide 8

Slide 8 text

8 © SMS Co., Ltd. 何故CIが必要か? • DevOpsにある継続的デリバリの一つの要素 ビルド/テストの自動化を実現し、 開発初期からテストを細かく実行する事で品質や生産性が上がり、 より高いパフォーマンスを発揮するチームになれる!

Slide 9

Slide 9 text

9 © SMS Co., Ltd. 04 SFにおけるCIの技術的要素

Slide 10

Slide 10 text

10 © SMS Co., Ltd. SFにおけるCIの技術的要素 • Salesforce CLI • SFDX Project • Salesforce Org(Scratch Org/Sandboxなど) ○ ユーザの場合は検証用や個人のSandboxだと検証しやすい ○ パッケージ開発以外でのScratch Orgへの階段はかなり長いと思う • バージョン管理(git) ○ 最低限バージョン管理がされている状態 ○ バージョン管理はAdminとDevの協調において課題になってくる ○ DevOps CenterでどこまでWorkするか? ○ ブランチ戦略などとも整合性をとっていく必要がある

Slide 11

Slide 11 text

11 © SMS Co., Ltd. Salesforce CLI ? Salesforce CLI は、Salesforce 組織を使用しているときの開発およびビルド自動化を簡略 化するコマンドラインインターフェースで、組織の作成や管理、ソースと組織間の双方向の 同期、パッケージの作成やインストールなどに使用できます。 • Salesforce開発時に必要なコマンドのツール群 • スクラッチ組織とソースコードの双方向同期 • 組織の作成及び管理 • データのインポート及びエクスポート • テストの作成及び実行 • パッケージの作成及びインストール source:https://developer.salesforce.com/docs/atlas.ja-jp.sfdx_setup.meta/sfdx_setup/sfdx_setup_intro.htm

Slide 12

Slide 12 text

12 © SMS Co., Ltd. Scratch Org? ソース駆動型で破棄可能なリリースです。スクラッチ組織ではあらゆる設定が可能で、開発 者が機能や設定の異なるさまざまな Salesforce エディションをエミュレートできます。 source:https://developer.salesforce.com/docs/atlas.ja-jp.sfdx_dev.meta/sfdx_dev/sfdx_dev_scratch_orgs.htm

Slide 13

Slide 13 text

13 © SMS Co., Ltd. 05 GitHub Actionsで作ってみる

Slide 14

Slide 14 text

14 © SMS Co., Ltd. GitHub Actions? GitHub Actions は、ビルド、テスト、デプロイのパイプラインを自動化できる継続的イン テグレーションと継続的デリバリー (CI/CD) のプラットフォームです。 source:https://docs.github.com/ja/actions/about-github-actions/understanding-github-actions

Slide 15

Slide 15 text

15 © SMS Co., Ltd. シーケンス

Slide 16

Slide 16 text

16 © SMS Co., Ltd. GitHub Actions(概要) ● YAMLで記述 ○ key:valueという形式で表現出来る ○ インデントが重要 ○ jsonより見やすい ○ 詳細は Learn yaml in y minutesあたりを参照されたい ● 設置場所 ○ .github/workflows/.yml ● 長いので各種要素で切り取りながら以降説明します

Slide 17

Slide 17 text

17 © SMS Co., Ltd. name: Build # ワークフローの名前 # 動作するイベントを定義(この場合、コードがpushされた時に発動) on: push: # コードがGitHubへpushされた時に発動するブランチを指定できます。小さなスタートも! branches: - main - "features/**" # jobは並列で動かしたり直列で動かしたり出来ます。同時に複数の環境で検証したい場合など jobs: deploy_scratch_org: runs-on: ubuntu-latest # stepsに具体的な処理を書きます。必要なコードのチェックアウト、node/cliなど環境をセットアップし ます steps: - name: Checkout repository uses: actions/checkout@v4 - name: Set up Node.js uses: actions/setup-node@v4 with: node-version: "20.x" - name: Install Salesforce CLI run: | npm install @salesforce/cli --global sf --version GitHub Actions(基本設定)

Slide 18

Slide 18 text

18 © SMS Co., Ltd. name: Build # ワークフローの名前 on: push: branches: - main - "features/**" jobs: deploy_scratch_org: runs-on: ubuntu-latest steps: # envでシェルに必要な変数を渡す事が出来ます - name: Authenticate with Salesforce env: SFDX_AUTH_URL: ${{ secrets.SFDX_AUTH_URL }} # 事前にGitHub Secretsに設定する必要が あります run: | # auth urlは対象の組織をローカルなどで認証した後、sf org display --verboseで確認できます # 確認後、GitHubのVariablesに登録しておいてください echo "$SFDX_AUTH_URL" > auth-url.txt sf auth sfdxurl store -s -f auth-url.txt 
 GitHub Actions(組織認証)

Slide 19

Slide 19 text

19 © SMS Co., Ltd. GitHub Actions(テスト実行) name: Build # ワークフローの名前 on: push: branches: - main - "features/**" jobs: deploy_scratch_org: runs-on: ubuntu-latest steps: - name: Build run: | # dry-runとする事で実際のデプロイは実行されず検証が行われます sf project deploy start --dry-run -l RunLocalTests # sf org delete scratch -p -o build # 必要に応じ、Scratch Orgを削除しておく 


Slide 20

Slide 20 text

20 © SMS Co., Ltd. GitHub Actions(実行結果) リポジトリにあるActionsタブからテストの簡単に実行結果を確認する事ができます。 実行結果をSlack通知したりする事で早期にエラーに気づく事が出来ます。

Slide 21

Slide 21 text

21 © SMS Co., Ltd. サンプルリポジトリ sample-sfdx

Slide 22

Slide 22 text

22 © SMS Co., Ltd. 06 まとめ

Slide 23

Slide 23 text

23 © SMS Co., Ltd. まとめ ● 個人環境で実装する事ができるので、是非小さくトライしてみてください👍 ● CIを活用しながら継続的デリバリを実現し、組織の活性化に繋げていきましょう󰳕