目标是获得可以在shell命令中评估的明确状态.
我试过git status但它总是返回0,即使有提交的项目.
git status
echo $? #this is always 0
Run Code Online (Sandbox Code Playgroud)
我有一个想法,但我认为这是一个坏主意.
if [ git status | grep -i -c "[a-z]"> 2 ];
then
code for change...
else
code for nothing change...
fi
Run Code Online (Sandbox Code Playgroud)
任何其他方式?
通过以下解决更新,请参阅Mark Longair的帖子
我尝试了这个,但它导致了一个问题.
if [ -z $(git status --porcelain) ];
then
echo "IT IS CLEAN"
else
echo "PLEASE COMMIT YOUR CHANGE FIRST!!!"
echo git status
fi
Run Code Online (Sandbox Code Playgroud)
我收到以下错误 [: ??: binary operator expected
现在,我正在看那个男人并尝试git diff.
===================代码为我的希望,希望更好的答案======================
#if [ `git status | grep -i -c "$"` …Run Code Online (Sandbox Code Playgroud) 我在寻找这个答案时发现的恐怖故事......
好的,我有一个.sh脚本,几乎可以完成Jenkins应该做的所有事情:
所以在Jenkins中我只需要通过在Execute Shell命令中运行脚本来"构建"项目.脚本已运行(源代码已下载,项目已构建/部署)但随后它将构建标记为失败:构建步骤"执行shell"将构建标记为失败即使脚本已成功运行!我尝试用以下方法关闭脚本:
Execute Shell何时,如何以及为何将我的构建标记为失败?
我正在尝试编写一个可以执行的结构脚本git commit; 但是,如果没有提交,git退出状态为1.部署脚本将其视为不成功,并退出.我确实想要检测实际的失败提交,所以我不能仅仅给织物一个忽略git commit失败的问题.如何允许忽略空提交失败,以便部署可以继续,但仍然捕获真正提交失败时导致的错误?
def commit():
local("git add -p && git commit")
Run Code Online (Sandbox Code Playgroud) 使用 create-react-app,在我的 CI 管道中运行测试时,如果未满足代码覆盖率阈值,我希望控制台返回非零响应。
包.json
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"test:coverage": "npm run test -- --coverage --watchAll=false",
},
"jest": {
"collectCoverageFrom": [
"src/components/**/*.js",
"src/state/**/*.js",
"src/templates/**/*.js",
"src/routes/**/*.js"
],
"coverageThreshold": {
"global": {
"branches": 80,
"functions": 80,
"lines": 80,
"statements": 80
}
}
}
Run Code Online (Sandbox Code Playgroud)
运行test:coverage控制台时报告未满足阈值,但仍返回 0。我从 Jest 文档中了解到,当未满足覆盖阈值时,应返回错误。
https://jestjs.io/docs/en/configuration#coveragethreshold-object
具体来说...
If thresholds aren't met, jest will fail.
Run Code Online (Sandbox Code Playgroud)
有人熟悉这个问题吗?我经历过 Jest 和 CRA github 问题,结果喜忧参半,大多数发现都与过时的版本有关。
我想在脚本中包含一个删除本地Git分支的命令,并且我不希望显示任何错误消息(如果该分支不存在)。同时,我也不需要状态代码来指示Git命令失败。
给出以下示例:
git branch -D foo
Run Code Online (Sandbox Code Playgroud)
如果该分支存在,则将其删除,并且命令的返回状态为0,表示成功。如果我再次运行相同的脚本,则该分支不再存在,因此命令失败,打印
error: branch 'foo' not found.
Run Code Online (Sandbox Code Playgroud)
并且Git命令的返回状态为> 0,表示错误。
有没有一种方法可以使命令静音,以便它不在乎分支是否首先存在?理想情况下,它不会打印错误消息,也不会通过非零返回状态指示失败。
我知道我可以使用一些脚本魔术来解决这些问题,但是我更喜欢一个简单的解决方案,因为我必须在Windows(.bat)和Unix / Linux / Mac(.sh)上执行相同的操作。
我错过了一个选择,还是我不走运?
我想要一个 Jenkins 作业来杀死端口 5000 (bash) 上的所有进程。简单的解决方案
fuser -k 5000/tcp
Run Code Online (Sandbox Code Playgroud)
当我在终端中执行此命令时工作正常,但在 Jenkins(“执行 shell”)上将构建标记为失败。
我也尝试过
kill $(lsof -i -t:5000)
Run Code Online (Sandbox Code Playgroud)
但同样,因为它在常规终端上工作,所以在詹金斯上我得到
kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
Build step 'Execute shell' marked build as failure
Run Code Online (Sandbox Code Playgroud)
任何想法如何解决这一问题?