FrontISTRをCI/CDを使ってビルドする方法(windows版)
FrontISTRをソースコードからビルドしたい!
非線形有限要素法の解析コードであるFrontISTRはオープンソースで誰でも中身を改変することができ、ビルドしてexe形式で使うことができます。ただ、windowsの場合、公式の方法でビルドするのは難易度が高く、特に環境構築が難しく、別の方法がないかと模索していました。
調べてみると、FrontISTRはGitLabで管理されており、GitLabにpushするとCI/CDツールにより、自動的にビルドされるという環境が既に用意されていることを発見し、今回はその方法を説明します。
想定環境
OS:window10 pro
Docker:Docker desktop導入済み
GitLabへの登録
まず、GitLabに自分のアカウントを作成してください。
基本的に無料で使うことができますが、GitlabのCI/CD機能はクラウド版(課金)とローカル版(自前のdockerをつかうので無料)があり、ローカル版を使うときはdockerを使う必要があります。
以下はローカル版を導入する方法を説明しており、自前のDockerとGitLabを連携させていきます。
DockerでCI/CD機能を有効にする方法
dockerでCI/CD機能を実行するための方法は以下の通りです。
公式のページはこちらです。
- まず、Cドライブ直下に"GitLab-Runner"という名前の空フォルダを作成
- さきほどの公式ページの"64-bit"(使用PCが64bitの場合)をクリックしてgitlab-runner-windows-amd64.exeファイルをダウンロードします。そして、先ほど作成した"GitLab-Runner"フォルダの中にそのexeファイルをいれてください。
- 管理者権限でターミナル(コマンドプロンプト)を起動
cd C:\GitLab-Runner
.\gitlab-runner-windows-amd64.exe install
.\gitlab-runner-windows-amd64.exe start
- GitlabRunnerをサービスに登録
FronTISTRのGitLabです。これをgit cloneしてご自身のGitlabアカウントにpushする、もしくはforkしてください。(gitの扱いに慣れていない人はforkした方が簡単かもしれません)
自分のGitLabアカウントにページを移動して、FrontISTRのプロジェクト →Settings→CI/CD を開き、Runners の expand をクリックしてください。
Setup a specific Runner manually内にある URL と Token を確認しつつ、 ターミナルに
.\gitlab-runner-windows-amd64.exe register
で実行させます。
上記のように先ほど確認したGitLabのURLとTokenをターミナルの指示に従い入力し、さらに任意の登録名とTagを入力してください。途中でデフォルトの環境をどれにするか聞かれると思うので(ruby2.8など)任意のものを打ち込んでください。私はpythonをよくつかうので、とりあえずpython3.8としました。
入力すると、どのモードで実行するかを聞かれるので「docker」を選択してください。
登録が完了すると、GitLab 側に Runner が登録されます。
これでGitLabでCI/CDツールが使える環境を構築しました。
- ".gitlab-ci.yml"ファイルを含んだFrontISTRのソースフォルダすべてをGitLabにpushすると自動でビルドされます。ビルドにかかる時間は40~50分程度となります。
ちゃんとDockerが動いているかをDockerDesktopで確認することができます。
git pushされると、".gitlab-ci.yml"ファイルが起動して自動ビルドがされています。
自分のGitLabのFrontISTRを確認してください。CI/CDをクリックし、
Jobsをクリックし、windowsバイナリ版のビルドされた artifacts(成果物)は上から3つの中にあります。(一番上のX86_64-w64-mingw32/hybrid-impi-mkl_intelthreadは最も高速に行列計算をしてくれるintel mklを採用しているバージョン)X86_64-w64-mingw32/hybrid-impi-mkl_intelthreadをクリックし、
Job artifacts のDownloadを押すと、ローカルにzip化されたファイルがダウンロードされます。
最後に
オープンソースのコードはビルドの成功が環境によって大きく依存しますが、CI/CDツールをつかうと、Dockerをつかって環境構築を自動でやってくれるのでドンドン使ってオープンソース活動をやっていきましょう!
Discussion