Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

GitHub Actions で始める Salesforce CI

SMS tech
September 12, 2024

GitHub Actions で始める Salesforce CI

2024/8/29(木)に開催された Salesforce Developers Meetup にて川名が登壇した際の資料(加筆修正版)です

Salesforce Developers Meetup
https://trailblazercommunitygroups.com/events/details/salesforce-salesforce-developer-group-tokyo-japan-presents-2024nian-8yue-29ri-kai-cui-salesforce-developers-meetup-33-xia-noye-noltda-hui/

SMS tech

September 12, 2024
Tweet

More Decks by SMS tech

Other Decks in Programming

Transcript

  1. 2 © SMS Co., Ltd. 01 02 03 04 05

    06 自己紹介 SFにおけるApexテストの実行方法 何故CIが必要か? SFにおけるCIの技術的要素 GitHub Actionsで作ってみる まとめ 目次
  2. 4 © SMS Co., Ltd. 自己紹介 川名 龍(かわな りゅう) 株式会社エス・エム・エス キャリア横断開発グループ 経歴:

    エス・エム・エスへ入社して3ヶ月 Salesforceの世界に入って5年くらい(Admin→Dev) SIer→情シス(小売)→コーポレートエンジニア(SaaS)
  3. 6 © SMS Co., Ltd. • 変更セット 実は数えるくらいしか変更セットを使った事がないです。 こちらも手動で対象のコンポーネントを選択してApexテストの検証をしていきますが、バージョン管理への同期 も出来ないのでなかなか運用が大変です。

    SFにおけるApexテストの実行方法 • DevOps Center 変更セットに変わるSalesforce製品としてDevOps Centerというのが出てきていますね。これから実運用する組 織が増えていくのかもしれません。まだ実運用にインストールする良い方法が見えていないです。 • 開発者コンソール 定番ですね。 ただこのコンソール自体はGUIなので自動化などは出来ないです。 • Salesforce CLI この資料ではここのお話をします。 CLIをGitHub Actionsから利用すればテストの自動化が出来ます。
  4. 10 © SMS Co., Ltd. SFにおけるCIの技術的要素 • Salesforce CLI •

    SFDX Project • Salesforce Org(Scratch Org/Sandboxなど) ◦ ユーザの場合は検証用や個人のSandboxだと検証しやすい ◦ パッケージ開発以外でのScratch Orgへの階段はかなり長いと思う • バージョン管理(git) ◦ 最低限バージョン管理がされている状態 ◦ バージョン管理はAdminとDevの協調において課題になってくる ◦ DevOps CenterでどこまでWorkするか? ◦ ブランチ戦略などとも整合性をとっていく必要がある
  5. 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
  6. 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
  7. 14 © SMS Co., Ltd. GitHub Actions? GitHub Actions は、ビルド、テスト、デプロイのパイプラインを自動化できる継続的イン

    テグレーションと継続的デリバリー (CI/CD) のプラットフォームです。 source:https://docs.github.com/ja/actions/about-github-actions/understanding-github-actions
  8. 16 © SMS Co., Ltd. GitHub Actions(概要) • YAMLで記述 ◦

    key:valueという形式で表現出来る ◦ インデントが重要 ◦ jsonより見やすい ◦ 詳細は Learn yaml in y minutesあたりを参照されたい • 設置場所 ◦ .github/workflows/<build | deploy | any>.yml • 長いので各種要素で切り取りながら以降説明します
  9. 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(基本設定)
  10. 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(組織認証)
  11. 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を削除しておく