我终于找到了解决这个问题的方法。花了几天的时间。首先,我删除了Jenkins项目,并使用Pipeline而不是Freestyle创建了一个新项目。然后,我添加了带有脚本的Jenkinsfile。那继续失败,但是现在我可以灵活地添加其他命令来处理错误。
一个新的错误是关于玩笑的工人。我在DigitalOcean服务器上运行了以下命令以超越该命令:
yarn add jest-worker
然后我又遇到了旧的权限错误。我认为所有这些权限错误都是由于用户jenkins试图运行root用户拥有的内容而引起的,即使所有内容都具有777权限。我不明白,但这就是我的解决方法。修改/ etc / sudoers文件并添加以下行:
jenkins ALL=(ALL) NOPASSWD:ALL
然后修改Jenkins文件脚本,以包括递归chmod和chown。这是最终工作的完整脚本:
pipeline {
agent any
stages {
stage('Checkout') {
steps {
echo 'Checkout...'
sh 'sudo chmod -R 777 /var/lib/jenkins/workspace/MedAverter/medaverter-front'
checkout scm
sh 'sudo chmod -R 777 /var/lib/jenkins/workspace/MedAverter/medaverter-front'
sh 'sudo chown -R jenkins /var/lib/jenkins/workspace/MedAverter/medaverter-front'
stash 'sources'
}
}
stage('Build') {
steps {
echo 'Build...'
unstash 'sources'
sh 'sudo chmod -R 777 /var/lib/jenkins/workspace/MedAverter/medaverter-front'
sh 'sudo chown -R jenkins /var/lib/jenkins/workspace/MedAverter/medaverter-front'
sh 'mvn clean package -DskipTests'
stash 'sources'
}
}
}
}
我还不得不将DigitalOcean Droplet的内存从1GB增加到2GB,以克服另一个错误。如果有人知道更好的方法来克服令人沮丧的权限错误,请发表评论。