Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GitHub Actions で始める Salesforce CI

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.
Avatar for SMS tech 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/

Avatar for SMS tech

SMS tech

September 12, 2024

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を削除しておく