1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

SalesforceのCI/CD その2

Posted at

要件

SalesforceのDeployとソース管理はSalesforce自身の機能でまたできていないです。
Continuous Integration and Continuous DeploymentはSfdcコマンドとAzureのDevopsで実装します。
※おれたちの案は世界一ですよ。

実装イメージ

image.png

④ 自動配布

CI/CDの一つ核心はバージョン管理、もう一つは自動配布です。
自動配布機能はないと、CDにならないです。
①‐③までの説明
 - SFDCのCI/CD対策(その1/2 CI)を参考してください

本節の参照資料は下記です。
 - 参考資料:https://abhisheksubbu.github.io/salesforce-azure-devops/

④‐1 salesforce環境接続用キー作成

普通のSFDCへの認証は画面にID、Passwordで行いますが、自動配布になるとこれは実用できないです。
認証方式はJWTになります。認証証明書が必要です。そのため、自分で認証キーと証明書を作成します。

  • salesforce環境とAzure Devops Repo接続用認証ファイル作成:
    • openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out server.key でプライベートキーserver.key作成
    • openssl req -new -key server.key -out server.csrプライベートキーでserver.csrを作成
    • openssl x509 -req -sha256 -days 365 -in server.csr -signkey server.key -out server.crt認証証書server.crtを作成

④‐2 salesforce環境接続用アプリケーション作成

Salesforce側に④‐1の証明書を使って、外から認証を受ける接続アプリケーションを作成する

  • 「アプリケーションマネージャ」で「新規接続アプリケーション」を作成
    image.png

  • 基本情報を設定、名前とメールは任意
    image.png

  • 「OAuth 設定の有効化」をチェック入れ、以下のように設定、その内コールバック URLをhttp://localhost:1717/OauthRedirectに設定、デジタル署名で前に作成した**server.crt**をアップロード
    image.png

  • 作成したアプリケーションの「manage」をクリック、「ポリシーを編集」クリック、「OAuth ポリシー」の「許可されているユーザ」を「管理者が承認したユーザは事前承認済」に設定

  • 作成したアプリケーションの「manage」をクリック、「プロファイル」欄で「システム管理者」「API ONLY」のプロファイルを追加

  • 作成したアプリケーションの「参照」をクリック、「コンシューマ鍵」が取得できます、後pipelineで使用されます
    image.png

④‐3 azure pipeline作成

上記④‐1、④‐2で作成した認証情報を利用して、自動配布のPipelineを作成する。

  • salesforce環境にdeployしたいazure repoのブランチに、前に作成したserver.keyをアップロード
    image.png

  • ブランチのrootにpipelineのyamlファイル「azure-pipelines-dev01.yml」を作成
    image.png

  • pipelineを編集の場合、azure devopsのpipelineタグで作成したpipelineを探し
    image.png

  • ここでpipelineの毎回実行のlogが表示され、pipelineの編集は「edit」をクリック
    image.png

  • pipelineコーディング画面で、左上ブランチ遷移でき、右上パラメータ設定できます
    image.png

  • pipelineコード保存後、右上「run」をクリックにより、pipelineの手動起動ができます。

コード説明 azure-pipelines-dev01.yml(STS-Team-Business-Sys-dev01-test01)
用途:dev01ブランチ内容が更新されるとき、資材をft01環境へdeploy
  • pipeline起動条件をdev01ブランチ内容更新される場合に設定、且つ頻繁操作有りの場合batch実行行い、起動回数を減らす。
trigger: 
  batch: true
  branches:
    include:
    - dev01
  • pipelineプラットフォームをMicrosoftでホストされているLinuxマシンに設定(デフォルト)
pool:
  vmImage: ubuntu-latest
  • プラットフォームにSFDX CLIをインストール
- bash: npm install sfdx-cli --global
  displayName: Install Salesforce CLI
  • sfdx-cliのバージョン確認(pipelineに影響無し)
- bash: sfdx --version
  displayName: Show Salesforce CLI Version
  • SFDXプロジェクを作成
