Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GitHub Actions の環境変数をビルドで利用できるようにする #1669

Merged
4 commits merged into from May 20, 2021
Merged

GitHub Actions の環境変数をビルドで利用できるようにする #1669

4 commits merged into from May 20, 2021

Conversation

ghost
Copy link

@ghost ghost commented May 14, 2021

PR の目的

タイトルの通りです。

カテゴリ

  • 機能追加
    • GitHub Actions ビルド版

PR の背景

GitHub Actions の導入に関する残件対応です。

PR のメリット

GitHub Actions の成果物について、AppVeyor や Azure Pipelines と同様に

  • ローカルビルドの成果物と区別できるようになります。
    • ただし、各 CI 毎の区別はできません。
  • PR に対するビルド成果物とそれ以外を区別できるようになります。

PR のデメリット (トレードオフとかあれば)

  • 各 CI 毎に成果物を区別することはできません(再掲)。

このほか、 parse-buildlog.py が AppVeyor でしか利用できないことによる制約も存在します。

仕様・動作説明

GitHub Actions でのワークフロー実行時に、次の値を利用してサクラエディタのビルド過程で必要な環境変数を設定します。

参照するコンテキスト
または環境変数
値の定義 値を利用している環境変数
github.actor ワークフローを実行したユーザー CI_ACCOUNT_NAME
github.repository オーナーとリポジトリの名前
(例: owner_name/repo_name )
CI_REPO_NAME
github.run_id リポジトリ内の全ワークフローの実行毎番号 CI_BUILD_VERSION
github.run_number リポジトリ内の特定ワークフローの実行毎番号 CI_BUILD_NUMBER
GITHUB_SERVER_URL GitHub サーバーの URL CI_BUILD_URL
GITHUB_COMMIT_URL
GITHUB_PR_HEAD_URL
github.sha ワークフローを実行したコミット GITHUB_COMMIT_URL
github.event_name ワークフローを実行したイベント -
github.event.pull_request.number PR の番号 GITHUB_PR_NUMBER
GITHUB_PR_HEAD_URL
github.event.pull_request.head.sha PR のコミット GITHUB_PR_HEAD_SHORT_COMMIT
GITHUB_PR_HEAD_COMMIT
GITHUB_PR_HEAD_URL

設定された環境変数の値は GitHub Actions のビルドページにて、「MSBuild」ステップのログへ次のように出力されます。
(通常は折りたたまれています。)

▼ Run build-sln.bat Win32 Debug
  build-sln.bat Win32 Debug
  shell: C:\Windows\system32\cmd.EXE /D /E:ON /V:OFF /S /C "CALL "{0}""
  env:
    CI_ACCOUNT_NAME: kazasaku
    CI_REPO_NAME: sakura-editor/sakura
    CI_BUILD_VERSION: 840794929
    CI_BUILD_NUMBER: 1021
    CI_BUILD_URL: https://github.com/sakura-editor/sakura/actions/runs/840794929
    GITHUB_COMMIT_URL: https://github.com/sakura-editor/sakura/commit/7649c731000660fa6ea49c87e16e38eac8bc3240
    GITHUB_PR_NUMBER: 1669
    GITHUB_PR_HEAD_SHORT_COMMIT: 04595d8c
    GITHUB_PR_HEAD_COMMIT: 04595d8c0069c8915ccf79dad9be8576277e474f
    GITHUB_PR_HEAD_URL: https://github.com/sakura-editor/sakura/pull/1669/commits/04595d8c0069c8915ccf79dad9be8576277e474f

GITHUB_PR_HEAD_SHORT_COMMIT もワークフローの設定ファイル上で定義するようにしましたが、
GITHUB_PR_HEAD_COMMIT が定義済みの時は githash.bat が GITHUB_PR_HEAD_SHORT_COMMIT を書き換えてしまうため、
対策として githash.bat における GITHUB_PR_HEAD_SHORT_COMMIT の設定方法を変更しています。
加えて、 githash.bat のログに PR 番号が出力されていなかったので、これの追加やログ出力の調整を実施しました。

なお、 githash.bat 自体は GitHub Actions の環境変数を取り扱わないことから、 build-envvars.md は更新不要と判断しました。

ちなみに、この PR では環境変数の追加・名称の変更・廃止は実施しません。

PR の影響範囲

  • GitHub Actions の「build-sakura」ワークフローで実行される処理
  • AppVeyor 上でのプルリクエストに対するビルドで行われる環境変数の設定
  • Azure Pipelines 上でのプルリクエストに対するビルドで行われる環境変数の設定

テスト内容

注:githash.bat は CI ビルドの過程で2回呼ばれます(1回目: build-sln.bat/build-gnu.bat 、2回目: zipArtigacts.bat )。

