Windows環境でgoreleaserを使用してGitHubにデプロイしてみた
前書き
どうもです。
以前Ubuntu環境でgoreleaserを使用してGitHubにデプロイする作業について記事を作成しましたが、今回はそれのWindows環境版です。
前の記事については下記を参照してください。 http://usernameon666.hatenablog.com/entry/2017/10/08/125842
やってることはほとんど同じですが、デプロイのスクリプトをbashでやってるかPowerShellでやってるかという違いだけですね。
開発環境
項目 | 値 |
---|---|
OS | Windows 10 Home |
Go version | 1.9.2 |
使用スクリプト | PowerShell |
成果物
game-manager
ゲームのプレイ時間を記録してCSVファイルとして保存するTUIアプリ
わざわざ作るほどのものでもないのですが、まぁ勉強用ということで...
同様のゲームのプレイ時間が把握できるもので僕が使用したことがあるのは
SteamやMoeL2などがあったのですが、あれと同じようなもので
ターミナル上で動作するものを作成してみたかったんです。
「みんなのGo言語」に登場したtermbox-goとHOME配下のconfigフォルダにデータを格納する手順を勉強するために作成しました。
リリース手順
GitHubにリポジトリの作成
今回は下記の通り game-manager というリポジトリを作成しました。 https://github.com/jiro4989/game-manager
GoReleaserの設定ファイルの作成
.goreleaserという設定ファイルを$env:GOPATH/src/game-manager配下に作成します。
PS C:\Users\username\go\src\game-manager> pwd Path ---- C:\Users\username\go\src\game-manager PS C:\Users\username\go\src\game-manager> ls ディレクトリ: C:\Users\username\go\src\game-manager Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2017/12/24 20:05 data d----- 2017/12/24 20:55 dist d----- 2017/12/24 19:59 game d----- 2017/12/24 20:51 res d----- 2017/12/24 20:54 script -a---- 2017/12/24 20:48 19 .gitignore -a---- 2017/12/24 20:22 322 .goreleaser.yml -a---- 2017/12/24 20:04 5082 game-manager.go -a---- 2017/12/23 5:53 622 README.md
.goreleaserに設定を記入
.goreleaser.ymlの中身を下記の通りにする。
builds: - binary: game-manager goos: - windows - darwin - linux goarch: - amd64 - 386 archive: format: tar.gz replacements: amd64: 64-bit darwin: mac linux: linux name_template: "{{ .ProjectName }}_{{ .Os }}_{{ .Arch }}" files: - README.md
デプロイスクリプトを作成
$env:GOPATH\src\game-manager\script
に下記の内容のデプロイ用のPowerShellスクリプト"deploy.ps1"を作成します。
※別にスクリプトを作成しないといけないわけではないです。
git tag $args[0] $env:GITHUB_TOKEN = cat ".\res\token.txt" goreleaser --rm-dist go install
GitHubのアクセストークンを配置
$env:GOPATH\src\game-manager\res\token.txt
というテキストファイルを作成して、GitHubのアクセストークンを貼り付けます。
あんまりこういう運用方法って良くないと思いますけれど、まぁ個人で行う分には気にしないことにしています。
.gitignoreを作成する
デプロイするバイナリとtoken.txtがリポジトリ上に見えてしまうとまずいので それらを除外するように設定します。
.gitignoreの中身は下記のとおりです。
配置するパスは$env:GOPATH\src\game-manager
です。
token.txt /dist/
スクリプトを実行する
下記のパスがカレントディレクトリであることを確認します。
PS C:\Users\username\go\src\game-manager> pwd Path ---- C:\Users\username\go\src\game-manager
下記のコマンドを実行します。
.\script\deploy.ps1 v1.0.0
※v1.0.0はタグ情報になるので、アップデートするたびに番号を更新する必要があります。
あとはひたすら待機...
※PowerShell環境だと、制御コードがむき出しで表示されてパッと見バグったか失敗したように見えることがありますが、正常に動いているので、信じて待ちます。
リリースの確認
GitHubのリリースページを確認しにいきます。 https://github.com/jiro4989/game-manager/releases