hzgotb opened 5 months ago
|
|||||
Agent 是以docker方式启动的吗?如果是的话,pull一下用最新的image, docker pull 1dev/agent |
|||||
裸机。上面写了 😄 然后 docker 也是最新的。在机子上直接运行docker buildx build --help 是有push指令的。 |
|||||
在你能够运行 docker buildx build --push 的命令行窗口里,直接启动agent,然后运行下 job试试能不能成功。 |
|||||
你的意思是通过console的方式启动agent吗 |
|||||
是的,看看是不是不同用户账号环境的原因。 |
|||||
不行。我现在agent.sh的run_as_user是macos的用户。试了不行,注释掉也一样有问题。是不是裸机agent也要更新? |
|||||
那你命令行直接运行 |
|||||
Robin Shen changed title 5 months ago
|
|||||
可以运行没报错。 |
|||||
我这边可以正常工作,你检查下 executor advanced setting 里 docker 是否指向了其他版本。 |
|||||
没有。是默认的。 |
|||||
我想问一下 remote docker 的机制。因为我的agent是运行在机子上,不是运行在机子上的docker里。 假设,我在步骤1执行checkout,这时候代码应该是在我的机子上的对吧? 那么步骤2执行shell, run in container,那就是说运行一个容器并且把第一步的代码copy进容器(还是挂载?),然后运行shell。 步骤3是构建镜像并发布,那这里的操作是起一个新容器去执行还是通过agent直接在裸机上执行? |
|||||
步骤 2 会把代码挂载进容器,步骤 3 直接在裸机上执行。 |
|||||
你创建一个包含这个 Mac agent 的 remote shell executor,然后用这个 executor 执行一个 command step,里面 build image 如下看看能否成功:
|
|||||
我添加了一个 remote shell executor ,然后直接 test ,输入pwd是可以的。但是用 docker buildx build --help 就提示:
|
|||||
找不到 docker 命令,感觉是环境的问题。你直接在 executor 设置里指定 docker 路径看看。或者以控制台模式启动 agent |
|||||
我执行flutter那些指令也是。现在默认的shell是zsh,但是agent启动起来之后获取的环境变量只有寥寥几个,太干净了。 之前我是在 .bashrc 里 export 出了环境变量,然后改了 agent.sh 里的 files_to_source 来解决 flutter指令。 默认情况下只有这些
我which了一下docker,是在/usr/local/bin/docker |
|||||
直接控制台启动 agent ( |
|||||
注释后在shell executor的test会报错没找到命令 |
|||||
连 sh 都找不到?那 command step 的 interpreter 里指定一个其他的 shell,比如 zsh |
|||||
重新捋一下。
我把 files_to_sources 注释掉了。
然后在 shell executor 中执行 flutter -v 是报错的,但是执行 docker buildx build --help 是正常的
如果 files_to source="~/.bashrc" 被设置了
那么flutter -v是正常的,docker 指令是找不到的
默认的配置是 以上,在remote docker executor中运行构建镜像并推送的行为,均提示 |
|||||
设置了 Docker Sock Path ,一样不行 |
|||||
Advanced setting 里的 docker executable path |
|||||
没看到 😅 看文档看到了.。我试试 还是不行。提示
|
|||||
是不是 Build Docker Image 这个操作所处的环境有问题?没有加载到 docker-buildx ? |
|||||
再确认一下,从控制台以 ./agent.sh console的方式启动 (去除files_to_source,先别管 flutter),然后在 shell executor 里通过 command step 运行 控制台启动的话 command step 会继承当前命令窗口的所有环境。 |
|||||
按这些条件,刚刚试了一下,正常运行 |
|||||
那这个时候能通过 remote docker executor 运行 build image step 吗? |
|||||
不能 😂 😂 |
|||||
在命令行下运行下面的命令能成功吗?
|
|||||
终端还是说builds里的shell executor? |
|||||
直接在终端下运行 |
|||||
Robin Shen changed state to 'Closed' 4 months ago
|
|||||
无法重现。 |
|||||
hzgotb changed state to 'Open' 4 months ago
|
|||||
我模拟了一下在整个流程,是正常的。可以远程帮忙看一下吗? 对了。我还安装了oh my zsh。不知道有没有关系 我尝试用 ssh user@ip -t /bin/sh 登陆到机子上 printenv ,发现环境变量和 agent.sh 打印出来的是一样的。 agent.sh 使用 /bin/sh 执行的。 |
|||||
修改了 agent 的执行方式为 /bin/bash ,并且在.bashrc中完善了环境变量。shell executor中可以运行。就是docker executor的build image步骤一直提示unknown --push。 |
|||||
试过这个吗? |
|||||
试过了。是正常的。 |
|||||
升级到 9.4.4 看看行不行 |
|||||
终于解决了。😄 😄 为啥源码现在看不到了 🤣 🤣 加一个观察者? |
|||||
或者拉一个贡献者 😁 😁 java和前端我都可以阅读。做做文档,i18n那些没问题。 |
|||||
OneDev 上的源码因为包含了企业版模块,就不公开了。但是其他部分一直会 push 到 github: https://github.com/theonedev/onedev 也是可以直接编译运行的。 |
|||||
Robin Shen changed state to 'Closed' 4 months ago
|
|||||
哦哦。之前看github一直是没有源码的。原来如此。好!! |
Type |
Question
|
Priority |
Normal
|
Assignee | |
Labels |
No labels
|
OneDev 是 9.3.2
运行 agent 的环境是 mac mini m2 的裸机。里面已经安装了 docker .
因为 .onedev-buildspec.yml 的构建步骤中有部分是需要 run in container 的,所以 Job Executor 是一个 Remote Docker .
这时候 agent 和 job exector 是不是因为不匹配导致 buildx 报错?