Skip to content

Latest commit

 

History

History
186 lines (152 loc) · 12.2 KB

appveyor.md

File metadata and controls

186 lines (152 loc) · 12.2 KB

appveyor でのビルド

CI でのビルドをスキップする方法

ビルドに関係ない修正 (ドキュメントの修正など)を行った場合に、コミットメッセージの中に [ci skip] を含めることで、Appveyor での CI ビルドを行わないようにすることができます。 ただし PR をマージするときには、CI のビルドは走ります。

参考サイト

入力として使用する環境変数

環境変数 説明
APPVEYOR_ACCOUNT_NAME appveyor のアカウント名 (sakura editor の場合 "sakuraeditor")
APPVEYOR_BUILD_NUMBER ビルド番号
APPVEYOR_REPO_COMMIT commit Hash
APPVEYOR_REPO_TAG_NAME tag 名
APPVEYOR_URL https://ci.appveyor.com
APPVEYOR_BUILD_VERSION appveyor.yml の version フィールドの値
APPVEYOR_PROJECT_SLUG project slug (appveyor の URL 名)
APPVEYOR_PULL_REQUEST_NUMBER Pull Request 番号
APPVEYOR_PULL_REQUEST_HEAD_COMMIT Pull Request の Head commit Hash
APPVEYOR_REPO_NAME リポジトリ名 (owner-name/repo-name)
APPVEYOR_REPO_PROVIDER appveyor の参照するリポジトリ種別 (GitHub の場合 "gitHub")
  • 上記環境変数をローカル環境で set コマンドで設定することにより appveyor でビルドしなくてもローカルでテストできます。
  • 上記の環境変数がどんな値になるのかは、過去の appveyor ビルドでのログを見ることによって確認できます。

ビルドに使用するバッチファイル

バッチファイル 説明
build-all.bat appveyor.yml から呼ばれるバッチファイル
build-sln.bat solution をビルドするバッチファイル
sakura\preBuild.bat solution のビルド前に Visual Studio から呼ばれるバッチファイル
sakura\postBuild.bat 特に何もしない
parse-buildlog.bat ビルドログを解析するバッチファイル
build-chm.bat compiled HTML ファイルをビルドするバッチファイル
build-installer.bat インストーラをビルドするバッチファイル
zipArtifacts.bat 成果物を zip に固めるバッチファイル
calc-hash.bat 成果物の sha256 を計算するバッチファイル

呼び出し構造

ビルドに使用するバッチファイルの引数

