LoginSignup
2
0

More than 3 years have passed since last update.

Goで.NETに強いCIツールAppVeyorを試す

Last updated at Posted at 2019-04-29

AppVeyor?

AppVeyor
Windows and Linux用のSass系のCIツールです。
.NETに強い印象です。

対象

GoのCLIツールをWindowsで動作確認したいが、手動は流石に面倒だと思っている方

モチベーション

  • WindowsとMacで使える業務効率化の社内ツールを作成する必要があった
  • 筆者は基本的にMacを利用しているため、Windowsの動作確認が面倒だった
  • OSSのREADMEでAppVeyorのバッジをよく見かけたので試したかった

環境

  • go 1.12.x

appveyor.ymlの全体構成

appveyor.ymlの構成は、最終的に以下のようになりました。

appveyor.yml
# appveyor.yml
# defaultだと、MSBuildモードになるのでoff
# MSBuildモードについては、参考記事参照願います
build: off

clone_folder: c:\mycoolcmd

environment:
  GO111MODULE: on

stack: go 1.12.3 x64

install:
  - cinst -y make sed zip

build_script:
  - scripts\windows\build.bat
  - zip -l -r -j mycoolcmd.zip build/* # change to CRLF

test_script:
  - scripts\windows\test.bat
  - dir

artifacts:
  - path: mycoolcmd.zip

ポイント解説

Chocolatey

  - cinst -y make sed zip

ビルドやテストで必要となるコマンド類を一通り落とします。
Chocolateyは、Windowsのパッケージ管理ツールでAppveyorのイメージに標準で入っています。
choco installを略してcinstとすることが可能です。

Go modules

appveyor.yml
environment:
  GO111MODULE: on

stack: go 1.12.3 x64
...
build_script:
  - scripts\windows\build.bat
  - zip -l -r -j mycoolcmd.zip build/* # change to CRLF

GOPATH modeではくmodule-aware modeでビルドしています。
go buildで依存のあるライブラリを一通りダウンロードし、ビルドしてくれます。
ビルド後は、設定ファイルをCRLF形式にしたいので、zip-lオプションをつけて圧縮しています。
(バイナリに対しては無視されます)
これは、ユーザーがメモ帳で設定ファイルを開いた際に、設定ファイルが一行に見ないようにするためです。

補足ですが、ビルドスクリプトは、以下のような形です。

build.bat
go build -o .\build\mycoolcmd.exe
cp settings.toml .\build\settings.toml

因みにGOPATH modeの場合は、環境変数に$GOPATHを設定し、その中にプロジェクトをクローンする必要があります。

テスト

テストとはいえ、正常系のコマンドを実行してエラーにならないか程度を確認しています。

appveyor.yml
test_script:
  - scripts\windows\test.bat
  - dir
test.bat
# ビルドしたディレクトリをコピー
XCOPY /Y /I build wintest
# 設定ファイルを書き換え
TYPE settings.toml |sed -e s/hogehoge@/%email%/g -e s/hogehoge/%password%/g>.\wintest\settings.toml
cd .\wintest
# GoのCLIアプリを実行
mycoolcmd.exe

%email%%password%は、AppVeyorの設定で外部から見えないようしている環境変数です。
TYPEはwindowsのコマンドで、linuxのcatをイメージしてください。
TYPEsedの共同作業で、設定ファイルを書き換えています。

artifacts

appveyor.yml
artifacts:
  - path: mycoolcmd.zip

とても便利な機能、pathで指定したファイル群をアップロードしてくれます。
AppVeyorのコンソール上からダウンロードします。
リビジョンごとのビルド済み資材の管理出来ます。

appveyor使ってみた感想

  • installartifactsのフェーズでVM側の問題でエラーになることがあった、ymlが原因かVMが原因か分からず切り分ける必要があった
  • chromeが標準で入っており、chromedriver.exeを落とせば、クローリング・スクレイピングをするツールのテストはすぐ出来る
  • 割とサクッとwindowsで動作確認ができるので、非常に便利

参考

AppVeyor Build configuration

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0