Skip to content

Docker-based workflow with dynamic user fails #244

@seyfahni

Description

@seyfahni

Summary

When running this action inside a Docker container that uses a dynamic user id the action fails.

Motivation

As a workaround for actions complaining about git repositories having dubious ownership one can set the GitHub Actions runner user id as the container's user. But some images might not have a user with the user id 1001.

See also: actions/runner#2033 (comment)

Details

Reproduction: https://github.com/seyfahni/ssh-agent-action-bug/blob/dde1c9506e9f358acff8ac084a049bde4dedbc7b/.github/workflows/dynamic-user.yml

container:
  image: debian # some image that does not have a user with id 1001
  options: --user 1001 # workaround for git "dubious ownership" issue
steps:
  - uses: webfactory/ssh-agent@e83874834305fe9a4a2997156cb26c5de65a8555 # v0.10.0
    with:
      ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
Action Log
Run webfactory/ssh-agent@e83874834305fe9a4a2997156cb26c5de65a8555
  with:
    ssh-private-key: ***
    log-public-key: true
/usr/bin/docker exec  bd46549c83edd10d4bce8bf5a656b31ab45d9e9f1feceacf7df427a2423dd691 sh -c "cat /etc/*release | grep ^ID"
node:os:306
    throw new ERR_SYSTEM_ERROR(ctx);
    ^

SystemError [ERR_SYSTEM_ERROR]: A system error occurred: uv_os_get_passwd returned ENOENT (no such file or directory)
    at Object.userInfo (node:os:306:11)
    at 972 (/__w/_actions/webfactory/ssh-agent/e83874834305fe9a4a2997156cb26c5de65a8555/dist/index.js:2903:18)
    at __webpack_require__ (/__w/_actions/webfactory/ssh-agent/e83874834305fe9a4a2997156cb26c5de65a8555/dist/index.js:22:30)
    at 104 (/__w/_actions/webfactory/ssh-agent/e83874834305fe9a4a2997156cb26c5de65a8555/dist/index.js:325:54)
    at __webpack_require__ (/__w/_actions/webfactory/ssh-agent/e83874834305fe9a4a2997156cb26c5de65a8555/dist/index.js:22:30)
    at startup (/__w/_actions/webfactory/ssh-agent/e83874834305fe9a4a2997156cb26c5de65a8555/dist/index.js:37:19)
    at /__w/_actions/webfactory/ssh-agent/e83874834305fe9a4a2997156cb26c5de65a8555/dist/index.js:41:18
    at Object.<anonymous> (/__w/_actions/webfactory/ssh-agent/e83874834305fe9a4a2997156cb26c5de65a8555/dist/index.js:44:10)
    at Module._compile (node:internal/modules/cjs/loader:1812:14)
    at Object..js (node:internal/modules/cjs/loader:1943:10) {
  code: 'ERR_SYSTEM_ERROR',
  info: {
    errno: -2,
    code: 'ENOENT',
    message: 'no such file or directory',
    syscall: 'uv_os_get_passwd'
  },
  errno: [Getter/Setter],
  syscall: [Getter/Setter]
}

Node.js v24.14.0

Workaround

Extend the Docker image by adding this line to the Dockerfile:

RUN useradd -m -c 'GitHub Actions User' -u 1001 runner

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions