当前位置: 首页 > 面试题库 >

应用程序自动构建版本控制

容远
2023-03-14
问题内容

每次编译Go应用时,是否可以自动增加次要版本号?

我想在程序中设置一个版本号,并带有一个自动递增部分:

$ myapp -version
MyApp version 0.5.132

我设置的版本号是0.5,而132则是每次编译二进制文件时都会自动增加的值。

Go中有可能吗?


问题答案:

Go链接器(go工具链接)具有一个选项,用于设置未初始化的字符串变量的值:

-X importpath.name=value
  Set the value of the string variable in importpath named name to

值。请注意,在Go 1.5之前,此选项采用两个单独的参数。现在,需要在第一个=符号上拆分一个参数。

作为构建过程的一部分,您可以使用此设置版本字符串变量。您可以go使用来通过工具传递此信息-ldflags。例如,给定以下源文件:

package main

import "fmt"

var xyz string

func main() {
    fmt.Println(xyz)
}

然后:

$ go run -ldflags "-X main.xyz=abc" main.go
abc

为了main.minversion在构建时设置构建日期和时间:

go build -ldflags "-X main.minversion=`date -u +.%Y%m%d.%H%M%S`" service.go

如果您不main.minversion通过这种方式进行初始化而进行编译,则它将包含空字符串。



 类似资料:
  • 有没有办法管理具有相同测试用例的多个版本的TOSCA模块。请考虑以下场景: 有3个版本的应用程序正在生产中。对于每个版本,为实现自动化而扫描的模块都有小到中等程度的更改。我们必须使用TOSCA在每个版本上维护和执行测试用例。我们知道,我们可以创建测试用例和模块的多个副本来管理这一点,但这将创建自动化测试步骤和模块的多个工作副本。 是否有任何有效的方法可以避免测试用例和工作的重复性?

  • 问题内容: 我已经开发了一个客户维护应用程序。用户可以通过Web界面更改客户详细信息。我想处理以下情况: 加载详细信息。 加载详细信息。 更改并保存的。 只改变并保存年龄。 在上述情况下,最终数据库保留了旧名称和新年龄,因为覆盖了更新。我正在使用Hibernate。我听说Hibernate自动版本控制支持此功能。如果有人知道如何处理,请告诉我。 问题答案: 您只需要添加一个带有注释的字段: 阅读此

  • 一个普通的应用程序由以下文件组成: 二进制文件 这个安装在 /usr/bin。 一个桌面文件 这个桌面文件向shell提供关于这个程序的重要信息,例如名称、图标、D-Bus名称,启动的命令行。安装在 /usr/share/applications. 一个图标 这个图标安装在 /usr/share/icons/hicolor/48x48/apps, 无论当前背景是什么系统都会到这里查找图标。 一个设

  • 目标 了解对象或对象集合如何变成应用程序 使用 Eclipse 创建驱动程序类 应用程序入口点 所有 Java 应用程序都需要一个入口点,让 Java 运行时知道将从这里开始执行代码。这个入口点就是 main() 方法。域对象(即应用程序的业务域 中包含的对象,例如 Person 和 Employee)通常没有 main() 方法,但每个应用程序中必须至少有一个类。 众所周知,Person 和它的

  • 不确定我错过了什么?在阅读了多个博客和StackOverflow问题后,我尝试将内存增加到Xmx12G,但没有成功。我不断得到msg来增加内存。最近有没有人面临这个问题,它已经解决了吗?这只是直接从夸克网站下载的普通应用程序。

  • 注:本章节正在开发中。 虽然 basic 和 advanced 项目模板能够满足你的大部分需求,但是, 你仍有可能需要创建你自己的项目模板来开始项目。 Yii 的项目模板是一个包含 composer.json 文件的仓库,并被注册为一个 Composer package。任何一个仓库都可以被标识为一个 Composer package, 只要让其可以通过 create-project Compos