GitHub Actions

  • ビルドページ( CI_BUILD_URL )にて GitHub Actions のログを確認し、環境変数が設定されていることを確認する
  • githash.bat のログ出力を確認し、設定した環境変数がヘッダファイル生成処理で認識されていることを確認する
  • ビルド成果物の圧縮ファイル名に PR 番号やビルド番号 が反映されていることを確認する
    • GitHub Actions の成果物は二重圧縮されています。解凍することで本来の圧縮ファイルが取り出せます。
  • 成果物に含まれるヘッダファイルを確認し、環境変数の値が反映されていることを確認する

AppVeyor 及び Azure Pipelines

  • githash.bat のログ出力を確認し、 GITHUB_PR_HEAD_SHORT_COMMIT に正しい値が設定されていることを確認する
  • 成果物に含まれるヘッダファイルを確認し、 GITHUB_PR_HEAD_SHORT_COMMIT の値が反映されていることを確認する

関連 issue, PR

#821 AppVeyor 以外の CI を導入するために環境変数の名称を変更した
#1190 環境変数の新設・名称変更・並び替えの提案
#1259 GitHub Actions 導入作業
#1271 残件のうち、「ヘルプとインストーラーのビルド」に対応
#1285 残件のうち、「成果物を個別に圧縮ファイル化」に対応
replace: #1664
#1665

参考資料

GitHub Actions のドキュメント

@ghost ghost added the CI appveyor など CI 関連 【ChangeLog除外】 label May 14, 2021
@ghost
Copy link
Author

ghost commented May 14, 2021

https://dev.azure.com/sakuraeditor/sakura/_build/results?buildId=2984&view=logs&j=837ec53c-4e46-5cfd-1bd4-7f800b959261&t=c1503f99-162e-53a7-7e8e-ddefdabcf3ec&l=78

GenerateGitHash:
  ..\sakura\githash.bat ..\sakura_core ..\sakura_core\githash.h
  
  ---- Make githash.h ----
  GIT_TAG_NAME          : 
  GIT_SHORT_COMMIT_HASH : 7649c7310
  GIT_COMMIT_HASH       : 7649c731000660fa6ea49c87e16e38eac8bc3240
  GIT_REMOTE_ORIGIN_URL : ***
  
  CI_ACCOUNT_NAME       : sakura-editor.sakura
  CI_REPO_NAME          : sakura-editor/sakura
  CI_BUILD_VERSION      : 20210514.3
  CI_BUILD_NUMBER       : 2984
  CI_BUILD_URL          : https://dev.azure.com/sakuraeditor/sakura/_build/results?buildId=2984
  
  GITHUB_COMMIT_URL           : ***/commit/7649c731000660fa6ea49c87e16e38eac8bc3240
  GITHUB_PR_NUMBER            : 1669
  GITHUB_PR_HEAD_SHORT_COMMIT : 04595d8c
  GITHUB_PR_HEAD_COMMIT       : 04595d8c0069c8915ccf79dad9be8576277e474f
  GITHUB_PR_HEAD_URL          : ***/pull/1669/commits/04595d8c0069c8915ccf79dad9be8576277e474f
  
  APPVEYOR_URL          : 
  APPVEYOR_PROJECT_SLUG : 
  
          1 file(s) moved.
  ..\sakura_core\githash.h was updated.

PR に対する Azure Pipelines の実行では、一部項目の設定がうまくいかないみたいです。
#1653 に対する実行でも起きているので、以前から存在する問題のようですね。

@AppVeyorBot
Copy link

Build sakura 1.0.3759 completed (commit 7649c73100 by @kazasaku)

@ghost ghost marked this pull request as ready for review May 14, 2021 02:43
@ghost
Copy link
Author

ghost commented May 14, 2021

ちょっと補足。

このほか、 parse-buildlog.py が AppVeyor でしか利用できないことによる制約も存在します。

ここでいう制約とは、 parse-buildlog.py で生成される Excel ワークブックに関する次の2点のことです。

  1. テーブルヘッダ以外が書き込まれない
  2. CI 環境上のファイルパスを GitHub の URL に変換する機能を利用できない
    • parse-buildlog.bat が利用する appveyor_env.py が名前の通り AppVeyor 専用であるため。
      • appveyor_env.py が生成する set_appveyor_env.bat も AppVeyor のみ再現可能なものです。

@sonarcloud
Copy link

sonarcloud bot commented May 15, 2021

Kudos, SonarCloud Quality Gate passed!

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities
Security Hotspot A 0 Security Hotspots
Code Smell A 0 Code Smells

No Coverage information No Coverage information
No Duplication information No Duplication information

@AppVeyorBot
Copy link

Build sakura 1.0.3762 completed (commit 00523949d2 by @kazasaku)

@ghost
Copy link
Author

ghost commented May 18, 2021

