分享使用Go案例开发到持续集成整个过程

本文分享了一个使用Go语言开发的简单Demo,涵盖了导入包、构建Go程序、Docker镜像制作及通过Jenkinsfile实现持续集成的全过程。通过实例讲解了Go项目的基本操作,Dockerfile的编写,以及Jenkinsfile的配置,展示了完整的CI/CD流程。
摘要由CSDN通过智能技术生成

分享一个使用Go编写的极简单的Demo案例,为什么要分享呢?涉及到几个小知识点

  1. Go mod的使用
  2. GO中如何导入包
  3. 通过Go简单的演示分层构建
  4. 演示如何编写一个自动化构建的脚本式Jenkinfile.

1. Go mod如何使用

我们准备一个apis模块,在该模块中实现一个打印字符串的函数Says(str string):所以

mkdir apis
cat << EOF > ./apis.go
package apis

import "fmt"

func Says(str string) {
   
	fmt.Printf("hello,%s", name)
}

然后我们初始化一下go mod

go env -w GO111MODULE="auto"
go mod init code.kubemaster.top/DevOpsTeam/apis
# 此时查看一下mod文件的内容为:
cat go.mod
module code.kubemaster.top/DevOpsTeam/apis

go 1.14

然后工作区内生成一个go.mod文件

然后我们初始化提交到代码仓库中即可,代码仓库的地址为https://code.kubemaster.top/DevOpsTeam/apis.git

2. 如何导入包

接下来应该编写Demo了,Demo依赖apis模块实现功能,Demo的文件名为main.go:

package main

import "code.kubemaster.top/DevOpsTeam/apis"

func main() {
   
	apis.Says("云原生·生态圈\n")
}

这里有个注意的地方:
当程序调用的模块与模块的文件名不一致的时候,需要通过别名引入,否则直接import即可:

# 实际上模块名为apis,但是此处文件名是api,所以需要通过别名解决
import m_api "code.kubemaster.top/DevOpsTeam/api"

当需要运行和构建main.go的时候:

go get -insecure code.kubemaster.top/DevOpsTeam/apis
go run main.go

到这里基本上就明确go mod的基础使用了,然后我们将其提交代码到代码仓库:https://code.kubemaster.top/DevOpsTeam/goci.git

3. 应该怎样构建Go程序

使用Docker构建镜像,首先要准备一个Dockerfile,仔细思考一下,Go编写的程序会直接编译成指定编译架构的二进制文件,所以我们可以通过分层构建的方式首先在Go的环境中进行构建,再把构建后的二进制文件拷贝到微小镜像内,以便减小镜像的体积,下面写了一个Dockerfile的案例:

FROM golang:1.14 as builder
WORKDIR /go/src/code.kubemaster.top/DevOpsTeam/demos/
ARG ARCH="amd64"
ARG OS="linux"
COPY main.go .
RUN go get -insecure code.kubemaster.top/DevOpsTeam/apis && \
    CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main .

FROM alpine:latest
WORKDIR /root/
COPY --from=builder /go/src/code.kube
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云原生生态圈

你的鼓励是我创作的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值