いけむランド

はてダからやってきました

GitHub Actions で cygwin を使ってみる

GitHub Actions のホストランナーとして Windows が提供されているため、そこに cygwin をインストールすることで cygwin バイナリを動かしてテストなどをすることができます。


cygwin のインストールには Chocolatey を使用します。

chocolatey.org

以下の設定で基本パッケージをインストールすることができます。

      - name: Install cygwin base packages with chocolatey
        run: |
          choco install --no-progress cygwin


デフォルトだと C:\tool\cygwin 配下にインストールされるようです。

また setup.exe がインストールされるため、追加パッケージはそれを使ってインストールすることができます。
(CLI オプションは https://cygwin.com/faq/faq.html#faq.setup.cli を参考にします。)

      - name: Install cygwin additional packages
        run: |
          C:\tools\cygwin\cygwinsetup.exe -qgnNdO -R C:/tools/cygwin -l C:/tools/cygwin/package -s http://mirrors.kernel.org/sourceware/cygwin/ -P autoconf,bison,gcc-core,git,libffi-devel,libgdbm-devel,libgmp-devel,libreadline-devel,libssl-devel,make,patch,ruby,zlib-devel


あとは git clone して、bash 経由でさまざまなコマンドを呼べば、cygwin 環境で動かすことができます。

      - name: Set ENV
        run: |
          echo '::set-env name=PATH::C:\tools\cygwin\bin;C:\tools\cygwin\usr\bin'
      - name: Checkout
        run: |
          git clone --single-branch --shallow-since=yesterday https://github.com/fd00/example src
          git -C src reset --hard ${{ github.sha }}
        shell: cmd
      - name: Autoconf
        run: |
          cd src
          bash /usr/bin/autoconf
        shell: cmd
      - name: Configure
        run: |
          md build
          cd build
          bash ../src/configure
        shell: cmd
      - name: make check
        run: |
          make -C build check
        shell: cmd


ruby に contribute したものはとりあえず動いているようです。