Linux screen dissapears after Jenkins job is done

Viewed 136

I have made a Jenkins pipeline for my Angular application. This Angular application uses SSR, so you have to run it in the background.

Thus I decided to use a screen for this, here is my JenkinsFile:

pipeline {
  agent any
  environment {
      HOME = '.'
  }
  stages {
    stage('build') {
      steps {
        sh 'npm i'
        sh 'npm run build:ssr'
      }
    }

    stage('move') {
      steps {
        script {
          if (BRANCH_NAME == 'master') {
            sh 'rm -R /var/www/AngularJenkinsTest_Master/client || true'
            sh 'mkdir /var/www/AngularJenkinsTest_Master/client || true'
            sh 'cp -R $WORKSPACE/dist/AngularJenkinsTest/* /var/www/AngularJenkinsTest_Master/client'
          }
        }
      }
    }

    stage('publish') {
      steps {
        script {
          if (BRANCH_NAME == 'master') {
            sh 'screen -X -S AngularJenkinsTest_Master kill | true'
            sh 'screen -dmS AngularJenkinsTest_Master'
            sh 'screen -S AngularJenkinsTest_Master -X stuff "node /var/www/AngularJenkinsTest_Master/client/server/main.js\n"'
          }
        }
      }
    }

  }
}

As you can see in "publish", I kill the screen (as it is running a node application), I then create a new screen and send a command to it.

I added a screen -ls to the end of it, and it did show that it existed, but when I go to my linux console.

jenkins@server:/root$ screen -ls
No Sockets found in /run/screen/S-jenkins.

This is the output that jenkins gives me: Jenkins Output

I am new to Jenkins, so maybe I am just being dumb, but is there any reason for this to happen?

0 Answers
Related