一、项目结构
main.go
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
func main() {
router := gin.Default()
router.GET("/", func(context *gin.Context) {
context.JSON(http.StatusOK, gin.H{
"name": "jacson",
"age": 22,
})
})
router.Run(":8090")
}
二、编写dockerfile
FROM golang:alpine
# 为我们的镜像设置必要的环境变量
ENV GO111MODULE=on \
CGO_ENABLED=0 \
GOOS=linux \
GOARCH=amd64 \
GOPROXY=https://goproxy.cn,direct
# 移动到工作目录:/build
WORKDIR /build
# 将代码复制到容器中
COPY . .
RUN go mod download
# 将我们的代码编译成二进制可执行文件 可执行文件名为 app
RUN go build -o app .
# 移动到用于存放生成的二进制文件的 /dist 目录
WORKDIR /dist
# 将二进制文件从 /build 目录复制到这里
RUN cp /build/app .
# 声明服务端口
EXPOSE 8090
ENTRYPOINT ["/dist/app"]
三、编写Jenkinsfile
//写流水线的脚本(声明式、脚本式)
pipeline{
//全部的CICD流程都写在这里
//任何一个代理可用就执行
agent any
//定义流水线的加工流程
stages{
//流水线的所有阶段
stage('环境检查'){
steps {
echo "正在检查基本信息"
sh 'printenv'
}
}
//1、编译
//一般双引号是变量,单引号用于常量
stage('编译'){
steps {
//要做的所有事情
echo "编译..."
sh 'pwd && ls -alh' //当前在哪个文件夹,在干什么
sh 'printenv'
sh "echo ${WORKSPACE}"
echo "${WORKSPACE}"
}
}
//2、测试
stage('测试'){
steps {
//要做的所有事情
echo "测试..."
sh 'pwd && ls -alh'
}
}
//3、打包
stage('打包'){
steps {
//要做的所有事情
echo "打包..."
sh 'docker version'
sh 'pwd && ls -alh'
sh 'docker build -t golang-demo .'
}
}
//4、部署
stage('部署'){
steps {
//要做的所有事情
echo "部署..."
//删除
sh 'docker rm -f devops-demo'
//运行docker镜像,并将容器名设置为devops-demo
sh 'docker run -d -p 8888:8090 --name devops-demo golang-demo'
}
}
}
}
四、提交git项目到gitee
五、Jenkins打开Blue Ocean
前提要先下载dockers 插件
开启流水线