tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:SalesforceプロジェクトとGitHub管理 (Mac版)

SalesforceプロジェクトをGitHubで管理する手順についてです。

はじめに

Terminalのコマンドからテキストエディタを起動できるようにしておきます。SublimeTextの場合はこちらの記事を見ながら設定できました。
($ subl "file name" でファイルを開けるようになります。)

Sublime TextをTerminalから起動できるようにする El Capitan対応


GitHubでssh接続できるようにします。その手順はこちらサイトが参考になりました。

gitHubでssh接続する手順~公開鍵・秘密鍵の生成から~

やることメモ

① .sshディレクトリに移動
$ cd ~/.ssh

② 公開鍵・秘密鍵を作成
$ ssh-keygen -t rsa

③ sshキーをGitHubに登録
https://github.com/settings/ssh

④ ~/.ssh/configファイルを作成
$ subl config

⑤ GitHubとの接続確認
$ ssh -T github


configファイル内容のメモ

Host github github.com
  HostName github.com
  IdentityFile ~/.ssh/id_rsa
  User <username>


これで記載のあったとおりに接続完了メッセージが表示されました。

Hi <name>! You've successfully authenticated, but GitHub does not provide shell access.


他にもインストールしたりの作業が必要になることがあるのでHomebrewも利用できるようにしておきます。

MacにHomebrewを導入する方法

Salesforceプロジェクトを用意

まずはローカル上にSalesforceプロジェクトを用意します。MavensMateを使っていますがForce.com IDEなど他のツールでも大丈夫です。
f:id:tyoshikawa1106:20180913062809p:plain

GitHubにリポジトリを作成

GitHubにリポジトリを作成します。
f:id:tyoshikawa1106:20180913063555p:plain

Terminalを起動して作業ディレクトリに移動

続いてTerminalでsalesforceプロジェクトのディレクトリに移動します。今回はprojectフォルダを作成し、その中にsalesforceフォルダを用意して作業しています。

$ cd project/salesforce/workspace/trailblazer

f:id:tyoshikawa1106:20180913063136p:plain

Gitの作業環境準備

Gitの作業環境準備します。

$ git init

これで.gitファイルが作成されます。
f:id:tyoshikawa1106:20180913063721p:plain


続いて.gitignoreファイルを作成します。giboコマンドが便利です。

$ gibo dump macOS Windows SublimeText VisualStudioCode Eclipse Node >> .gitignore

※ dumpから先は任意の内容。


giboについてはこちら。

Git:gitignoreを生成できるgiboを試してみました - Part 2 - tyoshikawa1106のブログ


これで.gitignoreファイルを用意できました。
f:id:tyoshikawa1106:20180913064148p:plain


Gitで管理不要なのは下記のファイルです。

# Salesforce Project
config/
package.xml

これは手作業で追加します。
f:id:tyoshikawa1106:20180913064539p:plain


.sublimeプロジェクトも不要です。コメントアウトされているので修正します。
f:id:tyoshikawa1106:20180913064645p:plain


.gitignoreファイルの編集もこれで完了しました。Gitの作業環境準備は以上になります。

GitHubへのアップロード

下記のコマンドを実行してGitHubにSalesforceプロジェクトのソースコードをアップします。

$ git add .

次のコマンドでGit管理対象となったファイルを確認できます。

$ git status

f:id:tyoshikawa1106:20180913065105p:plain


次のコマンドでコミットします。

$ git commit -m "first commit"

f:id:tyoshikawa1106:20180913065232p:plain


続いてGitの作業環境とGitHubを接続します。

$ git remote add origin <GitHubのリポジトリ参照>

f:id:tyoshikawa1106:20180913065458p:plain


最後にgit pushコマンドでGitHubにアップできます。

$ git push -u origin master

f:id:tyoshikawa1106:20180913065640p:plain


検証中、自分の作業環境では.gitignoreファイルがアップされない問題に遭遇しました。なぜかGit管理対象から除外されるファイルがある場合は「.gitignore_global」を確認すればいいみたいです。

$ subl .gitignore_global

確認したところ、ファイル内に.gitignoreが記載されていました。
f:id:tyoshikawa1106:20180913070704p:plain


自分の作業環境でのみ管理対象から除外したいファイルがある場合は「.gitignore_global」の仕組みで除外できるみたいです。今回記載されていた内容は過去によく理解せずに記載したものが残っていただけでした。「.gitignore_global」の内容を綺麗にすると.gitignoreファイルを管理対象に追加できました。

f:id:tyoshikawa1106:20180913071035p:plain

README.mdの作成とGitHubから最新情報を取得する。

GitHubにSalesforceプロジェクトをアップできたら画面上からREADME.mdファイルを作成してみます。

f:id:tyoshikawa1106:20180913071214p:plain

f:id:tyoshikawa1106:20180913071251p:plain


作成したら次のコマンドを実行してGitHubの最新の情報を取得します。

$ git pull


README.mdをローカル上に取得できると思います。

