目次
abapGitを触ってみた(GitHub編)
インフラ関係が多いBeeX技術ブログの中で少し毛色が異なりますが、ABAPな記事です。
元々ABAPer出身なので、ABAP系の記事をこれから少しゆるい感じで書く第一弾は「abapGitを触ってみた!」
そもそもabapGitって?
端的に言えばabapGitはABAPで書かれたGitクライアント。
ABAPのパッケージを切り口として下記サポートされたオブジェクトをgitリポジトリと同期してくれる。
Supported object types
ちなみにSAP Community Networkに下記ブログ記事が投稿されており。
abapGitの来歴とsaplinlkとの関係性やABAPer達への熱いメッセージが書いてあるので目を通すと面白いかと思います。
abapGitを利用する前提条件
- ABAP Version: SAP BASIS version 702 or higher.
- Works with: GitHub, GitLab, Assembla, Bitbucket, abapGitServer, HCP, TFS and more
ABAPのバージョンと利用できるリポジトリは上記のようになっており。githubやgitlab等々利用できるようです。
今回、同期先のリポジトリとしてGitHubを利用してみたいと思います。
abapGitのドキュメントとリポジトリ
基本的にabapGit documentationを見ていけばOKです。
Git?
申し訳ありませんが、本記事ではそもそもGitとは? という部分は省いて説明させて頂きます。
今回、GitとGithubが出てくるので触ったことが無いという方は、 gitのインストールとgithubにアカウントを作って、
- git clone
- git init
- git add
- git status
- git push
等のコマンドを試して、基本的な動作を理解するとこの記事の理解を助けることになるかと思います。
ONLINE Projects or OFFLINE Porjects
abapGitではリモートリポジトリとのやり取りの方法が
- ONLINE Projects
- OFFLINE Projects
上記2パターン存在し、ONLINE Projects利用時はSSLの設定が必須となるため、この2つの違いについて説明します。
ONLINE Projects
abapGitが動いている環境から直接リモートリポジトリに接続を行い、git clone・git commit・git pushを行います。
この方式を利用する場合はTRCD:STRUSTでSSLの設定が必須となります。
OFFLINE Projects
abapGitのリポジトリとgithubリモートリポジトリは直接接続はしない。
その代わりabapGitはオブジェクトを纏めたZIPファイルをインポート・エクスポートする。
エクスポートされたzipファイルを各自手作業(お好きなgitクライアント)でgithubへpushしていく。
abapGitが動いているSAPから直接リモートリポジトリに接続できない環境ではこの方式になります。
abapGitのインストール
手順的には上記ドキュメントの通りに進めていけば基本的にはOKです。(TRCD:STRUSTの所で一点特記事項あり)
一つずつ順を追って実施していきます。
下記ページに、abapGitのソースコードが記載されているのでコピペしてse38/se80で登録して行きます。
5万行を超えるABAPプログラムに一瞬、怯みそうになりますがコピペして保存して有効化して実行しましょう。
TRCD:SE38からプログラムzabapgitを登録。
初期挿入された行を全部削除して
コピーしたソースコードをペーストして保存を選択
有効化を選択
実行を選択
abapGitの画面が表示されればOKです。
STRUST/SSLの設定
ONLINE Projects(abapGitが直接リモートリポジトリと連携する)で利用する場合は、TRCD:STRUSTでsslの設定を行う必要があります。 ONLINE Porjectsを利用しない場合はこの手順は必要ありません。
証明書のエクスポート
TRCD:STRUSTで読み込ませる証明書をエクスポートする。
公式の手順ではchrome,firefoxと各種記載されていますが、本記事ではchromeを使ったものを紹介します。
chromeでgithub.comに接続する。
デベロッパーツール(F12 or Ctrl+Shift+I)を開いてセキュリティタブを選択してView certificateを選択。
詳細タブを開いてファイルにコピーを選択
次へを選択
次へを選択
エクスポート先を指定して次へを選択
完了を選択
公式の手順ではgithub.comの証明書をTRCD:STRUSTで追加しているだけですが。
この証明書だけで作業を進めていると、abapGitからgithubへpushする際に下記のようなエラーが発生しました。
abapGitのissueをのぞいてみると、下記issueが見つかりました。
2FA error while creating a branch #604
GitHubで二段階認証を利用しているかどうかのチェックにapi.github.comを利用しているっぽい。
結論だけ言えばapi.github.comの証明書を追加すると動くようになるので、こちらもエクスポートして追加していく。
chromeでapi.github.comに接続する。
デベロッパーツール(F12 or Ctrl+Shift+I)を開いてセキュリティタブを選択してView certificateを選択。
詳細タブを開いてファイルにコピーを選択
次へを選択
次へを選択
エクスポート先を指定して次へを選択
完了を選択
TRCD:STRUSTの設定
TRCD:STRUSTからエクスポートした証明書を読み込む。
TRCD:STRUSTを実行して、変更ボタンを選択
SSLクライアント(匿名)を選択して右クリックから作成を選択
チェックボタンを選択
証明書インポートを選択
先程エクスポートしたgithub.comのcerファイルを指定してチェックボタンを選択
証明書欄に、情報が表示されるので証明書一覧に追加を選択
証明書一覧にgithub.comが追加されたのを確認
api.githubを同様の手順で追加
証明書インポートからapi.github.comのcerファイルを指定してチェックボタンを選択
証明書欄に、情報が表示されるので証明書一覧に追加を選択
証明書一覧に*.github.comが追加されたのを確認
保存ボタンを選択
SSL接続のテスト
abapGit – ZABAPGIT_TEST_SSL
SSL接続のテストプログラムが上記に用意されているので接続テストを行ってみます。
上記ページからソースコードをコピペしてZABAPGIT_TEST_SSLを登録して実行します。
https://github.com
をテスト
urlにhttps://github.com
と入力して実行。 今回はproxyは利用しないので空欄。
https://api.github.com
をテスト
urlにhttps://api.github.com
と入力して実行。 今回はproxyは利用しないので空欄。
bapGit自体をabapGitのリポジトリとして管理する(ONLINE Porject設定時)
Tutorial画面に下記のようなボタンがあります。
install abapGit repo – To keep abapGit up-to-date (or also to contribute) you need to install it as a repository.
このボタンからabapGit自体をabapGitのリポジトリで管理する事ができます。
今回は、インストール時に$TMPでZABAPGITを登録しましたが$ABAPGITというローカルパッケージに上書きされます。
$ABAPGITというローカルパッケージにabapGitの各種オブジェクトが登録されました。
ONLINE ProjectsでabapGitを利用する
まずはcloneしてくるgithubリポジトリを新規作成する。
abapGitでcloneする時にリポジトリが空だと動かないのでREADME.mdを作成するように Initialize this repository with a README にチェックを付ける。
Create repository を選択
github上にリポジトリが作成されるので作成されたリポジトリのurlを控える。
abapGidtでclone
abapGitを起動して+Cloneを選択
Git clone URLを入力し、ターゲットとなるパッケージを選択する。
craete packageからパッケージの登録ができるので、今回はここからターゲットとなるパッケージを登録してそのパッケージを対象とする。
create packageを選択
下記のようなローカルパッケージを作成。
項目 | 設定値 |
---|---|
パッケージ | $helloworld |
内容説明 | helloworld |
ソフトウェアComp. | LOCAL |
パッケージタイプ | 開発パッケージ |
チェックを選択
下記のようなローカルパッケージを作成。
項目 | 設定値 |
---|---|
Git clone URL | https://github.com/beex-techblog/abapGit.HelloWorld.git |
Target Package | $HELLOWORLD |
OKを選択
abapGitにリポジトリが登録された。
作成したリポジトリにオブジェクトを追加する
abapGitで登録されたローカルパッケージ($HELLOWORLD)に対してレポートプログラムを一つ追加する。
ローカルパッケージ $HELLOWORLD
レポートプログラム ZGITHELLOを登録
保存を選択
保存を選択
abapGitから先程登録したリポジトリをみてみると、登録したレポートプログラムZGITHELLOが含まれているのが確認できる。
abapGitからGithubへプッシュ
Stageを選択
3つファイルが存在しているので、全部コミットしていきます。
Add all and commitを選択
ちなみに.abapgit.xmlというファイルについては.abapgit.xmlに詳細があります。
- committer name
- committer e-mail
- comment
を入力してCommitを選択
githubのユーザ名とパスワードを入力して実行を選択
githubの2段階認証を利用している場合はトークンの入力画面が出るのでトークンを入力してチェックボタンを選択
コミットされました
githubを見るとpushされているのを確認できます。
OFFLINE ProjectsでabapGitを利用する
今回は下記のような$OFFLINEというローカルパッケージを作成し、abapGitで管理する。
abapGitを起動して+Offlineを選択
NameとPackageを入力してチェックを選択
sample offlineprojectとして登録された事を確認
Export Zip
Export Zipを選択
ファイル保存のダイアログが表示されるので、パスを指定して保存を選択
出力されたzipファイルの中身を見ると
のようなファイルになっているので、このファイルを各自お好きなgit clientでadd/commit/pushして管理しましょう。
Offline Project ⇒ Online Project
Advanced -> Make on-line からOffline ProjectからOnline Projectへ変更することも出来たりします。
Git clone URLを入力してOKを選択する
Online Projectに変更されます。
SAPLINK的な機能
メニューのAdvancedから
Advanced -> Packge to zip(パッケージに紐づくオブジェクトをzipファイルでエクスポート)
Advanced -> Transport to zip(移送依頼に紐づくオブジェクトをzipファイルでエクスポート)
Advanced -> object to files(オブジェクトを指定してファイルでエクスポート)
のように、各種オブジェクトをエクスポートする機能があります。
総評
ソース管理を補強する機能として、さっくりとインストール出来て手軽に利用できるのは便利ですね。
当ブログでこれからABAP入門的な記事を書く際にサンプルコード等の扱いをどうするか考えた時にabapGitとgithubでやってみるか? という動機で触ってみましたがすんなり動きました。