バッチファイル 第一引数 第二引数
build-all.bat platform ("Win32" または "x64") configuration ("Debug" または "Relelase)"
build-sln.bat platform ("Win32" または "x64") configuration ("Debug" または "Relelase)"
sakura\preBuild.bat HeaderMake.exe または MakefileMake.exe の実行ファイルのフォルダパス なし
sakura\postBuild.bat platform ("Win32" または "x64") configuration ("Debug" または "Relelase)"
parse-buildlog.bat msbuild のビルドログパス なし
build-chm.bat なし なし
build-installer.bat platform ("Win32" または "x64") configuration ("Debug" または "Relelase)"
zipArtifacts.bat platform ("Win32" または "x64") configuration ("Debug" または "Relelase)"
calc-hash.bat sha256 のハッシュ値の出力先ファイル ハッシュ値を計算するフォルダパス

バッチファイルの仕組み

preBuild.bat の構造

生成する環境変数

生成する環境変数 説明 有効性
COMMITID git の commit Hash git 環境が有効な場合
SHORT_COMMITID git の commit Hash の先頭8文字 git 環境が有効な場合
GIT_URL git remote URL (origin) git 環境が有効な場合
GITHUB_COMMIT_URL gitHub で対応する commit に対する URL appveyor でのビルドのみ有効
GITHUB_COMMIT_URL_PR_HEAD gitHub の Pull Request の commit に対応する URL appveyor での PR のビルドのみ有効
APPVEYOR_SHORTHASH commit hash の先頭8文字 appveyor でのビルドのみ有効
APPVEYOR_SHORTHASH_PR_HEAD Pull Request の commit hash の先頭8文字 appveyor での PR のビルドのみ有効
APPVEYOR_BUILD_URL appveyor でのビルドに対応する URL appveyor でのビルドのみ有効

処理の流れ

  • HeaderMake.exe で Funccode_x.hsrc を入力に Funccode_define.h と Funccode_enum.h を生成する
  • MakefileMake.exe で MinGW 用の Makefile を更新する
  • Git や appveyor の環境変数を元に githash.h を生成する (output_githash のサブルーチン)

githash.h で生成するマクロ

生成するマクロ名 元にする環境変数
GIT_COMMIT_HASH COMMITID 文字列
SHORT_COMMITID SHORT_COMMITID 文字列
GIT_URL GIT_URL 文字列
APPVEYOR_URL APPVEYOR_URL 文字列
APPVEYOR_REPO_NAME APPVEYOR_REPO_NAME 文字列
APPVEYOR_ACCOUNT_NAME APPVEYOR_ACCOUNT_NAME 文字列
APPVEYOR_PROJECT_SLUG APPVEYOR_PROJECT_SLUG 文字列
APPVEYOR_BUILD_VERSION APPVEYOR_BUILD_VERSION 文字列
APPVEYOR_BUILD_NUMBER APPVEYOR_BUILD_NUMBER 文字列
APPVEYOR_BUILD_NUMBER_INT APPVEYOR_BUILD_NUMBER 数値
APPVEYOR_PULL_REQUEST_NUMBER APPVEYOR_PULL_REQUEST_NUMBER 文字列
APPVEYOR_PULL_REQUEST_NUMBER_INT APPVEYOR_PULL_REQUEST_NUMBER 数値
GITHUB_COMMIT_URL GITHUB_COMMIT_URL 文字列
GITHUB_COMMIT_URL_PR_HEAD GITHUB_COMMIT_URL_PR_HEAD 文字列
APPVEYOR_SHORTHASH APPVEYOR_SHORTHASH 文字列
APPVEYOR_SHORTHASH_PR_HEAD APPVEYOR_SHORTHASH_PR_HEAD 文字列
APPVEYOR_BUILD_URL APPVEYOR_BUILD_URL 文字列

postBuild.bat の構造

処理の流れ

  • 直接リポジトリに登録している bregonig.dll を sakura.exe のビルドの出力先にコピーする

zipArtifacts.bat の構造

生成する環境変数

生成する環境変数 説明 有効性
ALPHA alpha バージョンの場合 1 x64 ビルドの場合
BUILD_ACCOUNT appveyor のビルドアカウント名 sakura editor 用のアカウントの場合空
TAG_NAME "tag_" + tag 名 tag が有効な場合
BUILD_NUMBER "build" + appveyor のビルド番号 appveyor ビルド以外の場合 "buildLocal"
PR_NAME "PR" + PR番号 appveyor での PR のビルドのみ有効
SHORTHASH commit hash の先頭8文字 appveyor ビルドのみ有効
RELEASE_PHASE "alpha" または 空 x64 ビルドの場合のみ有効
BASENAME 成果物の zip ファイル名(拡張子含まない部分)、zip 内部のフォルダ名 常に有効
WORKDIR 作業用フォルダ、およびzip 内部のフォルダ名 常に有効
WORKDIR_LOG ログファイル用の作業用フォルダ 常に有効
WORKDIR_EXE 実行ファイル用の作業用フォルダ 常に有効
WORKDIR_INST インストーラ用の作業用フォルダ 常に有効
OUTFILE 成果物の zip ファイル名 常に有効
OUTFILE_LOG ログファイルの成果物の zip ファイル名 常に有効
HASHFILE sha256 のハッシュ値のファイル名 常に有効

処理の流れ

  • if 文の条件判定を元に、成果物のファイル名、フォルダ名を構築して環境変数に設定する
  • 作業用フォルダに必要なファイルをコピーする
  • calc-hash.bat で sha256 のハッシュを計算して、作業用フォルダにコピーする
  • 7z コマンドで作業用フォルダの中身を zip に固める