- bash: sfdx force:project:create -n .
  displayName: Create a salesforce Project
  • salesforce sandbox ft01環境に接続、四つのパラメータを渡す:
    • $(SALESFORCEDEVORGCLIENTID)、前に作成した salesforce環境接続アプリケーションの「コンシューマ鍵」を入力
    • $(SALESFORCEJWTKEYFILEPATH)、sandboxを接続の場合https://test.salesforce.comを入力、本番環境を接続の場合https://login.salesforce.comを入力
    • $(SALESFORCEDEVORGUSERNAME)、接続先環境の「システム管理者」プロファイルを持つ「ユーザ名」を入力
    • $(SALESFORCEDEVORGINSTANCEURL)、前にazure repoのブランチにアップロードしたserver.keyのファイルpath
- bash: sfdx force:auth:jwt:grant --clientid $(SALESFORCEDEVORGCLIENTID) --jwtkeyfile $(SALESFORCEJWTKEYFILEPATH) --username $(SALESFORCEDEVORGUSERNAME) --instanceurl $(SALESFORCEDEVORGINSTANCEURL) -a DepolyOrg
  displayName: Authorize salesforce org
  • 本番deployの前に、資材deploy出来るが如何かの検証;一つのパラメータを渡す:
    • $(deploy_from_pkdiff.xml):pkdiff.xml中の資材をdeploy、毎回修正された資材のみ含まれる
    • $(deploy_from_package.xml):package.xml中の資材をdeploy、新しい環境作成ため全ての資材が含まれる 参考資料:デプロイ手順
- bash: sfdx force:source:deploy -c --manifest manifest/$(deploy_from_pkdiff.xml) -u DepolyOrg 
  displayName: Deploy test OK
  • 本番deploy
- bash: sfdx force:source:deploy --manifest manifest/$(deploy_from_pkdiff.xml) -u DepolyOrg 
  displayName: Deploy "manifest/$(deploy_from_pkdiff.xml)" to Sandbox DepolyOrg

pipelineの各ステップ、その内 「DisplayName:」を使用して、pipeline実行のlogでステップを表示できます
image.png

④‐4 配布前のValidation(オプション)

コード説明 dev01-check_deployable_on_PR.yaml(STS-Team-Business-Sys check-SFdeploy)

用途:dev01ブランチにpull Request出す時、deploy予定の資材がft01環境へdeploy出来るかどうかを検証、エラーの場合資材の再修正が必要

  • pipeline起動条件をdev01ブランチにpull Request出す時場合に設定
trigger:
# 正式なやり方は不明だが、PRのときだけ走らせるため、存在しないブランチ名を指定しておく https://maku.blog/p/i6549xd/
- DUMMY_BRANCH_TO_BUILD_ONLY_ON_PR
pr:
# dev01をターゲットとしたPR時にトリガーする
- dev01
  • pipelineプラットフォームをMicrosoftでホストされているLinuxマシンに設定(デフォルト)
pool:
  vmImage: ubuntu-latest
  • 中身はazure-pipelines-dev01.ymlと同じ、但し本番deployのコードを抜き
steps:
- bash: npm install sfdx-cli --global
  displayName: Install Salesforce CLI
- bash: sfdx --version
  displayName: Show Salesforce CLI Version
- bash: sfdx force:project:create -n .
  displayName: Create a salesforce Project
- bash: sfdx force:auth:jwt:grant --clientid $(SALESFORCEDEVORGCLIENTID) --jwtkeyfile $(SALESFORCEJWTKEYFILEPATH) --username $(SALESFORCEDEVORGUSERNAME) --instanceurl $(SALESFORCEDEVORGINSTANCEURL) -a DepolyOrg
  displayName: Authorize salesforce org
- bash: sfdx force:source:deploy -c --manifest manifest/$(deploy_from_pkdiff.xml) -u DepolyOrg 
  displayName: Checking deployment "manifest/pkdiff.xml" to Sandbox DepolyOrg

###dev01ブランチにこのPipelineを設置

  •  dev01-check_deployable_on_PR.yaml(STS-Team-Business-Sys check-SFdeploy)を作成

  • ブランチ画面でdev01ブランチの「branch policies」をクリック
    image.png

  • 設置画面で「build validation」エリアの「enabled」をONにして、右上の”+”をクリック
    image.png

  • 先作成されたpipelineを選択し、要求により設置を変更
    image.png

1
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?