https://dev.azure.com/sakuraeditor/sakura/_build/results?buildId=2984&view=logs&j=837ec53c-4e46-5cfd-1bd4-7f800b959261&t=c1503f99-162e-53a7-7e8e-ddefdabcf3ec&l=78

PR に対する Azure Pipelines の実行では、一部項目の設定がうまくいかないみたいです。
#1653 に対する実行でも起きているので、以前から存在する問題のようですね。

改めて見返すと githash.h は問題なく生成されていて、単にコンソールログ上で伏せられているだけのようでした。

@ghost
Copy link
Author

ghost commented May 20, 2021

レビューありがとうございます。マージします。
何か問題があれば別途対応します。

@ghost ghost merged commit 6be2aec into sakura-editor:master May 20, 2021
@ghost
Copy link
Author

ghost commented May 21, 2021

マージコミット(プッシュイベント)に対する Azure Pipelines のログも一応チェックしました。
https://dev.azure.com/sakuraeditor/sakura/_build/results?buildId=3003&view=logs&j=8c78f715-3226-5fde-6022-85037b27e36c&t=289fc024-f6b9-59c3-21c5-edd00f4066f9&l=82

GenerateGitHash:
  ..\sakura\githash.bat ..\sakura_core ..\sakura_core\githash.h
  
  ---- Make githash.h ----
  GIT_TAG_NAME          : 
  GIT_SHORT_COMMIT_HASH : 6be2aec53
  GIT_COMMIT_HASH       : 6be2aec53e7063fbe4b536b1e584786af5de9d23
  GIT_REMOTE_ORIGIN_URL : https://github.com/sakura-editor/sakura
  
  CI_ACCOUNT_NAME       : sakura-editor.sakura
  CI_REPO_NAME          : sakura-editor/sakura
  CI_BUILD_VERSION      : 20210521.2
  CI_BUILD_NUMBER       : 3003
  CI_BUILD_URL          : https://dev.azure.com/sakuraeditor/sakura/_build/results?buildId=3003
  
  GITHUB_COMMIT_URL           : https://github.com/sakura-editor/sakura/commit/6be2aec53e7063fbe4b536b1e584786af5de9d23
  GITHUB_PR_NUMBER            : 
  GITHUB_PR_HEAD_SHORT_COMMIT : 
  GITHUB_PR_HEAD_COMMIT       : 
  GITHUB_PR_HEAD_URL          : 
  
  APPVEYOR_URL          : 
  APPVEYOR_PROJECT_SLUG : 
  
          1 file(s) moved.
  ..\sakura_core\githash.h was updated.

問題はないと思います。

@ghost ghost deleted the feature/add_config_gha_envvars branch May 21, 2021 00:29
@berryzplus
Copy link
Contributor

コメント付けるの忘れてました。

ちょっと補足。

このほか、 parse-buildlog.py が AppVeyor でしか利用できないことによる制約も存在します。

ここでいう制約とは、 parse-buildlog.py で生成される Excel ワークブックに関する次の2点のことです。

必要があれば、GitHub Actionsでも動くようにできると思います。
とくに必要と思わなかったので制約のままスルーしてました。

  1. テーブルヘッダ以外が書き込まれない
  • モジュールのインポートが失敗する件は、GHAのタスクで py.exe -m pip install openpyxl してあげればよいと思います。
    元がバッチベースだったためpip install openpyxlのオプションに--userを付けてるのが原因なので、外したらいいです。
    ※バッチは環境を変更しないよう配慮して「バッチ」を作りますが、CI/CDは目的を達成できる「環境」を作ります。
  • ログを拾う正規表現がvs2019で効かない件は、対応不能と思います。
    スクリプト設計がテキトーなのが原因なのでちゃんと設計したらいいんですが、やる気ある人います?w
  1. CI 環境上のファイルパスを GitHub の URL に変換する機能を利用できない
  • 利用できないのは Appveyor 上のバッチコマンドだと思います。
  • GitHub ActionsのほうがAppveyorよりもGitHub連携機能が強力なので、やりたければやったらいいと思います。

@ghost
Copy link
Author

ghost commented Jun 20, 2021

CI 環境上のファイルパスを GitHub の URL に変換する機能を利用できない

利用できないのは Appveyor 上のバッチコマンドだと思います。
GitHub ActionsのほうがAppveyorよりもGitHub連携機能が強力なので、やりたければやったらいいと思います。

この機能はparse-buildlog.pyに対するオプション的な機能だと捉えているんですが(整形したcsv/xlsxファイルにおいて、ファイルパスの代わりにGitHubのblob URLを出力するための機能)、GHAのビルド環境はVS2019なので正規表現が効かず、変換するファイルパスの情報が入手できません。

仮に整形したログファイルが必要だとして、パス→URL変換は必要なのだろうか。

This pull request was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CI appveyor など CI 関連 【ChangeLog除外】
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants