[Salesforce]DevOps Center(ベータ版)を使ってみた
きっかけ
Summer'22リリースノートにこっそり(?)追加されていたDevOpsセンター。
GitHubと連携してメタデータを効率的に管理できるらしいのでベータ版ではあるけど触ってみました。
準備(アカウント作成)
イメージはこんな感じにして検証したい↓
まずGitHubのアカウントを持っていない場合は作成しておきます。
次にSalesforce組織を用意します。
今回は4つの環境を使います。
- DevOpsCenter組織
- 本番組織
- ステージング組織
- 開発用組織(SandboxかScratch組織の必要がある)
- 1,2,3の環境はDeveloper組織を利用しました。
- 4の環境はScratch組織で作成する。
Developer組織の作成はここから
開発環境(Scratch組織)の作成
Scratch組織を作るために、まずはステージング組織でDev Hubを有効化する。
設定 > Dev Hub
Dev Hub を有効化
次にローカルでコマンドラインを開き、コマンドを実行する。
$ sf login org --instance-url https://login.salesforce.com --alias staging_devhub
ブラウザでログイン画面が開くのでステージング組織のユーザでログインする。
ログインが成功したら、コマンドでScratch組織を作成する。
$ sfdx force:org:create edition=Developer --targetdevhubusername staging_devhub --setalias scratch1
以下のメッセージが出ればOK
Successfully created scratch org: 00DN0000000VXKmMAO, username: test-mdmrvs2mtasc@example.com
Scratch組織のユーザにパスワードを設定する。
$ sfdx force:user:password:generate -u scratch1
以下のメッセージが出れば成功
Successfully set the password "xxxxxxxxxxxxx" for user test-mdmrvs2mtasc@example.com.
You can see the password again by running "sfdx force:user:display -u test-mdmrvs2mtasc@example.com".
パスワードを生成したら、メッセージの最後に表示されているコマンドを実行してLogin Urlの情報を確認しておきます。
$ sfdx force:user:display -u test-mdmrvs2mtasc@example.com
=== User Description
key label
──────────── ────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Username test-mdmrvs2mtasc@example.com
Profile Name システム管理者
Id 005N000000AHNH0IAP
Org Id 00DN0000000VXKmMAO
Access Token 00DN0000000VXKm!ARsAQCA2khqr5cfe8Lx_rZqyjclMU4szhJoGW4rGmSkI_e035yu_GqbmGA4ItikQCX4CDi_5Sg1zYJANiKUlA0vdOiR5PauI
Instance Url https://customer-customization-5676-dev-ed.my.salesforce.com
Login Url https://CS6.salesforce.com
Alias scratch1
Password xxxxxxxxxxxxx
ここで出力される以下の3項目が後に必要となります。
- Login Url
- Username
- Password
準備(DevOps Centerのセットアップ)
機能の有効化とインストール
DevOpsCenter組織にログインします。
設定 > DevOps センターを開きます。
DevOps Center を有効化 (ベータ)のチェックを有効化します。
と確認が出ますが「引き受ける」をクリックする。
有効化できたら、パッケージをインストール をクリックする。
そのままインストールする。
サードパーティアクセスの承認を求められるので
「はい、これらのサードパーティ Web サイトにアクセスを許可します」
を選んで次へをクリックする。
時間がかかるのでインストール完了通知メールを待つ。
インストール完了しました。
接続アプリの作成
設定 > アプリケーションマネージャ
新規接続アプリケーション
以下の情報を設定する。
- 接続アプリケーション名
- DevOps Center ※何でも良い
- 取引先責任者 メール
- ※何でも良い
- 開始 URL
- /sf_devops/DevOpsCenter.app
保存をクリックする。
保存後 Manage をクリックする。
権限セットの管理 をクリックする。
sf_devops_NamedCredentials を選択して保存をクリックする。
権限セット割当
設定 > 権限セット
sf_devops_NamedCredentials をクリックする。
割当の管理 をクリックする。
割当を追加 をクリックする。
操作ユーザを選択して割り当てをクリックする。
DevOps Center起動~Project作成
アプリケーションランチャーから DevOps Center を選択する。
New Project をクリックする。
GitHubと接続するための確認ダイアログが表示されるので Connect to GitHub をクリックする。
接続に成功したら再度、 New Project をクリックする。
Project Nameを「DevOpsCenterProject1」などにしてSaveをクリックするとGitHub上にプロジェクトが生成される。
デフォルトではPrivateで作られるみたい。
プロジェクトレコードが作成されるので、プロジェクト名をクリックして詳細画面に入ろうとすると、本番組織の設定を求められます。
今回はDeveloper組織を用意しているので Production Org を選択して Log In をクリックする。
Salesforceのログイン画面が開くので本番組織のユーザでログインする。
アクセス許可を求められたら許可する。
成功するとプロジェクト一覧画面に戻ってくるので再度、プロジェクト名を選択する。
組織接続
Settingsを開き、Addから組織を接続する。
開発組織接続
まずは開発組織(Scratch組織)を繋ぐ。
What kind...の質問に対しSandbox/Scratch Orgを選択し、Used for development...にチェックを入れ、Log Inをクリックする。
するとログイン画面に遷移するが、URLがhttps://test.salesforce.com/xxx となっているため、先程取得したScratch組織のログインURLに書き換えて遷移する。
ttps://test.salesforce.com/xxxx
↓
ttps://CS6.salesforce.com/xxxx
アクセス許可を要求されたら許可をクリックする。
成功するとSettingsの中に登録される。
ステージング組織接続
SettingsのAddから、メニューを開きLog Inをクリックする。
今回はWhat kind...はProduction Orgを選ぶ。
開発者組織の時とは違い、そのままログインすれば良い。
3組織が接続できれば準備完了
パイプライン設定
DevOps Centerのプロジェクト画面から、Pipelineを選択する。
デフォルトでは「Integration」「UAT」「Staging」「Production」と設定されているが、今回の検証では「Integration」「UAT」は削除してしまいましょう。
Staginの設定をする。
- Environment
- ステージ環境
- Branch
- Specify Branch...をクリック
- ブランチ名をどうするか聞かれるので、Stagingとしておく
Productionについては、すでに設定がされているので触る必要はなかったです。
設定できたら Activate をクリックしておく。
下のような画面が表示されれば準備完了。
Work Item作成
DevOps Centerのプロジェクト画面から、Work Itemsを選択する。
New Work Itemをクリックし登録画面を呼び出す。
まずはMy Work Item1として作成してみる。
Work Itemを開き、何を元にメタデータを取得するかを選択する。
今回は開発組織で作成したものを取ってくる用に設定し Proceedをクリック。
↓の画面のようになれば成功
この段階でGitHubのプロジェクトに専用のブランチが作成される。
まだ何も資産を作成していないため準備する。
資産作成
開発組織にログインし、簡単なApexを作成する。
public class Hello {
public void exec() {
System.debug('Hello World');
}
}
@istest
public class HelloTest {
@istest
static void test001() {
new Hello().exec();
}
}
Work Itemに変更資産取り込み
DevOps Center組織に戻りWork ItemのページでPull Changesをクリックする。
すると変更を加えたメタデータの一覧が表示される。
この中から、必要なものを選び、コミットメッセージを入力してから Commit Changesをクリックする。
実行することでブランチに変更がコミットされる。
変更がすべてコミットされたら、Create Reviewをクリックし、次に移る。
Work Item レビュー
In Reviewの状態になると、GItHub上に自動的にプルリクが作成される。
画面上のView Change Requestをクリックすることですぐに飛ぶことができる。
見慣れたGitHubのプルリク画面が表示され、ソースレビューも捗る。
レビューを完了したら、GitHub上でMergeはせず、DevOps Centerに戻って Ready to Promote をオンにする。
その後、Pipelineの画面を開くと変更リリースの準備が整っている。
ステージング組織へリリース
Pipeline画面で今回のWork Itemを選択し、 Promote Selectedをクリックする。
(おそらく初回のみ)ステージング組織へのログインを要求されるので、Continue to Log Inをクリックしてログイン処理を行う。ログイン成功後は、Work Item選択前の状態になっているため、再度、Work Itemを選択し、Promote Selectedをクリックする。
リリース時のオプションを質問される。
とりあえず、HelloTestを実行するように指定して、Promoteを実行する。
成功した。
このタイミングでプルリクもマージされます。
ステージング環境にApexがリリースされたことも確認できます。
そしてこのタイミングでmainブランチに対するプルリクも作成されていました。
本番組織にリリース
手順はステージング組織に対して行った操作と同様です。
リリースしたいWork Itemを選択し、Promote Selectedを実行する。
(おそらくこちらも初回だけ)認証を求められるのでログインし、再度Promoteを実行する。
成功
Work Itemはこのタイミングで自動的にClosedとなっていました。
所感
ベータ版ということもあり、分かりづらい点や使いにくい点(特に認証周り)もあるが、変更点をまとめやすく、GitHubと連携されたことでレビューのしやすさが格段に向上できるだろうと感じました。
現在はGitHub Enterpriseとの連携はサポートされていないようですが、正式版では使えるようになることを期待しています。
参考URL
各種使い方は以下のヘルプを参考に行いました。
Discussion