この記事はSalesforce Platform Advent Calendar 2019の14日目です。
上長からJenkinsを使えばSalesfoceのCI/CDができると聞いたので環境を構築しました。
初めてなので最初はCIから作成し、手順を記事にしました。
CDに進化したらそのうち記事にします。
やったこと
JenkinsをインストールしたサーバからSalesforce環境へ接続し、テストを実施するジョブを作成しました。
普段の開発環境ではブラウザからログインすればいいので楽でしたがCUIでは手順がおおく躓くことが多いイメージでした。
Jenkins環境の構築
Docker環境の構築
javaや前提パッケージのインストールはめんどい本題ではないのでDockerでJenkinsコンテナを立てます。
また、コンテナビルド時にSFDX CLIも一緒にインストールします。
※Dockerfileは割愛
参考:Salesforce CLI のインストール - Linux での CLI のインストール
Jenkinsへ接続確認
http://[IPアドレス or localhost]:8080にアクセスし、Jenkinsのセットアップ画面が表示されればJenkins環境の構築完了
Salesforceへの接続
参考:接続アプリケーションの作成 単元 | Salesforce Trailhead
自己証明書の作成
参考:非公開鍵と自己署名デジタル証明書の作成
参考元を見つつサーバの秘密鍵と自己証明書を任意のディレクトリに作成
$ cd ./certificates
$ ls -l
-rw-rw-r-- 1 ec2-user ec2-user 1103 12月 2 14:49 server.crt
-rw-rw-r-- 1 ec2-user ec2-user 993 12月 2 14:49 server.csr
-rw-rw-r-- 1 ec2-user ec2-user 1675 12月 2 14:46 server.key
接続アプリケーションの作成
参考:接続アプリケーションの作成
※参考元の12〜16も行う
次工程のJWTベースフローを使用した認証で使用するので表示された「コンシューマ鍵」をメモ帳等にコピーしておく
JWTベースフローを使用した組織の認証
参考:
JWT ベースフローを使用した組織の認証
[Salesforce DX]Salesforce CLIを使ってJWTべアラートークンフローを試してみる | Developers.IO
環境変数にコンシューマ鍵、自己証明書への絶対パス、ユーザ名を設定する
(GUIブラウザがないため一般的なブラウザからのログインができないため)設定した環境変数を利用してJWTベースフロー認証を行う
# 環境変数の設定
export SFDX_USE_GENERIC_UNIX_KEYCHAIN=true
export CONSUMER_KEY=[コピーしたコンシューマ鍵]
export JWT_KEY_FILE=/path/to/certificates/server.key
export HUB_USERNAME=[ユーザ名]
# JWTベースフローを使用した組織の認証
$ sfdx force:auth:jwt:grant -i ${CONSUMER_KEY} -u ${HUB_USERNAME} -f ${JWT_KEY_FILE} -a jwt
Successfully authorized yamashita_daisuke+dev2@infonic.co.jp with org ID 00D0o000000RtMIEA0
# 認証情報の確認
$ sfdx force:auth:list
=== authenticated orgs
ALIAS USERNAME ORG ID INSTANCE URL OAUTH METHOD
───── ──────── ──────── ────────────────────────── ────────────
jwt [ユーザ名] [組織ID] https://ap8.salesforce.com jwt
Jenkinsの設定
JenkinsにSalesforce認証情報を登録する
Jenkins管理>システムの設定からグローバル プロパティに環境変数を設定する
自己証明書を登録
Jenkins Admin Credentialsインターフェイスを使用して、生成したserver.keyファイルをJenkinsシークレットファイルとして保存する
先に設定した環境変数「SERVER_KEY_CREDENTIALS_ID」の値(本記事ではSF_Develop)をIDに設定する
Custom Tools Pluginのインストール
Jenkinsの管理>プラグインの管理>利用可能 へと順番に押下し、フィルターに「Custom Tools」と入力しCustom Tools Pluginをインストールする
Custom Toolsの設定
Jenkinsの管理>Global Tool Configuration からCustom toolの設定をする
Jenkinsでテストの実施
下記URLのJenkinsファイルをコピーしてジョブを作成する
https://github.com/forcedotcom/sfdx-jenkins-org/blob/master/Jenkinsfile
あとはジョブを実施してテスト三昧の毎日をお過ごしください
CIからCDへ
SFDX CLIを使用すると本番環境へのデプロイも可能らしいので近いうちにやってみたいですが、安全な環境でデプロイのテストってどうやるんですかね?
ご存知の方がおられたらコメントお待ちしております。
参照元
Salesforce DX 開発者ガイドで紹介されている組織開発モデルでCIを行うJenkinsのリポジトリです。
正直このレポジトリのReadmeに全て書いてあります。
GitHub - forcedotcom/sfdx-jenkins-org: Jenkins example with org development
免責事項
当記事のコンテンツや情報において、可能な限り正確な情報を掲載するよう努めています。しかし、誤情報が入り込んだり、情報が古くなったりすることもあります。必ずしも正確性を保証するものではありません。また合法性や安全性なども保証しません。