abapGitを触ってみた(GitHub編)

この記事を書いたメンバー:

SAITO Keita

abapGitを触ってみた(GitHub編)

目次

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 URLhttps://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を選択

NamePackageを入力してチェックを選択
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でやってみるか? という動機で触ってみましたがすんなり動きました。


























カテゴリー
タグ

この記事を書いたメンバー

SAPシステムや基幹システムのクラウド移行・構築・保守、
DXに関して
お気軽にご相談ください

03-6260-6240 (受付時間 平日9:30〜18:00)