LoginSignup
5
1

More than 1 year has passed since last update.

これは何?

  • sfdx-git-deltaという、Salesforce CLIプラグインの紹介です。
  • SalesforceDXを活用していてpackage作成に課題を感じている方や、リリースサイクルをCIで速くしたい方におすすめです。
  • 自分がよく使うコマンドを記載します。

sfdx-git-deltaとは

image.png

git のコミット間の差分、ブランチ間の差分、tag間の差分 diff から
package.xmldestructiveChanges.xmlを自動生成します。

例えば、以下のようなコードを追加してコミットします。

Test.cls
public with sharing class Test {
  public Test() {
  }
}

この後リリースをするためには、以下のようなパッケージを作成する必要があります。

package.xml
<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
+   <types>
+       <members>Test</members>
+       <name>ApexClass</name>
+   </types>
    <version>56.0</version>
</Package>

sfdx-git-deltaを利用すると以下のコマンドで同一の結果が得られます。

# 最新のコミットと一つ前のコミットの差分でpackageを作成
$ sfdx sgd:source:delta --to "HEAD" --from "HEAD~1" --output "."

インストール

前提として Salesforce CLIがセットアップされている必要があります。

$ sfdx plugins:install sfdx-git-delta

コマンド

自分が利用するコマンドを記載します。

現在のブランチとmainブランチとの差分でパッケージを作成

git rev-parse --abbrev-ref @で現在のブランチ名が取得できます。

$ sfdx sgd:source:delta --to "$(git rev-parse --abbrev-ref @)" --from "main" --output "."

最新のコミットと一つ前のコミットの差分でパッケージを作成

git rev-parse --abbrev-ref @で現在のブランチ名が取得できます。

$ sfdx sgd:source:delta --to "HEAD" --from "HEAD~1" --output "."

タグ間の差分でパッケージを作成

CI/CDでタグ作成をトリガーで動かす場合に、ひとつ前のタグと最新のタグの差分でリリースパッケージを作成する等で使えるともいます。

最新のタグに関しては、git describe --tags --abbrev=0で取得し、
一つ前のタグに関してはgit describe --abbrev=0 --tags --exclude=$(git describe --abbrev=0 --tags)で取得しています。

sfdx sgd:source:delta --to "$(git describe --tags --abbrev=0)" --from "$(git describe --abbrev=0 --tags --exclude=$(git describe --abbrev=0 --tags))" --output "."

さいごに

sfdx-git-delta以外でパッケージを作るなら?

VSCodeの拡張機能でGUIでパッケージ作成できるものがあります。
開発チームの体制によって、拡張機能かsfdx-git-deltaもしくは併用するという選択肢もあると思います。

快適なSalesforceDXライフを〜

他にもこんな感じでpackage作るの楽だよ!等あったら教えてください。

参考

5
1
0

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
5
1