我想要达到的目标是:
React的一个完全自动化的部署,在对live分支的任何提交上,由我自己定义的使用npm 6.14.8运行Ubuntu Server 20.04的Github进行部署
到目前为止我所拥有的是:
autodeploy.yml
name: AutoDeploy
on:
push:
branches: [live]
jobs:
build:
name: Deploy Client App
runs-on: self-hosted
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v1
with:
node-version: '12'
- name: Fetch latest version
uses: actions/checkout@v1
- name: Install Dependencies
run: npm install
working-directory: ./Code/client-app-react
- name: Build project
run: npm run build
working-directory: ./Code/client-app-react
- name: Copy build to webserver
run: sudo cp -r ./ /var/www/domains/react.app.public
working-directory: ./Code/client-app-react/build
- name: Copy .htaccess to webserver
run: sudo cp .htaccess /var/www/domains/react.app.public/.htaccess
working-directory: ./Media/Server一切似乎都正常,直到我一步一步到达复制/粘贴。
sudo cp -r ./ /var/www/domains/react.app.public我得到的信息是:
sudo: no tty present and no askpass program specified
Error: Process completed with exit code 1.我不知道AskPass是什么,也不知道如何打开TTY。根据这篇文章,我希望它能发挥作用:
https://stackoverflow.com/questions/57830375/github-actions-workflow-error-permission-denied
如何从autodeploy.yml操作配置文件执行特权或提升的命令?
发布于 2020-11-20 22:53:53
有两种可能的解决办法:
/var/www/domains/react.app.public目录的权限,以便用户可以写入该目录。然后,可以将sudo从命令中移除。sudo配置为在执行命令时不询问密码。这可以在/etc/sudoers.d/autodeploy中用下面的行实现user ALL = (root) NOPASSWD: /usr/bin/cp -r ./ /var/www/domains/react.app.public
user ALL = (root) NOPASSWD: /usr/bin/cp .htaccess /var/www/domains/react.app.public/.htaccess在这里,user是运行部署过程的用户的名称。
https://serverfault.com/questions/1043214
复制相似问题