woodpecker-ci / woodpecker

Woodpecker is a simple, yet powerful CI/CD engine with great extensibility.
https://woodpecker-ci.org
Apache License 2.0
4.2k stars 364 forks source link

Clone failed: could not read Username for <url>: terminal prompts disabled #1471

Closed sb-child closed 1 year ago

sb-child commented 1 year ago

Component

server

Describe the bug

In the fresh installation using docker-compose, the pipeline seems always failed even it's a private repo.

In my case, for security, Gitea will require a login to view anything. /srv/gitea/custom/conf/app.ini

[services]
REQUIRE_SIGNIN_VIEW = true

So cloning a "public" repo is also needing an authentication:

$ git clone https://example.com:3943/sbchild/sbchild.git   
Cloning into 'sbchild'...
Username for 'https://example.com:3943':

.woodpecker.yml in repo sbchild/mirror-bot:

pipeline:
  build:
    image: alpine:3.17.0
    commands:
      - echo "done"

Clone pipeline outputs:

+ git init -b main
Initialized empty Git repository in /woodpecker/src/example.com/sbchild/mirror-bot/.git/
+ git remote add origin https://example.com:3943/sbchild/mirror-bot.git
+ git fetch --no-tags --depth=1 --filter=tree:0 origin +main:
fatal: could not read Username for 'https://example.com:3943': terminal prompts disabled
exit status 128

I have tried refresh repo list and repair repo, but that didn't help. It seems the username/password hasn't set before git fetch? Should I provide more information? Please let me know, thanks!

System Info

Gitea version: `1.18.0-rc1`
Woodpecker version: `next-cfb28820`

Woodpecker `docker-compose.yml`

version: '3'
networks:
  wp_net:
    driver: bridge
    ipam:
      driver: default
      config:
        - 
          subnet: 172.18.0.0/24
          gateway: 172.18.0.1

services:
  woodpecker-server:
    image: woodpeckerci/woodpecker-server:next-alpine
    networks:
      wp_net:
        ipv4_address: 172.18.0.2
    extra_hosts:
      - "example.com:10.7.0.8"
    ports:
      - 10.7.0.8:3944:443
    expose:
      - "9000"
    volumes:
      - /srv/cicd/wpdata:/var/lib/woodpecker/
      - /home/sbchild/.acme.sh/example.com/fullchain.cer:/etc/certs/example.com/fullchain.cer:ro
      - /home/sbchild/.acme.sh/example.com/example.com.key:/etc/certs/example.com/example.com.key:ro
    environment:
      - WOODPECKER_LOG_LEVEL=trace
      - WOODPECKER_DEBUG_PRETTY=true
      - WOODPECKER_OPEN=true
      - WOODPECKER_AUTHENTICATE_PUBLIC_REPOS=true
      - WOODPECKER_ORGS=WoodpeckerUsers
      - WOODPECKER_HOST=https://example.com:3944
      - WOODPECKER_SERVER_CERT=/etc/certs/example.com/fullchain.cer
      - WOODPECKER_SERVER_KEY=/etc/certs/example.com/example.com.key
      - WOODPECKER_GITEA=true
      - WOODPECKER_GITEA_URL=https://example.com:3943/
      - WOODPECKER_GITEA_CLIENT=698c41b2-...-d57ee084f462
      - WOODPECKER_GITEA_SECRET=gto_secret
      - WOODPECKER_AGENT_SECRET=b55228f9...13fd5f59
      - WOODPECKER_DATABASE_DRIVER=postgres
      - WOODPECKER_DATABASE_DATASOURCE=postgres://woodpecker_u:password@172.17.0.1:5432/woodpecker_db?sslmode=disable
      - WOODPECKER_DEFAULT_CLONE_IMAGE=woodpeckerci/plugin-git:next
      - WOODPECKER_ADMIN=sbchild,WoodpeckerBot
      - WOODPECKER_LIMIT_MEM=100000000

  woodpecker-agent:
    image: woodpeckerci/woodpecker-agent:next-alpine
    networks:
      wp_net:
        ipv4_address: 172.18.0.3
    extra_hosts:
      - "example.com:10.7.0.8"
    command: agent
    restart: always
    depends_on:
      - woodpecker-server
    links:
      - woodpecker-server
    tmpfs:
      - /tmp
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - WOODPECKER_LOG_LEVEL=trace
      - WOODPECKER_SERVER=woodpecker-server:9000
      - WOODPECKER_AGENT_SECRET=b55228f9...13fd5f59

