Upgrade to Pro — share decks privately, control downloads, hide ads and more …

仕事でGoで書いたWindows向けの小さなアプリをAppVeyorを使ってCIした話

 仕事でGoで書いたWindows向けの小さなアプリをAppVeyorを使ってCIした話

第8回ゆるはち.it: CI/CDについてゆるく話す - https://yuruhachi-it.connpass.com/event/123888/
での LT 資料です。

Daichi Hioki

March 27, 2019
Tweet

More Decks by Daichi Hioki

Other Decks in Technology

Transcript

  1. AppVeyor とは - Windows 環境の CI ができるやつ - (Windows 以外も対応してるけど・・)

    - 価格 - Public なリポジトリなら無料 - 2019年3月時点で Private なリポジトリ は $29/month
  2. Build Worker Image - 現時点でのデフォルト: - Visual Studio 2015 -

    ubuntu 等も選択可能 - ubuntu を Worker Image に 使った Getting started ページも ある - Getting started with AppVeyor for Linux | AppVeyor
  3. appveyor.yml に変更があったら cache からの restore を skip する こちらは Windows

    のコマンド > https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/if if [not] exist <FileName> <Command> [else <Expression>] 公式でまだ Go1.12 がサポートされていないためソースからインストール msiexec /i でインストール https://docs.microsoft.com/ja-jp/windows/desktop/Msi/command-line-options あらかじめ environment の箇所で環境変数 GOBIN を c:\gobin に設定しているため、$ go install した時に c:\gobin 以下にツールをインストールしてくれる どこでもよさそう。Go の Modules 導入以前は制限があったかも。 Go のモジュールシステムが過渡期なのでこのような指定が必要 詳細: https://github.com/golang/go/wiki/Modules
  4. GoReleaser の設定ファイルは .goreleaser.yaml - builds の goos と goarch で

    指定した組み合わせをすべ て生成してくれる - 右の例では 6 通り
  5. GoReleaser には環境変数 GITHUB_TOKEN が必要 - GoReleaser を使ってリリースするためには repo の scope

    を 持った GitHub token を環境変数 GITHUB_TOKEN に設定 する必要がある
  6. あとは tag を push するだけ - tag を push するだけで

    GitHub Releases にリリース が作成される
  7. - 話したこと - AppVeyor の概要: - 設定方法、Build Worker Image、Stack、Build Cache

    - プロジェクトでの実例: - Go1.12 をソースからインストールして statik もインストールしてテスト - AppVeyor + GoReleaser: - AppVeyor と GoReleaser を組み合わせて、tag を push した時に自動で GitHub Releases に publish - その他 - 今回試していなかったけれど、コードが大きい場合は Azure Pipelines の方が良い かも? - https://azure.microsoft.com/ja-jp/services/devops/pipelines/ - Public なリポジトリなら無料で 10 個の並列ジョブ(時間制限なし)を実行可能ら しい