1. gis
Changes in body
Source | HTML | Preview
@@ -1,54 +1,54 @@
[中学2年生のときに作ったスクリーンセーバー](http://folioscope.hatenablog.jp/entry/2016/02/10/210828)を公開しましたが、現在は手元にVisual Studioでビルドする環境がありません。CIでビルドしようと思い調べてみたら、[AppVeyor](https://www.appveyor.com/)という.NET向けのCIを見つけました。この記事はGitHubとAppVeyorを連携させて、GitHub Releasesにビルド済みファイルを添付する方法を紹介します。最終的なReleasesが[こちら](https://github.com/ueokande/matrix.scr/releases)、ビルド結果が[こちら](https://ci.appveyor.com/project/ueokande/matrix-scr)になります。
AppVeyorとは
------------
-LinuxやOS X上の開発では[Circle CI](https://travis-ci.com/)や[Travis CI](https://circleci.com/)などLinuxが使われているCIが人気ですが、AppVeyorはWindows上で実行される.NET向けのCIです。もちろん今回のような.NETを使わないプロジェクトもビルドできます。AppVeyorにはビルドやテストだけでなく、デプロイする機能もあります。AppVeyorの用語をいくつか説明します。
+LinuxやOS X上の開発では[Circle CI](https://circleci.com/)や[Travis CI](https://travis-ci.com/)などLinuxが使われているCIが人気ですが、AppVeyorはWindows上で実行される.NET向けのCIです。もちろん今回のような.NETを使わないプロジェクトもビルドできます。AppVeyorにはビルドやテストだけでなく、デプロイする機能もあります。AppVeyorの用語をいくつか説明します。
<dl>
<dt>Artifact</dt>
<dd>各ビルドで生成されたファイルにアクセスできる仕組みです。ビルド済みファイルをArtifactに設定すると、各ビルド終了後のバイナリを取得できます。</dd>
<dt>Deployment</dt>
<dd>ビルド済みファイルを外部に公開します。AppVeyorでは、Webサーバへの公開だけでなく、GitHub ReleasesやWebhookもDeploymentに含むそうです。</dd>
<dt>Environment</dt>
<dd>デプロイ先の設定をAppVeyorではEnvironmentと呼びます。EnvironmentにはGitHub ReleaseやFTPやAmaxon S3やAzureなどが設定できます。プロジェクトのSettingsにあるEnvironmentは、ビルド環境の設定なので別物です。</dd>
</dl>
Artifactの設定
---------------
まずビルドで生成されるバイナリをArtifactに追加します。プロジェクトのSettingsからArtifactsを開きます。Path to artifactは、ビルド時に生成されるファイルへの相対パスを、Deployment nameは後で参照するので識別可能な名前を付けます。パス名はバッククオート(`\`)区切りなので注意を。
![artifacts.png](https://qiita-image-store.s3.amazonaws.com/0/102667/cd970404-3c2b-56bf-b40e-8b43b9b96d72.png)
再度ビルドを走らせると、各ビルド結果のArtifactsから、ビルド済みファイルへとアクセス可能となります。
![generated_artifacts.png](https://qiita-image-store.s3.amazonaws.com/0/102667/70eabecf-da41-9122-70ca-2ca970b7f3f6.png)
ここまでの手順でビルド済みファイルが入手できるので、GitHub上でポチポチリリースノートを作れますが、せっかくなのでAppVeyorと連携して自動でReleases noteを作ってみましょう。
Environmentの設定
-----------------
デプロイ先の情報をEnvironmentに追加します。まずはAppVeyorからGitHub Releasesを作成できるよう、GitHubのAccess Tokenを設定します。GitHubの[Personal Access Tokens](https://github.com/settings/tokens)を開いてGenerate new tokenをクリックします。Scopeには `public_repo` のみを設定します。設定が完了したらAccess Tokenが表示されるのでクリップボードにコピーします。
![token.png](https://qiita-image-store.s3.amazonaws.com/0/102667/21e6b1c8-7523-8207-1370-134b29c04bbc.png)
つぎにAppVeyorの画面上部メニューのEnvironmentsを開いてNew environmentを押します。GitHub authentication tokenにはAccess Token生成時に表示されたものを、Artifact(s) to deployには作成したArtifactの名前を入力します。
![environment.png](https://qiita-image-store.s3.amazonaws.com/0/102667/9f6d58ce-c319-0299-6457-7ea3fead4c8f.png)
デプロイ
--------
以上でデプロイの準備が整いました。各プロジェクト画面のDeployments内にNew deploymentがあるので、クリックします。
そして作成したEnvironmentを選択してデプロイするビルドの右側にあるDeployをクリックするとデプロイが開始します。
![deploy.png](https://qiita-image-store.s3.amazonaws.com/0/102667/8f7db607-607a-59e1-7834-82b32f6ecdc0.png)
またEnvironments内や各ビルド結果の上部にあるDeployボタンからもデプロイできます。
おわりに
--------
AppVeyorは初めて触ったので手探り状態で設定しましたが、Build/Test/Deploymentの設定を別々にできるのは便利ですね。この記事ではデプロイするタイミングが手動でしたが、プロジェクトのSettingsのDeploymentを設定すると、自動でGitHub Releasesを作成されます。また今回はWeb画面から設定しましたが、設定ファイルを書きたい人は `appveyor.yml` を作成すれば良いと思います。