2017年8月14日月曜日

Windows で terminal と lua を有効にした vim をビルドする

前提環境

  • Windows 10 Pro
  • Msys2 インストール済み
    • 今回の作業はすべて MSYS2 MinGW 64-bit 上で行う

vim.exe, gvim.exe のビルド

if_lua を使いたいので lua のソース準備を含めて実施。 exe 以外は vim80-kaoriya-win64 のものを流用するので、 lua のバージョンは 51 とする。

cd ~/project
git clone -b v5_1_1 https://github.com/lua/lua.git
git clone https://github.com/vim/vim.git
cd vim/src
mingw32-make.exe -f Make_ming.mak GUI=no ARCH=x86-64 TERMINAL=yes LUA=~/project/lua DYNAMIC_LUA=yes LUA_VER=51
mingw32-make.exe -f Make_ming.mak GUI=yes ARCH=x86-64 TERMINAL=yes LUA=~/project/lua DYNAMIC_LUA=yes LUA_VER=51

winpty のビルド

:terminal に必要なバイナリを作成する。

cd ~/project
git clone https://github.com/rprichard/winpty
cd winpty
./configure
make

パッケージング

何をどうすればよいかよくわからないので、 vim80-kaoriya-win64 の vim.exe, gvim.exe を入れ替えることにする。

cp -a ~/app/vim80-kaoriya-win64 ~/app/vim80-kaoriya-win64-terminal
cp ~/project/vim/src/vim.exe ~/app/vim80-kaoriya-win64-terminal
cp ~/project/vim/src/gvim.exe ~/app/vim80-kaoriya-win64-terminal
cp ~/project/winpty/build/winpty.dll ~/app/vim80-kaoriya-win64-terminal/
cp ~/project/winpty/build/winpty-agent.exe ~/app/vim80-kaoriya-win64-terminal/

これで、 ~/app/vim80-kaoriya-win64-terminal の gvim.exe を叩けば terminal 機能付きの gvim が起動する。

以上。

Windows でのビルド方法についての情報

この辺のビルド情報って、ドキュメントのどのあたりに書いてあるんだろうかと思って grep した。 そうすると、 INSTALLpc.txt, terminal.txt に記載されているのが見つかった。なるほど。

INSTALLpc.txt

13. Building with Terminal support
==================================

Vim with Terminal support can be built with either MSVC, MinGW or Cygwin.
This uses the included libvterm and winpty.  No extra header files or
libraries are needed for building.  Just set TERMINAL to yes.

E.g. When using MSVC:

    nmake -f Make_mvc.mak TERMINAL=yes

Or when using MinGW (as one line):

    mingw32-make -f Make_mingw.mak TERMINAL=yes

terminal.txt

MS-Windows ~

On MS-Windows winpty is used to make it possible to run all kind of commands.
Obviously, they must be commands that run in a terminal, not open their own
window.

You need the following two files from winpty:

    winpty.dll
    winpty-agent.exe

You can download them from the following page:

    https://github.com/rprichard/winpty

Just put the files somewhere in your PATH.

参考資料

2017年7月21日金曜日

Docker 公式 image の Jenkins に JavaFX プロジェクトのビルドをしてもらうためにやったことメモ

やりたいこと

このプロジェクトを Jenkins にビルドしてほしいのです。

前提条件

この記事には初期設定書いていないけれど、 Install suggested plugins を選択して初期設定を行った。

やったこと

OS へ必要なパッケージをインストール

JavaFX のパッケージが足りないので入れる。

docker-compose exec -u root jenkins /bin/bash
apt update
apt upgrade
apt install openjfx
apt-get clean
exit

Jenkins 全体の設定

環境変数設定

JavaFX を扱うため、 build.gradle に下記のような設定がされている。

compile files(JAVA_HOME + '/jre/lib/ext/jfxrt.jar')

そのため、Jenkins に ORG_GRADLE_PROJECT_JAVA_HOME の環境変数が設定されている必要がある。

