node { stage ("Checkout") { checkout scm } stage ("Dependencies") { sh "npm ci" } stage ("Build Gatsby") { environment { GATSBY_FIREBASE_API_KEY = credentials('FIREBASE_API_KEY') GATSBY_AUTH_DOMAIN = "spencassemble-sol-journal.firebaseapp.com" GATSBY_DATABASE_URL = "https://spencassemble-sol-journal.firebaseio.com" GATSBY_PROJECT_ID = "spencassemble-sol-journal" GATSBY_STORAGE_BUCKET = "spencassemble-sol-journal.appspot.com" GATSBY_MESSAGING_SENDER_ID = "299522647169" GATSBY_APP_ID = "1:299522647169:web:fc74af44747fd7cef79980" } steps { sh "npm run build" } } docker.withServer("ssh://rancher@192.168.1.116") { stage ("Build Container") { sh "docker image build -t spencerpincott/sol-journal:1.${env.BUILD_NUMBER} ." } stage ("Publish Container") { withCredentials([usernamePassword(credentialsId: "DockerHub", usernameVariable: "DOCKERUSER", passwordVariable: "DOCKERPASS")]) { sh 'docker login -u "$DOCKERUSER" -p "$DOCKERPASS"' } sh "docker image push spencerpincott/sol-journal:1.${env.BUILD_NUMBER}" } } stage ("Deploy") { sh "ssh rancher@192.168.1.116 'docker stop sol-journal && docker rm sol-journal'" sh "ssh rancher@192.168.1.116 'docker run -dit -p 5000:80 --name sol-journal --restart=always spencerpincott/sol-journal:1.${env.BUILD_NUMBER}'" } }