Hi guys,
I am running Jenkins in an OSX EC2 instance and everything is working fine. I have one particular requirement which I am currently working for quite sometime. Let me explain the scenario in simple words. I have a pipeline script like below;
pipeline {
agent {
label 'master'
}
tools {
nodejs "node-v14.17.5"
}
stages {
stage('stage1') {
steps {
dir("dir_a"){
sh 'command_a'
}
dir("dir_b"){
sh 'command_b'
}
}
}
stage('stage2') {
steps {
dir("dir_c"){
sh 'command_c'
}
}
}
}
}
This might looks fine, but I have one requirement. command_a in stage_1 should be running all the time, because command _b and command_c are depending on that. Basically command_a is yarn start which is required for IOS app build. Now, I can very well proceed with the pipeline by replacing command_a with something like nohup command_a >> command_a.log & . But when I try this command locally, the server (the command actually starts metro server) starts, but it will get stuck in the middle. I figured out that the server need to run in foreground, which will not return the control back to console.
In real world, without Jenkins, the process works like this;
- I open up a terminal and execute
command_ain it. The process will run in foreground. - I open up a another terminal and run
command_bandcommand_cin it, which works well.
Then I thought of writing a script, which automatically launch another terminal from existing terminal and execute the required command in it. I ended up creating a script like this;
osascript -e 'tell app "Terminal" to do script "cd /workspace/MyPipeline/dir_a && command_a"'
This worked well in the mac terminal. It will execute the command in a separate terminal after going to the specified directory. The equivalent jenkins script I included in the pipeline is like below;
sh 'osascript -e \'tell app "Terminal" to do script "cd /workspace/MyPipeline/dir_a && command_a"\''
But it returned an error like below;
execution error: An error of type -10826 has occurred. (-10826)
So, my question is, is there any possibility to achieve executing one command while running another command in foreground using Jenkins pipeline? Basically, two parallel executions.
Thanks in advance.