如何在本地运行 go 二进制文件作为 Jenkins 管道的最后阶段?

我有一个简单的 gin gonic 微服务 Golang 项目,我用它来学习如何制作 Jenkins 管道。每个阶段都成功运行,但在管道完成后二进制文件没有运行。还可以通过使用 curl 命中端点来判断进程没有运行:


卷曲http://localhost:9191/users


这是有问题的管道:


pipeline {

   agent any


   stages {

      stage('git') {

         steps {

            echo "git"

            git 'https://github.com/eduFDiaz/golang-microservices.git'

         }

      }

      stage('clean') {

         steps {

            echo "clean"

            sh "make clean"

         }

      }

      stage('test') {

         steps {

            echo "test"

            sh "make test"

         }

      }

      stage('build') {

         steps {

            echo "build"

            sh "make build"

         }

      }

      stage('run') {

         steps {

            echo "run"

            sh "make run"

         }

      }

   }

}

生成文件:


executableName=testApi

clean:

    echo "stoping if running and cleaning"

    rm -rf ./bin

    killall $(executableName) || true

test:

    echo "Testing..."

    go test -coverprofile cp.out ./mvc/...

    go tool cover -html=cp.out

build:

    echo "Building..."

    go build -o bin/$(executableName) mvc/main.go

run:

    echo "Running..."

    ./bin/$(executableName) &

all: test build run

当我手动完成时,一切都运行良好。我在这里想念什么?


陪伴而非守候
浏览 117回答 1
1回答

繁星淼淼

出现此问题是因为 Jenkins 正在清理在构建期间启动的所有子进程。即 make run 正在启动应用程序,但 Jenkins 正在杀死该进程作为清理的一部分(有关更多详细信息,请搜索“ProcessTreeKiller”)。要解决更新您的行如下stage('run') {steps {echo "run"sh "export JENKINS_NODE_COOKIE=dontKillMe; make run "}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go