Additional context

Logs:

wpconf-woodpecker-server-1  | 5:58AM TRC woodpecker/src/github.com/woodpecker-ci/woodpecker/server/cron/cron.go:48 > Cron: fetch next crons
wpconf-woodpecker-server-1  | 5:58AM TRC woodpecker/src/github.com/woodpecker-ci/woodpecker/server/router/router.go:38 > [POST] /api/repos/sbchild/mirror-bot/pipelines/17?fork=true
wpconf-woodpecker-server-1  | 5:58AM DBG woodpecker/src/github.com/woodpecker-ci/woodpecker/server/router/middleware/token/token.go:67 > refreshed access token for sbchild
wpconf-woodpecker-server-1  | 5:58AM DBG woodpecker/src/github.com/woodpecker-ci/woodpecker/server/router/middleware/session/repo.go:132 > sbchild granted &{UserID:1 RepoID:29 Repo:<nil> Pull:true Push:true Admin:true Synced:1670649818 Created:1670614231 Updated:1670649818} permission to sbchild/mirror-bot
wpconf-woodpecker-server-1  | 5:58AM TRC woodpecker/src/github.com/woodpecker-ci/woodpecker/server/api/stream.go:85 > pubsub subscribe recover return: <nil>
wpconf-woodpecker-server-1  | 5:58AM DBG woodpecker/src/github.com/woodpecker-ci/woodpecker/server/queue/fifo.go:335 > queue: pending right now: 48
wpconf-woodpecker-server-1  | 5:58AM DBG woodpecker/src/github.com/woodpecker-ci/woodpecker/server/queue/fifo.go:307 > queue: trying to assign task: 48 with deps []
wpconf-woodpecker-server-1  | 5:58AM DBG woodpecker/src/github.com/woodpecker-ci/woodpecker/server/queue/fifo.go:311 > queue: assigned task: 48 with deps []
wpconf-woodpecker-server-1  | 5:58AM DBG woodpecker/src/github.com/woodpecker-ci/woodpecker/server/queue/persistent.go:102 > pull queue item: 48: remove from backup
wpconf-woodpecker-server-1  | 5:58AM DBG woodpecker/src/github.com/woodpecker-ci/woodpecker/server/queue/persistent.go:106 > pull queue item: 48: successfully removed from backup
wpconf-woodpecker-agent-1   | {"level":"debug","repo":"sbchild/mirror-bot","pipeline":"18","id":"48","time":"2022-12-10T05:58:58Z","caller":"/src/agent/runner.go:97","message":"received execution"}
wpconf-woodpecker-agent-1   | {"level":"debug","repo":"sbchild/mirror-bot","pipeline":"18","id":"48","time":"2022-12-10T05:58:58Z","caller":"/src/agent/runner.go:111","message":"listen for cancel signal"}
wpconf-woodpecker-server-1  | 5:58AM TRC woodpecker/src/github.com/woodpecker-ci/woodpecker/server/router/router.go:38 > [GET] /api/repos/sbchild/mirror-bot/pipelines/17
wpconf-woodpecker-server-1  | 5:58AM DBG woodpecker/src/github.com/woodpecker-ci/woodpecker/server/router/middleware/token/token.go:67 > refreshed access token for sbchild
wpconf-woodpecker-server-1  | 5:58AM DBG woodpecker/src/github.com/woodpecker-ci/woodpecker/server/router/middleware/session/repo.go:132 > sbchild granted &{UserID:1 RepoID:29 Repo:<nil> Pull:true Push:true Admin:true Synced:1670649818 Created:1670614231 Updated:1670649818} permission to sbchild/mirror-bot
wpconf-woodpecker-server-1  | 5:58AM DBG woodpecker/src/github.com/woodpecker-ci/woodpecker/server/router/middleware/logger.go:45 > ip=10.7.0.1 latency=30.59927 method=GET path=/api/repos/sbchild/mirror-bot/pipelines/17 status=200 user-agent="Mozilla/5.0 (X11; Linux x86_64; rv:107.0) Gecko/20100101 Firefox/107.0"
wpconf-woodpecker-agent-1   | {"level":"debug","ID":"48","Repo":"sbchild/mirror-bot","Pipeline":"18","time":"2022-12-10T05:58:58Z","caller":"/src/pipeline/pipeline.go:75","message":"Executing 2 stages, in order of:"}
wpconf-woodpecker-agent-1   | {"level":"debug","ID":"48","Repo":"sbchild/mirror-bot","Pipeline":"18","Stage":"wp_0_4918737390599440133_clone","Steps":"wp_0_4918737390599440133_clone","time":"2022-12-10T05:58:58Z","caller":"/src/pipeline/pipeline.go:85","message":"stage"}
wpconf-woodpecker-agent-1   | {"level":"debug","ID":"48","Repo":"sbchild/mirror-bot","Pipeline":"18","Stage":"wp_0_4918737390599440133_stage_0","Steps":"wp_0_4918737390599440133_step_0","time":"2022-12-10T05:58:58Z","caller":"/src/pipeline/pipeline.go:85","message":"stage"}
wpconf-woodpecker-server-1  | 5:58AM TRC woodpecker/src/github.com/woodpecker-ci/woodpecker/server/api/stream.go:85 > pubsub subscribe recover return: <nil>
wpconf-woodpecker-server-1  | 5:58AM TRC woodpecker/src/github.com/woodpecker-ci/woodpecker/server/router/router.go:38 > [GET] /api/repos/sbchild/mirror-bot/pipelines/17
wpconf-woodpecker-server-1  | 5:58AM DBG woodpecker/src/github.com/woodpecker-ci/woodpecker/server/router/middleware/logger.go:45 > ip=10.7.0.1 latency=177.832187 method=POST path=/api/repos/sbchild/mirror-bot/pipelines/17 status=200 user-agent="Mozilla/5.0 (X11; Linux x86_64; rv:107.0) Gecko/20100101 Firefox/107.0"
wpconf-woodpecker-server-1  | 5:58AM DBG woodpecker/src/github.com/woodpecker-ci/woodpecker/server/router/middleware/token/token.go:67 > refreshed access token for sbchild
wpconf-woodpecker-server-1  | 5:58AM DBG woodpecker/src/github.com/woodpecker-ci/woodpecker/server/router/middleware/session/repo.go:132 > sbchild granted &{UserID:1 RepoID:29 Repo:<nil> Pull:true Push:true Admin:true Synced:1670649818 Created:1670614231 Updated:1670649818} permission to sbchild/mirror-bot
wpconf-woodpecker-server-1  | 5:58AM DBG woodpecker/src/github.com/woodpecker-ci/woodpecker/server/router/middleware/logger.go:45 > ip=10.7.0.1 latency=47.09795 method=GET path=/api/repos/sbchild/mirror-bot/pipelines/17 status=200 user-agent="Mozilla/5.0 (X11; Linux x86_64; rv:107.0) Gecko/20100101 Firefox/107.0"
wpconf-woodpecker-agent-1   | {"level":"debug","ID":"48","Repo":"sbchild/mirror-bot","Pipeline":"18","Step":"wp_0_4918737390599440133_clone","time":"2022-12-10T05:58:59Z","caller":"/src/pipeline/pipeline.go:157","message":"Prepare"}
wpconf-woodpecker-agent-1   | {"level":"debug","repo":"sbchild/mirror-bot","pipeline":"18","id":"48","image":"woodpeckerci/plugin-git:next","stage":"clone","exit_code":0,"exited":false,"time":"2022-12-10T05:58:59Z","caller":"/src/agent/tracer.go:51","message":"update step status"}
wpconf-woodpecker-server-1  | 5:58AM TRC woodpecker/src/github.com/woodpecker-ci/woodpecker/server/router/router.go:38 > [GET] /api/badges/sbchild/mirror-bot/status.svg
wpconf-woodpecker-server-1  | 5:58AM TRC woodpecker/src/github.com/woodpecker-ci/woodpecker/server/api/stream.go:85 > pubsub subscribe recover return: <nil>
wpconf-woodpecker-agent-1   | {"level":"debug","repo":"sbchild/mirror-bot","pipeline":"18","id":"48","image":"woodpeckerci/plugin-git:next","stage":"clone","exit_code":0,"exited":false,"time":"2022-12-10T05:58:59Z","caller":"/src/agent/tracer.go:59","message":"update step status complete"}
wpconf-woodpecker-agent-1   | {"level":"debug","ID":"48","Repo":"sbchild/mirror-bot","Pipeline":"18","Step":"wp_0_4918737390599440133_clone","time":"2022-12-10T05:58:59Z","caller":"/src/pipeline/pipeline.go:184","message":"Executing"}
wpconf-woodpecker-server-1  | 5:58AM TRC woodpecker/src/github.com/woodpecker-ci/woodpecker/server/router/router.go:38 > [GET] /api/repos/sbchild/mirror-bot/branches
wpconf-woodpecker-server-1  | 5:58AM DBG woodpecker/src/github.com/woodpecker-ci/woodpecker/server/router/middleware/token/token.go:67 > refreshed access token for sbchild
wpconf-woodpecker-server-1  | 5:58AM DBG woodpecker/src/github.com/woodpecker-ci/woodpecker/server/router/middleware/logger.go:45 > ip=10.7.0.1 latency=92.009143 method=GET path=/api/badges/sbchild/mirror-bot/status.svg status=200 user-agent="Mozilla/5.0 (X11; Linux x86_64; rv:107.0) Gecko/20100101 Firefox/107.0"
wpconf-woodpecker-server-1  | 5:58AM DBG woodpecker/src/github.com/woodpecker-ci/woodpecker/server/router/middleware/token/token.go:67 > refreshed access token for sbchild
wpconf-woodpecker-server-1  | 5:58AM DBG woodpecker/src/github.com/woodpecker-ci/woodpecker/server/router/middleware/session/repo.go:132 > sbchild granted &{UserID:1 RepoID:29 Repo:<nil> Pull:true Push:true Admin:true Synced:1670649818 Created:1670614231 Updated:1670649818} permission to sbchild/mirror-bot
wpconf-woodpecker-server-1  | 5:58AM DBG woodpecker/src/github.com/woodpecker-ci/woodpecker/server/router/middleware/logger.go:45 > ip=10.7.0.1 latency=179.133318 method=GET path=/api/repos/sbchild/mirror-bot/branches status=200 user-agent="Mozilla/5.0 (X11; Linux x86_64; rv:107.0) Gecko/20100101 Firefox/107.0"
wpconf-woodpecker-agent-1   | {"level":"debug","repo":"sbchild/mirror-bot","pipeline":"18","id":"48","image":"woodpeckerci/plugin-git:next","stage":"clone","time":"2022-12-10T05:59:01Z","caller":"/src/agent/logger.go:53","message":"log stream opened"}
wpconf-woodpecker-agent-1   | {"level":"trace","name":"clone","ID":"48","time":"2022-12-10T05:59:01Z","caller":"/src/pipeline/rpc/line.go:69","message":"grpc write line: + git init -b main\n"}
wpconf-woodpecker-agent-1   | {"level":"trace","name":"clone","ID":"48","time":"2022-12-10T05:59:01Z","caller":"/src/pipeline/rpc/line.go:69","message":"grpc write line: Initialized empty Git repository in /woodpecker/src/example.com/sbchild/mirror-bot/.git/\n"}
wpconf-woodpecker-agent-1   | {"level":"trace","name":"clone","ID":"48","time":"2022-12-10T05:59:01Z","caller":"/src/pipeline/rpc/line.go:69","message":"grpc write line: + git remote add origin https://example.com:3943/sbchild/mirror-bot.git\n"}
wpconf-woodpecker-agent-1   | {"level":"trace","name":"clone","ID":"48","time":"2022-12-10T05:59:01Z","caller":"/src/pipeline/rpc/line.go:69","message":"grpc write line: + git fetch --no-tags --depth=1 --filter=tree:0 origin +main:\n"}
wpconf-woodpecker-agent-1   | {"level":"trace","name":"clone","ID":"48","time":"2022-12-10T05:59:04Z","caller":"/src/pipeline/rpc/line.go:69","message":"grpc write line: fatal: could not read Username for 'https://example.com:3943': terminal prompts disabled\n"}
wpconf-woodpecker-agent-1   | {"level":"trace","name":"clone","ID":"48","time":"2022-12-10T05:59:04Z","caller":"/src/pipeline/rpc/line.go:69","message":"grpc write line: exit status 128\n"}
wpconf-woodpecker-agent-1   | {"level":"error","error":"io: read/write on closed pipe","time":"2022-12-10T05:59:04Z","caller":"/src/agent/logger.go:58","message":"copy limited logStream part"}
wpconf-woodpecker-agent-1   | {"level":"debug","repo":"sbchild/mirror-bot","pipeline":"18","id":"48","image":"woodpeckerci/plugin-git:next","stage":"clone","time":"2022-12-10T05:59:04Z","caller":"/src/agent/logger.go:61","message":"log stream copied"}
wpconf-woodpecker-agent-1   | {"level":"debug","repo":"sbchild/mirror-bot","pipeline":"18","id":"48","image":"woodpeckerci/plugin-git:next","stage":"clone","time":"2022-12-10T05:59:04Z","caller":"/src/agent/logger.go:77","message":"log stream uploading"}
wpconf-woodpecker-agent-1   | {"level":"debug","repo":"sbchild/mirror-bot","pipeline":"18","id":"48","image":"woodpeckerci/plugin-git:next","stage":"clone","time":"2022-12-10T05:59:04Z","caller":"/src/agent/logger.go:81","message":"log stream upload complete"}
wpconf-woodpecker-agent-1   | {"level":"debug","repo":"sbchild/mirror-bot","pipeline":"18","id":"48","image":"woodpeckerci/plugin-git:next","stage":"clone","time":"2022-12-10T05:59:04Z","caller":"/src/agent/logger.go:85","message":"log stream closed"}
wpconf-woodpecker-server-1  | 5:59AM TRC woodpecker/src/github.com/woodpecker-ci/woodpecker/server/cron/cron.go:48 > Cron: fetch next crons
wpconf-woodpecker-agent-1   | {"level":"debug","ID":"48","Repo":"sbchild/mirror-bot","Pipeline":"18","Step":"wp_0_4918737390599440133_clone","time":"2022-12-10T05:59:06Z","caller":"/src/pipeline/pipeline.go:190","message":"Complete"}
wpconf-woodpecker-agent-1   | {"level":"debug","repo":"sbchild/mirror-bot","pipeline":"18","id":"48","image":"woodpeckerci/plugin-git:next","stage":"clone","exit_code":128,"exited":true,"time":"2022-12-10T05:59:06Z","caller":"/src/agent/tracer.go:51","message":"update step status"}
wpconf-woodpecker-server-1  | 5:59AM TRC woodpecker/src/github.com/woodpecker-ci/woodpecker/server/api/stream.go:85 > pubsub subscribe recover return: <nil>
wpconf-woodpecker-agent-1   | {"level":"debug","repo":"sbchild/mirror-bot","pipeline":"18","id":"48","image":"woodpeckerci/plugin-git:next","stage":"clone","exit_code":128,"exited":true,"time":"2022-12-10T05:59:06Z","caller":"/src/agent/tracer.go:59","message":"update step status complete"}
wpconf-woodpecker-agent-1   | {"level":"debug","ID":"48","Repo":"sbchild/mirror-bot","Pipeline":"18","Step":"wp_0_4918737390599440133_step_0","time":"2022-12-10T05:59:06Z","caller":"/src/pipeline/pipeline.go:157","message":"Prepare"}
wpconf-woodpecker-agent-1   | {"level":"debug","ID":"48","Repo":"sbchild/mirror-bot","Pipeline":"18","Step":"wp_0_4918737390599440133_step_0","error":"wp_0_4918737390599440133_clone : exit code 128","time":"2022-12-10T05:59:06Z","caller":"/src/pipeline/pipeline.go:164","message":"Skipped due to OnFailure=false"}
wpconf-woodpecker-agent-1   | {"level":"debug","repo":"sbchild/mirror-bot","pipeline":"18","id":"48","error":"","exit_code":128,"canceled":false,"time":"2022-12-10T05:59:06Z","caller":"/src/agent/runner.go:185","message":"pipeline complete"}
wpconf-woodpecker-agent-1   | {"level":"debug","repo":"sbchild/mirror-bot","pipeline":"18","id":"48","time":"2022-12-10T05:59:06Z","caller":"/src/agent/runner.go:187","message":"uploading logs"}
wpconf-woodpecker-agent-1   | {"level":"debug","repo":"sbchild/mirror-bot","pipeline":"18","id":"48","time":"2022-12-10T05:59:06Z","caller":"/src/agent/runner.go:189","message":"uploading logs complete"}
wpconf-woodpecker-agent-1   | {"level":"debug","repo":"sbchild/mirror-bot","pipeline":"18","id":"48","error":"","exit_code":128,"time":"2022-12-10T05:59:06Z","caller":"/src/agent/runner.go:194","message":"updating pipeline status"}
wpconf-woodpecker-server-1  | 5:59AM TRC woodpecker/src/github.com/woodpecker-ci/woodpecker/server/grpc/rpc.go:326 > gRPC Done with state: rpc.State{Step:"", Exited:true, ExitCode:128, Started:1670651938, Finished:1670651946, Error:""} build_id=18 repo_id=29 step_id=48
wpconf-woodpecker-agent-1   | {"level":"error","error":"rpc error: code = Unknown desc = Step finished with exitcode 128, ","time":"2022-12-10T05:59:06Z","caller":"/src/pipeline/rpc/client_grpc.go:97","message":"grpc error: wait(): code: Unknown: rpc error: code = Unknown desc = Step finished with exitcode 128, "}
wpconf-woodpecker-agent-1   | {"level":"warn","repo":"sbchild/mirror-bot","pipeline":"18","id":"48","error":"rpc error: code = Unknown desc = Step finished with exitcode 128, ","time":"2022-12-10T05:59:06Z","caller":"/src/agent/runner.go:115","message":"cancel signal received"}
wpconf-woodpecker-agent-1   | {"level":"debug","repo":"sbchild/mirror-bot","pipeline":"18","id":"48","time":"2022-12-10T05:59:06Z","caller":"/src/agent/runner.go:127","message":"pipeline done"}
wpconf-woodpecker-agent-1   | {"level":"debug","repo":"sbchild/mirror-bot","pipeline":"18","id":"48","time":"2022-12-10T05:59:06Z","caller":"/src/agent/runner.go:199","message":"updating pipeline status complete"}
wpconf-woodpecker-agent-1   | {"level":"debug","time":"2022-12-10T05:59:06Z","caller":"/src/cmd/agent/agent.go:171","message":"polling new steps"}
wpconf-woodpecker-agent-1   | {"level":"debug","time":"2022-12-10T05:59:06Z","caller":"/src/agent/runner.go:61","message":"request next execution"}
wpconf-woodpecker-server-1  | 5:59AM TRC woodpecker/src/github.com/woodpecker-ci/woodpecker/server/api/stream.go:85 > pubsub subscribe recover return: <nil>
wpconf-woodpecker-server-1  | 5:59AM DBG woodpecker/src/github.com/woodpecker-ci/woodpecker/server/grpc/rpc.go:61 > agent connected: a64da50707e4: polling
wpconf-woodpecker-server-1  | 5:59AM TRC woodpecker/src/github.com/woodpecker-ci/woodpecker/server/cron/cron.go:48 > Cron: fetch next crons

Validations

wxiaoguang commented 1 year ago

I have proposed a fix for it

sb-child commented 1 year ago

#52 seems fixed it, closed. Feel free to open