f:id:tyoshikawa1106:20180913071419p:plain


以上の手順でSalesforceプロジェクトをGitHubで管理する環境を構築できました。後は開発を行ったソースコードをgit commitやgit pushで管理していけると思います。

Sourcetreeをつかった管理

環境構築はTerminalでコマンドを実行して行いましたが、環境構築後の日常的なコミット作業やソースコードの差分チェックをTerminalから行うのは慣れがないと難しいと思います。その場合はAtlassianのSourcetreeが便利です。インストール後のセットアップ時にAtlassianアカウントが必要になりますが、初期設定完了後はGitHubと接続して作業が可能です。


初期設定が完了すると次のようにディレクトリをスキャンの表示があると思います。
f:id:tyoshikawa1106:20180913072202p:plain:w300


ここにSalesforceプロジェクトのディレクトリをドラッグ&ドロップやディレクトリを指定して追加します。
f:id:tyoshikawa1106:20180913072318p:plain:w300



これだけでSourcetreeをつかったGit管理が可能となります。
f:id:tyoshikawa1106:20180913072419p:plain


試しにREADME.mdファイルの内容を変更します。

# trailblazer

## Table of Contents
- [Requirements](#requirements)
- [Usage](#usage)
- [Link](#link)

## Requirements
- MavensMate

## Usage
### Create Salesforce Project
MavensMateでLocalにSalesforceのプロジェクトを作成。
```
/Users/<user>/project/salesforce/workspace/trailblazer
```

### Setup Git
```
$ cd project/salesforce/workspace/trailblazer
$ git init
$ git remote add origin <path>
$ git fetch origin
$ git reset --hard FETCH_HEAD
```

### Write package.xml (src/package.xml)  
```
<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
    <types>
        <members>*</members>
        <name>ApexClass</name>
    </types>
    <types>
        <members>*</members>
        <name>ApexComponent</name>
    </types>
    <types>
        <members>*</members>
        <name>ApexPage</name>
    </types>
    <types>
        <members>*</members>
        <name>ApexTrigger</name>
    </types>
    <types>
        <members>*</members>
        <name>AuraDefinitionBundle</name>
    </types>
    <types>
        <members>*</members>
        <name>StaticResource</name>
    </types>
    <version>39.0</version>
</Package>
```

### MavensMate Menu
● Refresh From Server...
- Salesforceから最新のコードを取得できます。
- プロジェクトフォルダを右クリックするとメニューが表示されます。
- 開発作業開始前に実行して差分がない状態にしてください。

### Git Manage Tool
Setup完了後はSourcetreeを使って作業を行います。

## Link
- [MavensMate](https://github.com/joeferraro/MavensMate)
- [Sourcetree](https://ja.atlassian.com/software/sourcetree)


Sourcetreeを見ると差分が表示されます。内容を確認してコミットしてください。
f:id:tyoshikawa1106:20180913072941p:plain

commit時のコメントは1行目にタイトル。2行目は空白。3行目以降に説明を入力する...という話を過去に聞いた気がします。

f:id:tyoshikawa1106:20180913073315p:plain


これをGitHubにプッシュするとREADME.mdが更新されていることを確認できると思います。
f:id:tyoshikawa1106:20180913073632p:plain

GitHubリポジトリからSalesforceプロジェクトを取得

上記でGitHubリポジトリを作成してSalesforceプロジェクトをアップするところまでできました。続いてGitHubからソースコードを取得して開発環境を整える方法です。


はじめにMavensMateでSalesforceのプロジェクトを作成します。枠だけあればソースコードは不要です。
f:id:tyoshikawa1106:20180914194543p:plain


Terminalを起動して作成したプロジェクトのディレクトリに移動します。
f:id:tyoshikawa1106:20180914194916p:plain


次の手順でコマンドを実行してGitHubからソースコードを取得します。

$ git init
$ git remote add origin git@github.com:tyoshikawa1106/trailblazer.git
$ git fetch origin
$ git reset --hard FETCH_HEAD

f:id:tyoshikawa1106:20180914195318p:plain


「$ git pull origin master」などが使えると思います。
f:id:tyoshikawa1106:20180914195636p:plain


問題がなければ先程枠だけ作成したSalesforceプロジェクトにGitHubのソースコードが反映されていると思います。
f:id:tyoshikawa1106:20180914195733p:plain


package.xmlはGit管理の対象外としているので任意の内容に更新します。あとはRefresh from ServerなどSalesforceに連携するコマンドもいつもどおりに実行できると思います。


SourceTreeの利用は上記のときと同じでドラッグ&ドロップするだけです。
f:id:tyoshikawa1106:20180914200102p:plain


これでSalesforceの開発を行いながらGitHubでバージョン管理を行うことができると思います。。
f:id:tyoshikawa1106:20180914200559p:plain


Salesforce DXを本格的に利用する場合は上記とは別の手順になりますが、とりあえずGitHubでバージョン管理したいという場合は上記の手順で対応可能だと思います。

関連記事