記事
· 2020年4月28日 6m read

GitLabを使用したInterSystemsソリューションの継続的デリバリー - パートIII:GitLabのインストールと構成

この連載記事では、InterSystemsの技術とGitLabを使用したソフトウェア開発に向けて実現可能な複数の手法を紹介し、議論したいと思います。 次のようなトピックについて説明します。 

  • Git 101 
  • Gitフロー(開発プロセス) 
  • GitLabのインストール 
  • GitLabワークフロー 
  • 継続的デリバリー 
  • GitLabのインストールと構成 
  • GitLab CI/CD 

第1回の記事では、Gitの基本、Gitの概念を高度に理解することが現代のソフトウェア開発にとって重要である理由、Gitを使用してソフトウェアを開発する方法について説明しています。

第2回の記事では、アイデアからユーザーフィードバックまでの完全なソフトウェアライフサイクルプロセスであるGitLabワークフローについて説明しています。 

この記事では以下について説明します。 

  • GitLabのインストールと構成 
  • 利用環境のGitLabへの接続 

GitLabのインストール 

GitLabをオンプレミス環境にインストールします。 GitLabのインストール方法は多彩で、ソースやパッケージからインストールしたり、コンテナーにインストールしたりできます。 ここではすべての手順を実際に説明するつもりはありませんが、そのためのガイドを紹介します。 ただし、それでもいくつか注意すべき点があります。 

前提条件: 

  • 独立したサーバー - ウェブアプリケーションであるGitLabはかなりのリソースを消費するため、独立したサーバーで実行することをお勧めします。 
  • Linux 
  • (任意ですが強く推奨)ドメイン - ページを実行し、セットアップ全体を保護するために必要です。 

構成 

まず、通知メールを送信する必要があるかと思います。 

次に、Pagesをインストールすることをお勧めします。 前の記事で説明したように、スクリプトのアーティファクトはGitLabにアップロードできます。 ユーザーはそれらのアーティファクトをダウンロードできますが、ブラウザで直接開くことができれば便利です。そのためにページが必要になります。 

Pagesが必要な理由: 

  • プロジェクト用に生成されたWikiや静的ページを表示するため 
  • HTMLアーティファクトを表示するため 
  • Pages を使ってその他のことを実現するため

また、HTMLページはonloadでリダイレクトを設定できるため、必要な場所へユーザーをリダイレクトさせることができます。 例えば、最後に実行されたユニットテスト(HTMLを生成した時点)にユーザーをリダイレクトするHTMLページを生成するコードは次のとおりです。 

ClassMethod writeTestHTML()
{ 
    set text = ##class(%Dictionary.XDataDefinition).IDKEYOpen($classname(), "html").Data.Read()
    set text = $replace(text, "!!!", ..getURL())
    set file = ##class(%Stream.FileCharacter).%New()
    set name = "tests.html"
    do file.LinkToFile(name)
    do file.Write(text)
    quit file.%Save()
}

ClassMethod getURL()
{
    set url = "http://host:57772"
    set url = url _ $system.CSP.GetDefaultApp("%SYS")
    set url = url_"/%25UnitTest.Portal.Indices.cls?Index="_ $g(^UnitTest.Result, 1) _ "&$NAMESPACE=" _ $zconvert($namespace,"O","URL")
    quit url
}
XData html 
{    
<html lang="en-US">
  <head>
  <meta charset="UTF-8"/> 
  <meta http-equiv="refresh" content="0; url=!!!"/> 
  <script type="text/javascript">window.location.href = "!!!"</script> 
  </head> 
  <body> 
  If you are not redirected automatically, follow this <a href='!!!'>link to tests</a>.
  </body>
</html>
}

ただし、私がPagesを使用した際にはバグが発生しました(アーティファクトを閲覧中に502エラーが発生しました)。こちらで修正されています。  

利用環境のGitLabへの接続  

CDスクリプトを実行するには、アプリケーションを実行するように構成されたサーバー環境が必要です。 LinuxサーバーにInterSystems製品がインストールされていると仮定します(InterSystems IRISだけでなく、これはCachéとEnsembleでも動作します)。以下の手順では、環境をGitLabに接続します。  

  1. GitLab Runnerをインストールする 
  2. ランナーをGitLabに登録する 
  3. ランナーがInterSystems IRISを呼び出せるようにする 

GitLab Runnerのインストールについて重要な注意事項があります。GitLab Runnerをインストールした後にサーバーの複製を作成しないでください。その結果は予測不能であるため、まったく推奨されません。 

ランナーをGitLabに登録する 

まず、以下を実行します。

sudo gitlab-runner register  

その後、いくつかのプロンプトが表示されます。ほとんどの手順は非常に簡単ですが、中には複雑なものもあります。 

このランナーのgitlab-ciトークンを入力してください 

以下のような複数のトークンを利用可能です。 

  • システム全体用(管理設定で利用可能) 
  • 各プロジェクト用(プロジェクト設定で利用可能) 

ランナーを接続して特定のプロジェクトのCDを実行する際には、そのプロジェクトのトークンを指定する必要があります。 

このランナーのgitlab-ciタグを入力してください(カンマ区切り): 

CDの構成では、どのスクリプトをどのタグで実行するかを絞り込むことができます。 そのため、最も単純なケースでは環境名となるタグを1つ指定します。 

次のいずれかのexecutorを入力してください:ssh、docker+machine、docker-ssh+machine、kubernetes、docker、parallels、virtualbox、docker-ssh、shell: 
docker 

Dockerのない通常のサーバーを使用している場合は、shell を選択してください

ランナーがInterSystems IRISを呼び出せるようにする 

ランナーをGitLabに接続した後、InterSystems IRISとやり取りできるようにする必要があります。

  1. gitlab-runnerユーザーがcsessionを呼び出せるようにする必要があります。 そのためには、該当ユーザーを irisusr (irisuser) または cacheusrグループに追加します。  
    • usermod -a -G irisusr gitlab-runner 
  2. InterSystems IRISで gitlab-runner ユーザーを作成し、CDのタスク(DBへの書き込みなど)を行う役割を付与してください。 
  3. OSレベルの認証を許可します。 

2と3に関してはユーザーやパスの受け渡しといった他の方法を使用できますが、OS認証が望ましいと思います。 

まとめ 

このパートでの実施内容: 

  • GitLabをインストールしました 
  • 環境をGitLabに接続しました 

リンク 

次の内容 

次のパートでは、継続的デリバリーの構成を書きます。 

ディスカッション (0)1
続けるにはログインするか新規登録を行ってください