設定方法は下記の通り。

  • Jenkinsの管理 -> システムの設定 -> グローバルプロパティ
    • 環境変数のチェックボックスを ON にする
    • 下記 2 つの環境変数を追加
      • キー: JAVA_HOME, 値:/usr/lib/jvm/java-8-openjdk-amd64/
      • キー: ORG_GRADLE_PROJECT_JAVA_HOME, 値:$JAVA_HOME

新しいジョブの作成

ジョブの名前と種類選択

  1. Enter an item name: Yadome
  2. 「フリースタイル・プロジェクトのビルド」を選択
  3. OK

ビルド定義

General

  • GitHub project にチェック
    • Project url: https://github.com/mikoto2000/Yadome

ソースコード管理

  • Git を選択
    • リポジトリ
      • リポジトリURL: https://github.com/mikoto2000/Yadome

ビルド環境

  • 「コンソール出力にタイムスタンプを追加する」にチェック

ビルド

  • Invoke Gradle script
    • 「Make gradlew executable」にチェック
    • Use Gradle Wrapper
      • Wrapper location: ./
      • Tasks: build

ビルド後の処理

Yadome では各種レポートを html 出力しているので、もうそれそのまま Jenkins に取っておいてもらえばいいじゃんという考えで設定。

  1. 成果物を保存
    • 保存するファイル: build/reports/**/*

ビルド結果

こんな感じで、レポートの html 出力を参照できるのでこの辺はとりあえず妥協できるかなと。

統計情報出したくなったら xml 出力にしてきちんとプラグイン設定する感じで。

イメージの作成

ビルドできることを確認したので、 Dockerfile を作ってイメージ作成する。

mkdir -p ~/project/docker/jenkins-with-openjfx
cd ~/project/docker/jenkins-with-openjfx
gvim Dockerfile

■ Dockerfile

FROM jenkins

USER root

RUN apt -y update
RUN apt -y upgrade
RUN apt -y install openjfx
RUN apt-get clean

USER jenkins

そして、 jenkins-with-openjfx という名前でビルドする。

docker build -t jenkins-with-openjfx .

で、 jenkins の docker-compose.yml をもとに、with openjfx のファイルを作る。

■ docker-compose.yml

version: '3'
services:
    jenkins:
        image: jenkins-with-openjfx
        volumes:
            - jenkins_home:/var/jenkins_home
        ports:
            - "8080:8080"
            - "50000:50000"
        environment:
            - JAVA_OPTS="-Djava.util.logging.config.file=/var/jenkins_home/log.properties"
        entrypoint: ["/bin/tini", "--", "/usr/local/bin/jenkins.sh"]
volumes:
    jenkins_home:
        external: true

これで、このディレクトリで docker-compose up -d jenkins すれば、Yadome プロジェクトのビルドができるようになった。

※ 記事を修正するのが面倒なのでここには書いていないが、ビルド成果物に build/libs/*jar を追加した。

作ったものは Github に上げた。

以上。

2017年7月20日木曜日

Docker の公式 Jenkins イメージを使う

イメージの取得

docker pull jenkins

docker-compose.yml の作成

version: '3'
services:
    jenkins:
        image: jenkins
        volumes:
            - jenkins_home:/var/jenkins_home
        ports:
            - "8080:8080"
            - "50000:50000"
        environment:
            - JAVA_OPTS="-Djava.util.logging.config.file=/var/jenkins_home/log.properties"
        entrypoint: ["/bin/tini", "--", "/usr/local/bin/jenkins.sh"]
volumes:
    jenkins_home:
        external: true

jenkins 用の volume 作成

docker volume create --name=jenkins_home

コンテナ実行

docker-compose up -d jenkins

http://localhost:8080/ にアクセスすると、「初期パスワードは /var/jenkins_home/secrets/initialAdminPassword に書いてあります」って言われるのでそれを確認する。

docker-compose run jenkins cat /var/jenkins_home/secrets/initialAdminPassword

今日はここまで。