gpt4 book ai didi

Jenkins 不会通过 sh 'cd directory' 命令更改目录

转载 作者:行者123 更新时间:2023-12-03 18:34:53 25 4
gpt4 key购买 nike

我用麦克。我在 react-native 上有 ios 和 android 项目,并为每个项目创建了 faSTLane 脚本。现在我想在管道中使用 Jenkins 自动构建,所以我有 Jenkins 文件。在 Jenkins 的工作空间我必须去ios文件夹,然后执行 faSTLane 脚本。

但问题是 Jenkins 不会使用命令 sh 'cd ios' 更改目录.我可以看到它,因为我执行 pwd更改目录命令之前和之后的命令。

我尝试使用符号链接(symbolic link),使用“点”命令(如 sh '. cd ios')在当前进程中运行命令,尝试使用 ios 文件夹的完整路径。但这一切并没有带来成功:(

那么,为什么 Jenkins 不使用 sh 'cd ios' 更改目录?命令?我该如何应对?先感谢您。

这是我的脚本

pipeline {

代理任何

工具 {nodejs“Jenkins_NodeJS”}

阶段{
stage('Pulling git repo'){
steps{
git(
url: 'url_to_git_repo',
credentialsId: 'jenkins_private_key2',
branch: 'new_code'
)
}
}

stage('Prepare') {
steps{
sh 'npm install -g yarn'
sh 'yarn install'
}
}

stage('Building') {
steps{
sh 'cd /Users/igor/.jenkins/workspace/MobileAppsPipeline/ios'
sh 'ls -l'
sh '/usr/local/bin/fastlane build_and_push'
}
}

}
}

最佳答案

仅作记录,因为它更具描述性,并且您正在使用描述性管道;)

如果你想在特定目录做一些工作,有一个 step为了那个原因:

stage('Test') {
steps {
dir('ios') { // or absolute path
sh '/usr/local/bin/fastlane build_and_push'
}
}
}

下面的例子
pipeline {
agent any

stages {
stage('mkdir') {
steps {
sh'mkdir ios && touch ios/HelloWorld.txt'
}
}
stage('test') {
steps {
dir('ios') {
sh'ls -la'
}
}
}
}
}

产生输出
[Pipeline] stage
[Pipeline] { (mkdir)
[Pipeline] sh
+ mkdir ios 6073 touch ios/HelloWorld.txt
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (test)
[Pipeline] dir
Running in /stuff/bob/workspace/test-1/ios
[Pipeline] {
[Pipeline] sh
+ ls -la
total 12
drwxrwxr-x 3 bob bob 4096 Sep 20 13:34 .
drwxrwxr-x 6 bob bob 4096 Sep 20 13:34 ..
drwxrwxr-x 2 bob bob 4096 Sep 20 13:34 HelloWorld.txt
[Pipeline] }
[Pipeline] // dir
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline

关于Jenkins 不会通过 sh 'cd directory' 命令更改目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58027675/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com