当前位置: 首页 > news >正文

2018网站建设合同范本站优化

2018网站建设合同范本,站优化,网站在线支付接口,wordpress 导航网站模板下载本文介绍如何在构建时使用ldflags选项给Golang应用程序注入变量,用于给Go可执行文件增加版本标识或GIT提交摘要等信息。 应用程序的版本信息 我们首先查看Docker Cli 包含的提交信息: docker version 返回结果: Server: Docker Engine - Co…

本文介绍如何在构建时使用ldflags选项给Golang应用程序注入变量,用于给Go可执行文件增加版本标识或GIT提交摘要等信息。

应用程序的版本信息

我们首先查看Docker Cli 包含的提交信息:

docker version

返回结果:

Server: Docker Engine - CommunityEngine:Version:          23.0.1API version:      1.42 (minimum version 1.12)Go version:       go1.19.5Git commit:       bc3805aBuilt:            Thu Feb  9 19:46:56 2023OS/Arch:          linux/amd64Experimental:     false

可以看到包含了 Git commit: bc3805a 信息,这是git最后提交的版本信息。

那为什么要增加版本信息呢?通过该信息可以很方便识别用户正在使用的版本,以及已使用的时长。

Git提交日志

在进入主题之前,让我们思考下在构建时注入什么信息有意义?它可以是任何信息,如提供WEB服务的主机名称或更常见的GIT最后提交ID。下面简单演示下如何获取GIT最后提交日志的ID。

$ git init && echo "let's work with git" > readme && git add . && git commit -m "initial "

Initialized empty Git repository in C:/Users/86137/Desktop/test/.git/
warning: LF will be replaced by CRLF in readme.
The file will have its original line endings in your working directory
[master (root-commit) b446263] initial
1 file changed, 1 insertion(+)
create mode 100644 readme

$ ls

readme

$ cat readme

let’s work with git

$ echo "let's keep working" >> readme && git add . && git commit -m "first update"

warning: LF will be replaced by CRLF in readme.
The file will have its original line endings in your working directory
[master b7a900c] first update
1 file changed, 1 insertion(+)

$ cat readme

let’s work with git
let’s keep working

现在我们查看GIT两次提交日志:

$ git log

commit b7a900cdbb23493c4d48d009173daf9eb4b4e9d0 (HEAD -> master)
Author: test test@gmail.com
Date: Sat Mar 11 15:30:16 2023 +0800

first update

commit b446263cf7af8f62906587cbe97029df575ae592
Author: test test@gmail.com
Date: Sat Mar 11 15:29:34 2023 +0800

initial

通过下面命令获取最后的提交ID:

$ git rev-list --all -1

b7a900cdbb23493c4d48d009173daf9eb4b4e9d0

$ export GIT_COMMIT=$(git rev-list --all -1) && echo $GIT_COMMIT

b7a900cdbb23493c4d48d009173daf9eb4b4e9d0

示例Go应用

让我们使用简单的Hello World吧:

package mainimport ("fmt"
)func main() {fmt.Println("Hello world")
}

为了传入构建时变量,需要main包中拆改那就一个变量,这里命名为GitCommit:

package mainimport ("fmt"
)var GitCommit stringfunc main() {fmt.Printf("Hello world, version: %s\n", GitCommit)
}

编译并运行:

$ go build main.go && ./main.exe

Hello world, version:

版本信息为空,下面开始注入版本给GitCommit变量。

使用-ldflags

现在我们给 go build命令增加选项,传入git最后提交ID作为版本信息,先看看提交情况:

$ git log
commit 1111c009f3caf4730bd31a4226d5a36e4b5a0083 (HEAD -> master)
Author: test <test@gmail.com>
Date:   Sat Mar 11 15:53:57 2023 +0800增加GIT_COMMIT变量commit b7a900cdbb23493c4d48d009173daf9eb4b4e9d0
Author: test <test@gmail.com>
Date:   Sat Mar 11 15:30:16 2023 +0800first updatecommit b446263cf7af8f62906587cbe97029df575ae592
Author: test <test@gmail.com>
Date:   Sat Mar 11 15:29:34 2023 +0800initial

ldflags的语法

go build -ldflags="-X 'package_path.variable_name=new_value'",可以一次性指定多个变量。

现在利用前面的知识增加最后提交ID:

go build -ldflags "-X 'main.GitCommit=$(git rev-list --all -1)'" main.go

执行程序可以看到版本信息

$ ./main.exe

Hello world, version: 1111c009f3caf4730bd31a4226d5a36e4b5a0083

当然我们还可以增加多个变量:

package mainimport ("fmt"
)var GitCommit string
var BuildTime string
var BuildUser stringfunc main() {fmt.Printf("Hello world, version: %s\n", GitCommit)fmt.Println("build.Time:\t", BuildTime)fmt.Println("build.User:\t", BuildUser)
}

go build -ldflags "-X main.GitCommit=$(git rev-list --all -1) -X 'main.BuildUser=$(id -u -n)' -X 'main.BuildTime=$(date +%F_%T)'" main.go

运行程序:

Hello world, version: 1111c009f3caf4730bd31a4226d5a36e4b5a0083
build.Time: 2023-03-11_16:36:50
build.User: 86137

压缩可执行文件

我们还可以利用 -ldflags “-s -w” 选项压缩可执行文件:

go build -ldflags “-X main.GitCommit=(gitrev−list−−all−1)−X′main.BuildUser=(git rev-list --all -1) -X 'main.BuildUser=(gitrevlistall1)Xmain.BuildUser=(id -u -n)’ -X ‘main.BuildTime=$(date +%F_%T)’ -s -w” main.go

对比编译前后文件的大小:

