Vai*_*han 1 bash jenkins ansible
我正在尝试在我们的 ansible 剧本中添加新的部分,该剧本是通过 Jenkins 运行的。我的错误是cd: too many arguments
.
ansible 剧本代码
- name: "obfuscating python code"
command: "cd /opt/company_name/{{ app_name }}/current/lib/python3.6/site-packages/{{ app_module }}/ & pyarmor obfuscate --src='.' -r __init__.py & cp -r dist/* . & rm -rf dist & cd -"
Run Code Online (Sandbox Code Playgroud)
jenkins 运行 ansible playbook 会出现这样的错误
TASK [python-app : obfuscating python code] ************************************
fatal: [server]: FAILED! => {"changed": true, "cmd": ["cd", "/opt/company_name/app-name/current/lib/python3.6/site-packages/app_name/", "&", "pyarmor", "obfuscate", "--src=.", "-r", "__init__.py", "&", "cp", "-r", "dist/*", ".", "&", "rm", "-rf", "dist", "&", "cd", "-"], "delta": "0:00:00.005432", "end": "2022-04-14 23:02:46.568316", "msg": "non-zero return code", "rc": 1, "start": "2022-04-14 23:02:46.562884", "stderr": "/bin/cd: line 2: cd: too many arguments", "stderr_lines": ["/bin/cd: line 2: cd: too many arguments"], "stdout": "", "stdout_lines": []}
Run Code Online (Sandbox Code Playgroud)
更新:我按照建议更新了代码以及更多命令,我想在运行 pyarmor 之前激活 python 虚拟环境,它现在失败了No such file or directory: 'source'
- name: "obfuscating python code"
command: "source /opt/company_name/{{ app_name }}/current/bin/activate && pyarmor obfuscate --src='.' -r __init__.py && cp -fr dist/* . && rm -rf dist"
chdir: /opt/intuitive/{{ app_name }}/current/lib/python3.6/site-packages/{{ app_module }}/
Run Code Online (Sandbox Code Playgroud)
TASK [python-app : obfuscating python code] ************************************
fatal: [server]: FAILED! => {"changed": false, "cmd": "source /opt/company/app-name/current/bin/activate '&&' pyarmor obfuscate --src=. -r __init__.py '&&' cp -fr 'dist/*' . '&&' rm -rf dist", "msg": "[Errno 2] No such file or directory: 'source': 'source'", "rc": 2}
Run Code Online (Sandbox Code Playgroud)
您正在尝试将 shell 功能与该command
模块一起使用。command
不使用 shell,因此整个命令行都会cd
作为参数传递。shell
当您使用管道、文件通配等 shell 功能时,您应该使用该模块。
您还可以使用模块的内置支持来设置工作目录,以使命令更短一些。
- name: Obfuscate python code
shell:
cmd: pyarmor obfuscate --src='.' -r __init__.py && cp -r dist/* . && rm -rf dist
chdir: /opt/company_name/{{ app_name }}/current/lib/python3.6/site-packages/{{ app_module }}
Run Code Online (Sandbox Code Playgroud)