Skip to content

Commit

Permalink
Merge pull request #1183 from m-tmatma/feature/issue821-fixup-appveyo…
Browse files Browse the repository at this point in the history
…r-variable

Appveyor 専用の環境変数を汎用的なものに定義しなおして azure pipelines で使えるようにする
  • Loading branch information
m-tmatma authored Feb 9, 2020
2 parents 735a88f + 63f6683 commit fdb92d4
Show file tree
Hide file tree
Showing 7 changed files with 163 additions and 97 deletions.
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
- [How to build](#how-to-build)
- [詳細情報](#詳細情報)
- [PR(Pull Request) を簡単にローカルに取得する方法](#prpull-request-を簡単にローカルに取得する方法)
- [CI Buildおよびローカルビルドの環境変数](#CI-Buildおよびローカルビルドの環境変数)
- [CI Build (Azure Pipelines)](#ci-build-azure-pipelines)
- [ビルドの仕組み (Azure Pipelines)](#ビルドの仕組み-azure-pipelines)
- [CI Build (AppVeyor)](#ci-build-appveyor)
Expand Down Expand Up @@ -125,6 +126,10 @@ Visaul Studio 2019 で `sakura.sln` を開くと必要なコンポーネント

詳しくは [こちら](build.md) を参照

## CI Buildおよびローカルビルドの環境変数

[CI でのビルド](ci-build.md) を参照

## PR(Pull Request) を簡単にローカルに取得する方法

- [PR(Pull Request) を簡単にローカルに取得する方法](get-PR.md)
Expand Down
94 changes: 3 additions & 91 deletions appveyor.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
- [appveyor でのビルド](#appveyor-でのビルド)
- [CI でのビルドをスキップする方法](#ci-でのビルドをスキップする方法)
- [参考サイト](#参考サイト)
- [入力として使用する環境変数](#入力として使用する環境変数)
- [CI Buildおよびローカルビルドの環境変数](#CI-Buildおよびローカルビルドの環境変数)
- [ビルドに使用するバッチファイル](#ビルドに使用するバッチファイル)
- [呼び出し構造](#呼び出し構造)
- [ビルドに使用するバッチファイルの引数](#ビルドに使用するバッチファイルの引数)
Expand All @@ -18,7 +18,6 @@
- [mingw32-del.bat の構造](#mingw32-delbat-の構造)
- [処理の流れ](#処理の流れ-2)
- [zipArtifacts.bat の構造](#zipartifactsbat-の構造)
- [生成する環境変数](#生成する環境変数-1)
- [処理の流れ](#処理の流れ-3)

<!-- /TOC -->
Expand All @@ -35,28 +34,9 @@
- https://www.appveyor.com/docs/how-to/filtering-commits/#skip-commits


## 入力として使用する環境変数
## CI Buildおよびローカルビルドの環境変数

| 環境変数 | 説明 |
----|----
|APPVEYOR | バッチが appveyor で実行されているかどうか |
|APPVEYOR_ACCOUNT_NAME | appveyor のアカウント名 (sakura editor の場合 "sakuraeditor") |
|APPVEYOR_BUILD_NUMBER | ビルド番号 |
|APPVEYOR_URL | https://ci.appveyor.com |
|APPVEYOR_BUILD_VERSION | appveyor.yml の version フィールドの値 |
|APPVEYOR_BUILD_ID | ビルドID (ビルド結果URLに含まれる数値です。`build-chm.bat`が実行中のビルドを識別するために使います。) |
|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") |
|~~READONLY_TOKEN~~ | デバッグ用です。 appveyor の REST API に渡す [Bearer Token](https://www.appveyor.com/docs/api/#Authentication) をスクリプト外から渡せるように定義しています。 appveyor では使いません。(未定義なので値は''になります。) |

APPVEYOR_REPO_TAG_NAME は利用をやめて 代わりに GIT_TAG_NAME を使うようにしました。[#876](https://github.com/sakura-editor/sakura/pull/876)

* 上記環境変数をローカル環境で set コマンドで設定することにより appveyor でビルドしなくてもローカルでテストできます。
* 上記の環境変数がどんな値になるのかは、過去の appveyor ビルドでのログを見ることによって確認できます。
* `build-chm.bat`をローカルでテストするには完了済みのビルドIDが必要です。ビルドIDは[history](https://ci.appveyor.com/project/sakuraeditor/sakura/history)から各ビルド結果を表示するとURL末尾に付いている数字です。
[CI でのビルド](ci-build.md) を参照

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

Expand Down Expand Up @@ -141,54 +121,12 @@ APPVEYOR_REPO_TAG_NAME は利用をやめて 代わりに GIT_TAG_NAME を使う

### preBuild.bat の構造

#### 生成する環境変数

| 生成する環境変数 | 説明 | 有効性 |
----|----|----
| GIT_SHORT_COMMIT_HASH | git の commit Hash の先頭8文字 | git 環境が有効な場合 |
| GIT_COMMIT_HASH | git の commit Hash | git 環境が有効な場合 |
| GIT_REMOTE_ORIGIN_URL | git remote origin URL | git 環境が有効な場合 |
| GIT_TAG_NAME | git の tag | git 環境が有効な場合 |
| GITHUB_COMMIT_URL | gitHub で対応する commit に対する URL | appveyor でのビルドのみ有効 |
| GITHUB_COMMIT_URL_PR_HEAD | gitHub の Pull Request の commit に対応する URL | appveyor での PR のビルドのみ有効 |
| APPVEYOR_SHORTHASH_PR_HEAD | Pull Request の commit hash の先頭8文字 | appveyor での PR のビルドのみ有効 |
| APPVEYOR_BUILD_URL | appveyor でのビルドに対応する URL | appveyor でのビルドのみ有効 |
| TEMP_GIT_SHORT_COMMIT_HASH | git の commit Hash の先頭8文字 | appveyor でのビルドのみ有効 (暫定的な変数。将来整理予定) |
| TEMP_GIT_COMMIT_HASH | git の commit Hash | appveyor でのビルドのみ有効 (暫定的な変数。将来整理予定) |

#### 処理の流れ

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

#### githash.h で生成するマクロ

| 生成するマクロ名 | 元にする環境変数 ||
| ---- | ---- | ---- |
| GIT_SHORT_COMMIT_HASH | GIT_SHORT_COMMIT_HASH | 文字列 |
| GIT_COMMIT_HASH | GIT_COMMIT_HASH | 文字列 |
| GIT_REMOTE_ORIGIN_URL | GIT_REMOTE_ORIGIN_URL | 文字列 |
| GIT_TAG_NAME | GIT_TAG_NAME | 文字列 |
| 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_BUILD_NUMBER_LABEL | APPVEYOR_BUILD_NUMBER | 数値 |
| APPVEYOR_PULL_REQUEST_NUMBER | APPVEYOR_PULL_REQUEST_NUMBER | 文字列 |
| APPVEYOR_PULL_REQUEST_NUMBER_INT| APPVEYOR_PULL_REQUEST_NUMBER | 数値 |
| APPVEYOR_PR_NUMBER_LABEL | APPVEYOR_PULL_REQUEST_NUMBER | 文字列 |
| GITHUB_COMMIT_URL | GITHUB_COMMIT_URL | 文字列 |
| GITHUB_COMMIT_URL_PR_HEAD | GITHUB_COMMIT_URL_PR_HEAD | 文字列 |
| APPVEYOR_SHORTHASH_PR_HEAD | APPVEYOR_SHORTHASH_PR_HEAD | 文字列 |
| APPVEYOR_BUILD_URL | APPVEYOR_BUILD_URL | 文字列 |
| TEMP_GIT_SHORT_COMMIT_HASH | TEMP_GIT_SHORT_COMMIT_HASH | 文字列 |
| TEMP_GIT_COMMIT_HASH | TEMP_GIT_COMMIT_HASH | 文字列 |


### postBuild.bat の構造

#### 処理の流れ
Expand All @@ -203,32 +141,6 @@ APPVEYOR_REPO_TAG_NAME は利用をやめて 代わりに GIT_TAG_NAME を使う

### 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文字 | 実体は TEMP_GIT_SHORT_COMMIT_HASH |
| RELEASE_PHASE | "alpha" または 空 | x64 ビルドの場合のみ有効 |
| BASENAME | 成果物の zip ファイル名(拡張子含まない部分) | 常に有効 |
| WORKDIR | 作業用フォルダ | 常に有効 |
| WORKDIR_LOG | ログファイル用の作業用フォルダ | 常に有効 |
| WORKDIR_EXE | 実行ファイル(一般向け)用の作業用フォルダ | 常に有効 |
| WORKDIR_DEV | 開発者向け成果物用の作業用フォルダ | 常に有効 |
| WORKDIR_INST | インストーラ用の作業用フォルダ | 常に有効 |
| WORKDIR_ASM | アセンブラ出力用の作業用フォルダ | 常に有効 |
| OUTFILE | 成果物の zip ファイル名 | 常に有効 |
| OUTFILE_LOG | ログファイルの成果物の zip ファイル名 | 常に有効 |
| OUTFILE_EXE | 実行ファイル(一般向け)の成果物の zip ファイル名 | 常に有効 |
| OUTFILE_DEV | 開発者向け成果物の zip ファイル名 | 常に有効 |
| OUTFILE_INST | インストーラの成果物の zip ファイル名 | 常に有効 |
| OUTFILE_ASM | アセンブラ出力の成果物の zip ファイル名 | 常に有効 |
| HASHFILE | sha256 のハッシュ値のファイル名 | 常に有効 |

#### 処理の流れ

* if 文の条件判定を元に、成果物のファイル名、フォルダ名を構築して環境変数に設定する
Expand Down
3 changes: 3 additions & 0 deletions azure-pipelines.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
- [Azure Pipelines のJOB の構成](#azure-pipelines-のjob-の構成)
- [Azure Pipelines の TIPS](#azure-pipelines-の-tips)
- [step または JOB の実行条件](#step-または-job-の実行条件)
- [CI Buildおよびローカルビルドの環境変数](#CI-Buildおよびローカルビルドの環境変数)

<!-- /TOC -->

Expand Down Expand Up @@ -100,4 +101,6 @@ googletest でテストを実施するにあたって、googletest のテスト
targetFolder: $(Build.ArtifactStagingDirectory)
```

## CI Buildおよびローカルビルドの環境変数

[CI でのビルド](ci-build.md) を参照
113 changes: 113 additions & 0 deletions ci-build.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
# CI でのビルド

## githash.bat で設定する環境変数

|||ローカルビルド|Appveyor|Azure Pipelines|gitbash.h への出力|
|--|--|--|--|--|--|
|GIT_COMMIT_HASH|git の commit Hash|||||
|GIT_SHORT_COMMIT_HASH|git の commit Hash 短縮形|||||
|GIT_REMOTE_ORIGIN_URL|git remote origin URL|||||
|GIT_TAG_NAME|git の tag|||||
|TEMP_GIT_COMMIT_HASH|CI のときに有効な commit Hash|×||||
|TEMP_GIT_SHORT_COMMIT_HASH|CI のときに有効な commit Hash 短縮形|×||||
|CI_ACCOUNT_NAME|CI のアカウント名|×||||
|CI_BUILD_NUMBER|CI のビルド番号 (数値)|×||||
|CI_BUILD_URL|CI のビルドURL|×||||
|CI_BUILD_VERSION|CI のビルドバージョン (文字列)|×||||
|CI_REPO_NAME|リポジトリ名|×||||
|GITHUB_COMMIT_URL|GitHub の Commit URL|×||||
|GITHUB_COMMIT_URL_PR_HEAD|GitHub の PR の Head の URL|×|○ (PRのみ)|○ (PRのみ)|○ (PRのみ)|
|GITHUB_PR_HEAD_COMMIT|GitHub の PR の Head Revision|×|○ (PRのみ)|○ (PRのみ)|○ (PRのみ)|
|GITHUB_PR_HEAD_SHORT_COMMIT|GitHub の PR の Head Revision 短縮形|×|○ (PRのみ)|○ (PRのみ)|○ (PRのみ)|
|GITHUB_PR_NUMBER|GitHub の PR 番号|×|○ (PRのみ)|○ (PRのみ)|○ (PRのみ)|
|DEV_VERSION|開発バージョンかどうか|||||

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

### Appveyor

| 環境変数 | 説明 |
----|----
|APPVEYOR | バッチが appveyor で実行されているかどうか |
|APPVEYOR_ACCOUNT_NAME | appveyor のアカウント名 (sakura editor の場合 "sakuraeditor") |
|APPVEYOR_BUILD_NUMBER | ビルド番号 |
|APPVEYOR_URL | https://ci.appveyor.com |
|APPVEYOR_BUILD_VERSION | appveyor.yml の version フィールドの値 |
|APPVEYOR_BUILD_ID | ビルドID (ビルド結果URLに含まれる数値です。`build-chm.bat`が実行中のビルドを識別するために使います。) |
|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") |
|~~READONLY_TOKEN~~ | デバッグ用です。 appveyor の REST API に渡す [Bearer Token](https://www.appveyor.com/docs/api/#Authentication) をスクリプト外から渡せるように定義しています。 appveyor では使いません。(未定義なので値は''になります。) |

APPVEYOR_REPO_TAG_NAME は利用をやめて 代わりに GIT_TAG_NAME を使うようにしました。[#876](https://github.com/sakura-editor/sakura/pull/876)

* 上記環境変数をローカル環境で set コマンドで設定することにより appveyor でビルドしなくてもローカルでテストできます。
* 上記の環境変数がどんな値になるのかは、過去の appveyor ビルドでのログを見ることによって確認できます。
* `build-chm.bat`をローカルでテストするには完了済みのビルドIDが必要です。ビルドIDは[history](https://ci.appveyor.com/project/sakuraeditor/sakura/history)から各ビルド結果を表示するとURL末尾に付いている数字です。

### Azure Pipelines

|環境変数|説明|
|--|--|
|BUILD_REPOSITORY_NAME|リポジトリ名 (owner-name/repo-name)|
|BUILD_DEFINITIONNAME|アカウント名|
|BUILD_BUILDID|ビルド番号 (数値)|
|BUILD_BUILDNUMBER|ビルドバージョン (文字列)|
|SYSTEM_PULLREQUEST_PULLREQUESTNUMBER|Pull Request 番号|
|SYSTEM_PULLREQUEST_SOURCECOMMITID|Pull Request の Head commit Hash|

## githash.h で生成するマクロ

|生成するマクロ名|元にする環境変数||
|--|--|--|
|GIT_SHORT_COMMIT_HASH|GIT_SHORT_COMMIT_HASH|文字列|
|GIT_COMMIT_HASH|GIT_COMMIT_HASH|文字列|
|TEMP_GIT_SHORT_COMMIT_HASH|TEMP_GIT_SHORT_COMMIT_HASH|文字列|
|TEMP_GIT_COMMIT_HASH|TEMP_GIT_COMMIT_HASH|文字列|
|GIT_REMOTE_ORIGIN_URL|GIT_REMOTE_ORIGIN_URL|文字列|
|GIT_TAG_NAME|GIT_TAG_NAME|文字列|
|CI_REPO_NAME|CI_REPO_NAME|文字列|
|DEV_VERSION|-|-|
|CI_ACCOUNT_NAME|CI_ACCOUNT_NAME|文字列|
|CI_BUILD_VERSION|CI_BUILD_VERSION|文字列|
|CI_BUILD_NUMBER|CI_BUILD_NUMBER|文字列|
|CI_BUILD_NUMBER_INT|CI_BUILD_NUMBER|数値|
|CI_BUILD_NUMBER_LABEL|CI_BUILD_NUMBER|文字列|
|GITHUB_PR_NUMBER|GITHUB_PR_NUMBER|文字列|
|GITHUB_PR_NUMBER_INT|GITHUB_PR_NUMBER|数値|
|GITHUB_PR_NUMBER_LABEL|GITHUB_PR_NUMBER|文字列|
|GITHUB_COMMIT_URL|GITHUB_COMMIT_URL|文字列|
|GITHUB_COMMIT_URL_PR_HEAD|GITHUB_COMMIT_URL_PR_HEAD|文字列|
|GITHUB_PR_HEAD_COMMIT|GITHUB_PR_HEAD_COMMIT|文字列|
|GITHUB_PR_HEAD_SHORT_COMMIT|GITHUB_PR_HEAD_SHORT_COMMIT|文字列|
|CI_BUILD_URL|CI_BUILD_URL|文字列|

## zipArtifacts.bat で設定する環境変数

### 生成する環境変数

| 生成する環境変数 | 説明 | 有効性 |
----|----|----
| ALPHA | alpha バージョンの場合 1 | x64 ビルドの場合 |
| BUILD_ACCOUNT | CI のビルドアカウント名 | sakura editor 用のアカウントの場合空 |
| TAG_NAME | "tag_" + tag 名 | tag が有効な場合 |
| BUILD_NUMBER | "build" + ビルド番号 | CI ビルド以外の場合 "buildLocal" |
| PR_NAME | "PR" + PR番号 | CI での PR のビルドのみ有効 |
| SHORTHASH | commit hash の先頭8文字 | 実体は TEMP_GIT_SHORT_COMMIT_HASH |
| RELEASE_PHASE | "alpha" または 空 | x64 ビルドの場合のみ有効 |
| BASENAME | 成果物の zip ファイル名(拡張子含まない部分) | 常に有効 |
| WORKDIR | 作業用フォルダ | 常に有効 |
| WORKDIR_LOG | ログファイル用の作業用フォルダ | 常に有効 |
| WORKDIR_EXE | 実行ファイル(一般向け)用の作業用フォルダ | 常に有効 |
| WORKDIR_DEV | 開発者向け成果物用の作業用フォルダ | 常に有効 |
| WORKDIR_INST | インストーラ用の作業用フォルダ | 常に有効 |
| WORKDIR_ASM | アセンブラ出力用の作業用フォルダ | 常に有効 |
| OUTFILE | 成果物の zip ファイル名 | 常に有効 |
| OUTFILE_LOG | ログファイルの成果物の zip ファイル名 | 常に有効 |
| OUTFILE_EXE | 実行ファイル(一般向け)の成果物の zip ファイル名 | 常に有効 |
| OUTFILE_DEV | 開発者向け成果物の zip ファイル名 | 常に有効 |
| OUTFILE_INST | インストーラの成果物の zip ファイル名 | 常に有効 |
| OUTFILE_ASM | アセンブラ出力の成果物の zip ファイル名 | 常に有効 |
| HASHFILE | sha256 のハッシュ値のファイル名 | 常に有効 |
Loading

0 comments on commit fdb92d4

Please sign in to comment.