@kyanny's blog

My thoughts, my life. Views/opinions are my own.

GitHub Actions から personal access token を使って git clone すると fatal: could not read Username for 'https://github.com': No such device or address エラー

git clone するとき、URL の中にパスワードとかアクセストークンを埋め込んで認証できる。自動化処理の中で使うのに便利。

URL の user/password の部分の書式にバリエーションがあって何が正解かはっきりしないが、おおむね以下のような形。

git clone https://x-access-token:$TOKEN@github.com/owner/repo

GitHub Actions ワークフローの中で実行すると、$TOKEN という環境変数にアクセストークンが入ってるにも関わらず、

fatal: could not read Username for 'https://github.com': No such device or address

みたいなエラーで git clone できないことがある。

git clone の実行前に git credential helper をセットしてやるとうまくいく。

git config --global credential.helper cache

全体像

name: clone

on:
  workflow_dispatch:

jobs:
  clone:
    runs-on: ubuntu-latest
    steps:
      - run: |
          git config --global credential.helper cache
          git clone https://x-access-token:$GITHUB_ENTERPRISE_TOKEN@github.com/owner/repo
        env:
          TOKEN: ${{secrets.MY_TOKEN}}