Open11

GitHub Actions を Windows でも動くようにする

Shunsuke SuzukiShunsuke Suzuki

シェルが違うため、 linux 向けに書かれたものがそのまま動かない。

https://minosjp.hatenablog.com/entry/2020/12/30/201515

https://github.community/t/github-path-does-not-add-to-the-path/143992

aqua-registry の CI が動かないので修正する。

https://github.com/aquaproj/aqua-installer/runs/6873898751?check_suite_focus=true

Run ci-info run | sed -E "s/^export //" >> "$GITHUB_ENV"
  ci-info run | sed -E "s/^export //" >> "$GITHUB_ENV"
  shell: C:\Program Files\Git\bin\bash.EXE --noprofile --norc -e -o pipefail {0}
  env:
    AQUA_CONFIG: aqua-ci.yaml
    GITHUB_TOKEN: ***
Error: Process completed with exit code 127.
Shunsuke SuzukiShunsuke Suzuki

ci-info はインストールされているし、シンボリックリンクも作られていて PATH も通っているはず?

Shunsuke SuzukiShunsuke Suzuki
Run ls -lh ~/.local/share/aquaproj-aqua/bin
total 15M
lrwxrwxrwx 1 runneradmin 197121 107 Jun 14 07:06 aqua-proxy -> ../pkgs/github_release/github.com/aquaproj/aqua-proxy/v1.1.2/aqua-proxy_windows_amd64.tar.gz/aqua-proxy.exe
-rwxr-xr-x 1 runneradmin 197121 15M Jun 14 03:42 aqua.exe
lrwxrwxrwx 1 runneradmin 197121  10 Jun 14 07:06 ci-info -> aqua-proxy
0s
Run which ci-info || :
/c/Users/runneradmin/.local/share/aquaproj-aqua/bin/ci-info
0s
Run aqua which ci-info || :
C:\Users\runneradmin\.local\share\aquaproj-aqua\pkgs\github_release\github.com\suzuki-shunsuke\ci-info\v2.0.3\ci-info_2.0.3_windows_amd64.tar.gz\ci-info.exe
Shunsuke SuzukiShunsuke Suzuki
Run ls -lh "$(aqua which ci-info)"
  ls -lh "$(aqua which ci-info)"
  shell: C:\Program Files\Git\bin\bash.EXE --noprofile --norc -e -o pipefail {0}
ls: cannot access 'C:\Users\runneradmin\.local\share\aquaproj-aqua\pkgs\github_release\github.com\suzuki-shunsuke\ci-info\v2.0.3\ci-info_2.0.3_windows_amd64.tar.gz\ci-info.exe': No such file or directory

ファイルはまだない。でも実行時に lazy install されるはず。

Shunsuke SuzukiShunsuke Suzuki

https://github.com/aquaproj/aqua-installer/runs/6873898751?check_suite_focus=true

aqua が実行できているということは GITHUB_PATH は機能している

test

https://github.com/suzuki-shunsuke/test-github-action/pull/101

ci-info run の結果を pipe で渡すと失敗する
もしかして改行文字の扱いが違うのか?
\n だと pipe で処理できないとか?

https://github.com/suzuki-shunsuke/ci-info/blob/142819cd2d0775a124faaf21eea323d4ecc5a5e6/pkg/controller/controller.go#L234-L245

Shunsuke SuzukiShunsuke Suzuki

Amazon Workspaces で Git Bash 使って確認したところ、特に問題なかった。

$ ci-info run --owner suzuki-shunsuke --repo test-github-action --pr 101 | sed -E "s/^export //"
CI_INFO_IS_PR=true
CI_INFO_HAS_ASSOCIATED_PR=true
CI_INFO_PR_NUMBER=101
CI_INFO_BASE_REF=main
CI_INFO_HEAD_REF=windows
CI_INFO_PR_AUTHOR=suzuki-shunsuke
CI_INFO_PR_MERGED=false
CI_INFO_TEMP_DIR=D:\Users\shunsukesuzuki\AppData\Local\Temp\ci-info1666645283
CI_INFO_REPO_OWNER=suzuki-shunsuke
CI_INFO_REPO_NAME=test-github-action

$ echo $?
0