Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: 添加构建镜像与release的action #7

Merged
merged 25 commits into from
Mar 10, 2023
Merged

Conversation

eryajf
Copy link
Contributor

@eryajf eryajf commented Mar 7, 2023

PR 来喽!!!

从issue创建,到PR提交,大约耗费5个小时(不容易😂),主要是编译太漫长了,好多时间用在等待编译上了。

功能概述:

  • 添加当提交main分支代码以及创建release触发docker镜像的自动构建。
  • 添加release chage log 信息自动生成的action。

需要配置:
由于docker镜像发布到dockerhub,因此需要在项目的 Settings --> Secrets and variables --> Actions 中,添加两个配置:

  • DOCKERHUB_USERNAME:用户名,看起来你这边应该是 lcomplete
  • DOCKERHUB_TOKEN:需要在你的dockerhub账号中生成一个token

过程简记:

  • 构建环境以及运行环境均支持多CPU架构,保证构建出来的镜像也支持Intel与ARM架构。
  • 编译命令需要添加 -Dhttps.protocols=TLSv1.2 参数,否则构建过程总是不顺利。详见:Unable to fetch yarn from GitHub because of protocol version eirslett/frontend-maven-plugin#696
  • 另外删除了项目中的yarn.lock文件,实测有这个文件的情况下,action构建时总是会出现 info There appears to be trouble with your network connection. Retrying
  • 最后,实际构建之后的效果大概如下:
    image

    如果是main分支更新,则会推送main与latest的tag,如果是打了tag,比如v0.1.0,则会推送v0.1.0与latest的tag。因此部署以及更新的时候,一直使用latest这个tag就OK,当有特殊情况的时候,也同时可以寻找历史tag进行部署。

close #6

@lcomplete
Copy link
Owner

赞,明天看下,yarn.lock 这个文件是不能删除的,否则客户端依赖的包的版本会更新,可以看下具体是哪个包的下载问题,针对性的更新一下这个依赖。

@lcomplete
Copy link
Owner

编译时间长,可能是因为 pom 中设置了安装 nodejs 和 yarn 以打包客户端,可以在基础镜像中把这两个包括进来。

@eryajf
Copy link
Contributor Author

eryajf commented Mar 7, 2023

从构建日志来看,安装这两个包的过程,其实还是蛮快的:

image

@eryajf
Copy link
Contributor Author

eryajf commented Mar 7, 2023

当我把 yarn.lock 恢复回来,这个必出:

image

我看了一眼内容,初步猜测,感觉跟yarn.lock中的 resolved有关,这里都是指向了 https://registry.yarnpkg.com,我试试再调整下看看

@eryajf
Copy link
Contributor Author

eryajf commented Mar 7, 2023

目前实测把yarn.lock中的resolved地址改掉,这个问题消失。那现在基本上OK了,编译慢主要还是依赖处理上比较慢,后期看看能否通过增加缓存来解决一下这个问题

@eryajf
Copy link
Contributor Author

eryajf commented Mar 7, 2023

稍等,这个问题貌似并没有妥善解决

@eryajf
Copy link
Contributor Author

eryajf commented Mar 7, 2023

这里我有点没看明白,似乎打完了,但又打了一遍?

image

另一个方向貌似是说禁用yarn的ssl选项,我再看看试试这个思路

@eryajf
Copy link
Contributor Author

eryajf commented Mar 8, 2023

构建两次的原因知道了,就是打amd与arm镜像需要编译两次,而奇怪的是,arm编译总是会失败,仍需调试

@lcomplete
Copy link
Owner

编译时间长和 node modules 模块下载慢是不是因为你本地构建的网络没翻墙?本地网络翻墙正常构建的话,github action 运行应该没问题。

@eryajf
Copy link
Contributor Author

eryajf commented Mar 8, 2023

我本地构建还是蛮快的,action是github拉起的容器,已经不是本地网络因素了,按理说应该更快,但并不快,所以感觉还是哪里不太对

@eryajf
Copy link
Contributor Author

eryajf commented Mar 8, 2023

目前基本调试OK了,最后跑了三次,都成功了,原因也挺有意思,先构建amd再构建arm就总会有那个问题,而我把这俩换换顺序,这个问题就没了。

最后,这个pr有点惨不忍睹了,提交调试太多次了,不过你合并的时候压缩合并即可。如果觉得不好看,我可以关掉重新提一个。

@eryajf
Copy link
Contributor Author

eryajf commented Mar 8, 2023

测试分支与tag构建均无问题:

image

@eryajf
Copy link
Contributor Author

eryajf commented Mar 8, 2023

尴尬,最后一次又跪在网络上了。。。额,这个yarn真的是搞心态

@lcomplete
Copy link
Owner

尴尬,最后一次又跪在网络上了。。。额,这个yarn真的是搞心态

科学上网很重要,哈哈,辛苦啦,我抽空把你的代码获取下来一起看下。

@eryajf
Copy link
Contributor Author

eryajf commented Mar 8, 2023

这里已经脱离本地网络了,纯粹是action的运行环境,yarn这里会偶发失败,刚刚重运行下,就又成功了

@lcomplete lcomplete merged commit f0a748f into lcomplete:main Mar 10, 2023
@eryajf
Copy link
Contributor Author

eryajf commented Mar 10, 2023

需要配置: 由于docker镜像发布到dockerhub,因此需要在项目的 Settings --> Secrets and variables --> Actions 中,添加两个配置:

  • DOCKERHUB_USERNAME:用户名,看起来你这边应该是 lcomplete
  • DOCKERHUB_TOKEN:需要在你的dockerhub账号中生成一个token

注意需要配置这两个,这两个是认证dockerhub的,action依赖这两个配置

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

基于 github action 自动构建docker镜像
2 participants