使用JFrog CLI从JFrog Artifactory解析Go模块

在接下来的几周里,我们将发布一系列关于如何使用JFrog CLI、Artifactory和GitHub Actions来构建很棒的软件的博客文章。第一个在本系列中,我们将构建自定义GitHub Action,本周我们将继续构建Go应用程序。
去年我们增加了对将模块转到Artifactory这使得通过在Artifactory中存储模块来实现可复制和安全的构建成为可能。为什么?让我们面对现实吧,你不想被困住使用供应商?在这篇文章中,我们将使用Go模块来解析依赖关系,并使用JFrog CLI构建应用程序。
我提到的所有代码和文件都可以在GitHub
Go应用很棒
首先,你需要一个应用程序,还有什么比可靠的“Hello World”更好的呢?对于这个例子,应用程序只需要三个文件:
.├──去。Mod <——描述模块及其依赖关系的文件├──go。Sum <——包含依赖项校验和的文件──hello。Go <——代码
让我们来看看这个应用程序的代码
的go.mod文件包含构建应用程序所需的所有依赖项:
模块github.com/you/hello require (golang.org/x/text v0.3.0 //间接rsc。Io /quote v1.5.2)
我们已经恰当地将模块命名为github.com/you/hello,如果您想以不同的方式命名它完全可以!
创建工作流
要构建应用程序并正确设置依赖项,你需要一个包含四个步骤的工作流:
- 从GitHub获取模块的源代码,因为它们还没有在Artifactory中
- 将模块发布到Artifactory,这样其他开发人员就可以使用这些模块,而不必重新下载和构建它们
- 构建应用程序,并为Artifactory的Build Integration设置依赖项(详见另一篇博客)
- 运行应用程序(这显然是一个可选步骤,但我们确实希望看到它正确构建)
第一步:获取消息来源
在上一篇文章中创建的操作将自动配置为使用您已配置的Artifactory服务器。因为模块还没有在Artifactory中,所以必须指定——no-registry选项(这意味着在此步骤中不使用Artifactory)。
action "Step1 -获取资源" {uses = "retgits/actions/jfrog-cli-go@master" secrets = ["URL", "USER", "PASSWORD"] args = ["go build go -no-registry"] env = {CRED = "username"}}
步骤2:发布模块
为了确保以后的构建不必再次下载和构建模块,您可以将模块存储在Artifactory中。的——自我标志设置为false意味着您不会将包作为zip存储在Artifactory中(目前还可以,因为源代码在GitHub中,在下一篇博客中您将实际存储模块)。的——deps标志设置为all意味着所有依赖项都将存储在Artifactory中。
action "Step2 -发布模块" {uses = "retgits/actions/jfrog-cli-go@master" needs = ["Step1 -获取资源"]secrets = ["URL", "USER", "PASSWORD"] args = ["go- Publish go——self=false——deps=all"] env = {CRED = "username"}}
步骤3:设置构建信息
构建集成是Artifactory和JFrog CLI最出色的特性之一。该功能允许您捕获所有相关信息(如环境变量、依赖项等),并将其存储在构建中,以便您准确了解如何你的神器造好了。
action "Step3 - Build Info" {uses = "retgits/actions/jfrog-cli-go@master" needs = ["Step2 - Publish modules"] secrets = ["URL", "USER", "PASSWORD"] args = ["go Build go - Build -name=my-build - Build -number=1"] env = {CRED = "username"}}
第四步:运行应用程序
只是为了确保应用程序实际工作,你可以使用一个叫做“sh”的标准GitHub操作来运行它。
action "Step4 - Run app" {uses = "actions/bin/sh@master" needs = ["Step3 - Build Info"] args = "。/你好”}
您可以找到整个文件在这里在你提交更改后,GitHub将处理这些步骤
眼见为实
这四个检查标记看起来很有希望,但是因为眼见为实,所以您也可以检查日志。
第一步:获取消息来源
###开始Step1 -获取资源21:18:56Z…剪断…用户名鉴权[提示]加密密码…[Info]使用go: go version go1.11.4 linux/amd64Io /quote v1.5.2 go:查找rsc。Io /sampler v1.3.0 go:查找golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c go:下载rsc。Io /quote v1.5.2 go:下载rsc。io/sampler v1.3.0 go:下载golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c成功运行'go build go -no-registry' ###完成Step1 -获取源代码21:22:31Z (3m34.329秒)
步骤2:发布模块
###开始Step2 -发布模块21:18:56Z…剪断…用户名鉴权[提示]加密密码…[Info]使用go: go版本go1.11.4 linux/amd64 [Info]运行'go mod graph'在/github/workspace [Info]发布包依赖…{"status": "success", "totals": {"success": 3, "failure": 0}}成功运行'go- Publish go- self=false -deps=all' ### COMPLETED Step2 - Publish模块21:22:36Z (3m39.581)
步骤3:构建信息
###开始Step3 -构建信息21:18:57Z…剪断…用户名鉴权[提示]加密密码…[Info]使用go: go version go1.11.4 linux/amd64 [Info]运行'go mod graph'在/github/workspace成功运行'go build go——build-name=my-build——build-number=1' ###完成Step3 -build Info 21:22:42Z (3m45.191s)
第四步:运行app
###开始Step4 -运行应用程序21:18:57Z…剪断…运行”。/你好”……你好,世界成功运行。/hello' ###完成Step4 -运行app 21:22:42Z (3m45.283s)
它的工作原理!
接下来是什么
如果你想尝试GitHub Actions,请前往GitHub的网站然后报名参加他们的测试项目。对于一个测试驱动JFrog Artifactory的所有功能(以及更多)的环境,您可以在我们的网站上注册测试驱动演示环境.如有任何问题或意见,请在这里或在这里留言推特!
