これは何?
- sfdx-git-deltaという、Salesforce CLIプラグインの紹介です。
- SalesforceDXを活用していてpackage作成に課題を感じている方や、リリースサイクルをCIで速くしたい方におすすめです。
- 自分がよく使うコマンドを記載します。
sfdx-git-deltaとは
git のコミット間の差分、ブランチ間の差分、tag間の差分 diff から
package.xml
とdestructiveChanges.xml
を自動生成します。
例えば、以下のようなコードを追加してコミットします。
public with sharing class Test {
public Test() {
}
}
この後リリースをするためには、以下のようなパッケージを作成する必要があります。
<?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作るの楽だよ!等あったら教えてください。
参考