スタジオとGitHubとの連携環境の構築
開発者のみなさん、こんにちは。
vscode上で動作するObjectScriptエクステンションがリリースされ、vscodeを開発環境として使用できるようになり、GitHubリポジトリと連携できるようになりました。その一方で、使い慣れたIRISやCacheのスタジオからGitHubを扱いたいという要望は根強くあり、GitHubと連携するツールがOpen Exchange上にいくつか公開されています。
そこで、Open exchangeに収録されているツールの中で新しい「git for shared development environment」を使い、環境を作成してみましたので、その手順をお伝えします。
ご利用される際のご参考になれば幸いです。
Git for windows のインストール
Git for windows のサイト よりキットをダウンロードし、そのexeファイル (git-2.xx.xx xx-bit.exe) を起動します。ライセンスの確認画面が表示されますので、「Install」ボタンをクリックします。
SSHキーペアの作成
コマンドプロンプトを起動し、ssh-keygen コマンドを実行します。
C:\Users\username> ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\username/.ssh/id_rsa): <-- Enter
Enter passphrase (empty for no passphrase): <-- Enter
Enter same passphrase again: <-- Enter
Your identification has been saved in C:\Users\username/.ssh/id_rsa.
Your public key has been saved in C:\Users\username/.ssh/id_rsa.pub.
:
C:\Users\username>注意:このツールではSSHキーペアを使ってGitHubにアクセスすることを前提にしています。httpだとうまく動作しないことがありますので、ご注意ください。
GitHub への公開鍵の登録
WebブラウザにてGitHubのSSH公開鍵登録画面(https://github.com/settings/keys)にアクセス(GitHubアカウントへのログインが必要です)し、「New SSH key」をクリックします。
Add new画面にて、Titleに公開鍵の名称(何でも構いません)を入力し、Keyに先ほど作成したid_rsa.pubファイルの中身を貼り付け、「Add SSH key」ボタンをクリックします。
InterSystems Package Manager (IPM:旧ZPM)のインストール
以下のURLよりIPMのキット(zpm-0.x.x.xml)をダウンロードします。
https://pm.community.intersystems.com/packages/zpm/latest/installer
ダウンロードしたzpm-0.x.x.xmlを%SYSネームスペースにロードします。
USER> zn "%SYS" %SYS> do $SYSTEM.OBJ.Load(ファイル名,"c")
IPMをインストールいただくことで、簡単にOpen Exchangeに収録されている対応ツールやパッケージをダウンロード、インストールできます。特に依存関係のあるパッケージもインストールされますので簡単です。
Git for Shared Development Environment のインストール
Git for Shared Development Environmentは以下のOpenExchangeに掲載されており、スタジオからgitを使用してGitHubとの連携を行うツールです。
https://openexchange.intersystems.com/package/Git-for-Shared-Development-Environments
ターミナルを起動し、開発環境のネームスペースに移動、IPMを使用してインストールします。
USER> zn "DEV" DEV> zpm "install git-source-control"
設定メソッドを実行し、gitのパスやローカルリポジトリのフォルダ、SSH秘密鍵、Git操作ユーザを設定します。
DEV>d ##class(SourceControl.Git.API).Configure()
Configured SourceControl.Git.Extension as source control class for namespace DEV
Configured default mappings for classes, routines, and include files. You can customize these in the global:
^SYS("SourceControl","Git","settings","mappings")
Path to git executable: "C:\Program Files\Git\bin\git.exe" => <-- Enterのみ
Local git repo root folder: c:\temp\DEV\ => <-- ローカルリポジトリのフォルダを入力
Path to private key file (for ssh remotes): c:\Users\user\.ssh\id_rsa <-- 先ほど作成したSSH秘密鍵のファイル名
Event handler class for git pull:
SourceControl.Git.PullEventHandler.Default => <-- Enterのみ
Character to replace % symbol when importing %-classes into the file systems: <-- Enterのみ
Attribution: Git username for user 'username': username => <-- Git操作を行うユーザ名
Attribution: Email address for user 'username':
username@pc.company.com => <-- Git操作を行うユーザのメールアドレス
Settings saved.
DEV>ローカルリポジトリの初期化
Git for windowsバージョン2.35.2以降ではセキュリティが強化されており、ローカルリポジトリフォルダの所有者がローカルシステムアカウントでない場合、エラーが発生するようになりました。そのため、一旦フォルダを削除します。
C:\Users\username> rmdir C:\Temp\DEV
スタジオを起動し、開発環境のネームスペースに接続します。
「Git」メニューの「Initialize」をクリック、ローカルリポジトリを初期化します。
「Git」メニューが表示されないときは、管理ポータルを起動し、「システム管理」「構成」「追加設定」「ソースコントロール」をクリックしますと、以下のような画面が表示されます。
ここで画面左のネームスペースで開発環境のネームスペースを選択し、ソースコントロールクラス名にて「SourceControl.Git.Extension」クラスをクリック、画面上の「保存」ボタンをクリックします。
その後、スタジオを再起動することで「Git」メニューが表示されるようになります。
リモートリポジトリの設定とソースコードの取り込み
コマンドプロンプトより、リモートリポジトリ(github.com/username/xxx.git)を登録します
C:\Users\username> cd C:\Temp\DEV C:\Temp\DEV> git remote add origin git@github.com:username/xxx.git
リモートリポジトリからソースコードをpullし、テンポラリフォルダにソースコードを取り込みます。
C:\Temp\DEV> git pull origin master remote: Enumerating objects: 79, done. remote: Counting objects: 100% (79/79), done. remote: Compressing objects: 100% (51/51), done. remote: Total 79 (delta 14), reused 77 (delta 14), pack-reused 0 Unpacking objects: 100% (79/79), 42.87 KiB | 142.00 KiB/s, done. From github.com:miniclub/xxx * branch master -> FETCH_HEAD * [new branch] master -> origin/master
ブランチがmasterでない場合、以下のようにブランチ名を指定し、git checkoutで現在のブランチを変更してください。
C:\Temp\DEV> git pull origin dev
:
C:\Temp\DEV> git chekout devマッピング情報の変更
取り込んだリモートリポジトリのフォルダ構成に合わせてマッピング情報を変更します。
スタジオを起動し、開発環境のネームスペースに接続、「Git」「Settings」メニューをクリックします。
設定画面が表示されますので、「Mappings」欄に移動します。
表の左からソースコードの拡張子、名前、関連パスとなっており、赤枠で囲まれた関連パスをリポジトリのフォルダ構成に応じて変更します。
例えば、vscodeで作成したリポジトリではクラスやルーチンは全てsrcフォルダ配下に入りますので、それらの値は全て「src/」となります。
ソースコードのインポート
「Git」「Import (force)」メニューで、ローカルリポジトリフォルダのソースコードをIRISに読み込みます。
以上で、GitHubに登録されたリポジトリのソースコードをIRISに取り込むことができました。
クラスやルーチンを修正した後、各ファイルを表示した状態で「Git」「Commit changes to file」メニューをクリックすることで変更をコミットし、「Git」「Push to remote branch」でリモートリポジトリに反映させることが。
最後までお読みいただきありがとうございます。
一度お試しいただいて、ご意見やご質問等ございましたら、コメント欄に書き込みいただければと思います。
Comments
zpmをロードするメソッドが間違っていましたので、修正しました。
$SYSTEM.OBJ.Import(... ⇒ $SYSTEM.OBJ.Load(...