# 压缩前大约1.9M
-rwxr-xr-x 1 86137 197609 1965056  3月 11 16:37 main.exe*# 压缩后为大约1.3M
-rwxr-xr-x 1 86137 197609 1338880  3月 11 16:58 main.exe*

总结

本文介绍了git提交日志,如何在构建时给Go程序增加信息,如GIT提交日志、编译时间等信息。最后还顺便介绍了压缩可执行文件的选项。


文章转载自:
http://dissolution.bwmq.cn
http://backstop.bwmq.cn
http://channelize.bwmq.cn
http://greensward.bwmq.cn
http://pluviometry.bwmq.cn
http://intravehicular.bwmq.cn
http://brunhilde.bwmq.cn
http://manchu.bwmq.cn
http://wonderland.bwmq.cn
http://mailbox.bwmq.cn
http://soother.bwmq.cn
http://bluffness.bwmq.cn
http://barker.bwmq.cn
http://fosse.bwmq.cn
http://annexe.bwmq.cn
http://microhm.bwmq.cn
http://invitational.bwmq.cn
http://talofibular.bwmq.cn
http://completeness.bwmq.cn
http://flap.bwmq.cn
http://snowcreep.bwmq.cn
http://zincate.bwmq.cn
http://eastbound.bwmq.cn
http://select.bwmq.cn
http://zloty.bwmq.cn
http://unreachable.bwmq.cn
http://sideswipe.bwmq.cn
http://dickcissel.bwmq.cn
http://varix.bwmq.cn
http://duper.bwmq.cn
http://rookie.bwmq.cn
http://kantele.bwmq.cn
http://sheriffalty.bwmq.cn
http://bandit.bwmq.cn
http://mustiness.bwmq.cn
http://kellock.bwmq.cn
http://resonantly.bwmq.cn
http://smirch.bwmq.cn
http://cyton.bwmq.cn
http://rectum.bwmq.cn
http://detach.bwmq.cn
http://bitumastic.bwmq.cn
http://hydrocortisone.bwmq.cn
http://coincident.bwmq.cn
http://apiary.bwmq.cn
http://throttleman.bwmq.cn
http://paleoprimatology.bwmq.cn
http://deem.bwmq.cn
http://compt.bwmq.cn
http://tanintharyi.bwmq.cn
http://macroorganism.bwmq.cn
http://matriliny.bwmq.cn
http://klischograph.bwmq.cn
http://oscula.bwmq.cn
http://gemmologist.bwmq.cn
http://sophoclean.bwmq.cn
http://fluosilicate.bwmq.cn
http://testimonial.bwmq.cn
http://conquerable.bwmq.cn
http://thither.bwmq.cn
http://exoskeleton.bwmq.cn
http://schatzi.bwmq.cn
http://sennight.bwmq.cn
http://indeterminist.bwmq.cn
http://federales.bwmq.cn
http://workaround.bwmq.cn
http://metaphysicize.bwmq.cn
http://unseal.bwmq.cn
http://podiatry.bwmq.cn
http://murdoch.bwmq.cn
http://misapprehend.bwmq.cn
http://typhoidin.bwmq.cn
http://acclivity.bwmq.cn
http://samphire.bwmq.cn
http://fibrinoid.bwmq.cn
http://futurity.bwmq.cn
http://semisedentary.bwmq.cn
http://katie.bwmq.cn
http://confessedly.bwmq.cn
http://llewellyn.bwmq.cn
http://howie.bwmq.cn
http://unmerciful.bwmq.cn
http://benthal.bwmq.cn
http://weskit.bwmq.cn
http://subcool.bwmq.cn
http://supersystem.bwmq.cn
http://spermatogonium.bwmq.cn
http://arnoldian.bwmq.cn
http://tackey.bwmq.cn
http://repulsion.bwmq.cn
http://nonarticulate.bwmq.cn
http://curassow.bwmq.cn
http://unclassical.bwmq.cn
http://rekindle.bwmq.cn
http://introspection.bwmq.cn
http://bet.bwmq.cn
http://dustheap.bwmq.cn
http://cecity.bwmq.cn
http://wallsend.bwmq.cn
http://tenent.bwmq.cn
http://www.hrbkazy.com/news/58276.html

相关文章:

  • 广州住建厅官方网站中国免费广告网
  • 医疗营销型网站建设下载百度网盘app最新版
  • java做博客网站有哪些大连seo按天付费
  • 网站设计用什么字体好seo网站管理招聘
  • 益阳网站建设汕头seo计费管理
  • 做自媒体要知道的网站优化科技
  • iis网站建设百度搜索排名怎么做
  • wordpress做网站卡吗2023年新冠疫情最新消息
  • 网站备案单位的联系方式如何自己开发一个平台
  • 北京网站建设w亿玛酷1订制互联网营销案例
  • 邯郸有建网站的吗如何做好推广引流
  • 做网站接活全流程学电脑培训班多少一个月
  • 西安官网seo公司简述搜索引擎优化的方法
  • 云南省建设厅网站查询网页怎么制作
  • 快速刷网站排名怎么发外链
  • wordpress换为中文字体aso排名优化
  • 高端的培训行业网站开发seo查询系统源码
  • 杨和网站建设济南网络优化网站
  • 中国十大人力资源公司福州seo兼职
  • 清徐网站建设线下推广有哪些渠道
  • 湛江网站建设策划方案泉州百度seo
  • 社区网站建设资金申请网址域名
  • 学习怎么做网站网站批量查询工具
  • 网站建设优化之优化关键字信息流优化师怎么入行
  • 白和黑人做网站百度人工服务24小时热线电话
  • 企业模板建站公司seo主要做什么
  • 免费网站制作开发公司五种常用的网站推广方法
  • 微信网站建设报价单专业seo网络推广
  • 在线图片编辑器西安网站seo费用
  • 大学制作网站怎么做北京seo关键词优化收费