查看: 4710| 回复: 20
跳转到指定楼层
上一主题 下一主题
收起左侧

请教:嵌入式系统上的git 使用与deployment

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
前提:
我在一个小startup。用的是西门子的工业计算机,我们的apps一共10多个,大多数是python,少数是C++的。这些程序各司其则,有的负责接受各种sensor data, 有的负责和UI交流,有的负责和控制系统交流。
每次在真的设备上测试,就用git push 把自己的branch 放到设备上。比如这个任务涉及到app 1, app 5, app 8。就要git push这几个branch,再build,测试。然后git checkout 回到大家默认的主branch里,比如dev,再build好。这样就不会影响别人的工作。

问题:
可是这样特别容易出问题。有时候不知道前面的同事到底做了什么,系统就crash了。什么git命令都不能执行了,error message是decode error。我感觉是crash以后有乱码了。

deployment也有类似的问题。

请问有什么更合理的做法吗?非常感谢!

上一篇:请教Blind验证各公司员工Email注册的算法是否可信?
下一篇:static.fun 这个技术挺有意思的

相关帖子

推荐
lpx1233 2019-9-12 00:54:45 | 只看该作者
全局:
之前做过一些嵌入式方面的开发,感觉一般来说不同target硬件的性能和环境不同,导致不同硬件workflow都不太一样,还是需要楼主自行寻找合适自己的。比方说硬件性能强弱,能跑Linux/其他OS还是只能bare-metal,build output需要烧写还是直接通过ssh/nfs等方式copy,能在target上build还是需要cross-build之类的条件,都会影响你最终使用的workflow,所以需要楼主自己具体情况具体分析,决定CI在host上还是target上、是否能/需要docker进行环境隔离等。如果需要cross-build并且远程跑test case的话,还需要写相关的工具来copy/burn binary及parse output等。

建议楼主如果有条件的话,弄个CI/CD系统配合相关测试和部署脚本,减轻自己的负担。另外如果是多人共用一个target设备(机器),也需要考虑环境隔离的问题,能上docker等进行环境隔离最好,不能的话也最好得保持自己的测试环境不会被别人影响(比如每个人存一份自己的环境副本,自己测试的时候就把别人的运行的instance全部kill掉,这个可以写脚本来做)。

另外我觉得最好不要直接把target上的git repo当中央repo,最好是有个公司内部的git平台(没有的话可以用gitlab自己搭),这样提PR/MR,做CR,合分支啥的也方便,也不用冒target crash导致git repo数据损失的风险。然后target设备只当做运行环境,用来跑测试(本地/远程,自动/手动等等),如果不能分隔测试环境最好还得让每个人都有自己的测试设备以免互相干扰。。。

评分

参与人数 1大米 +30 收起 理由
admin + 30 很有用的信息!

查看全部评分

回复

使用道具 举报

推荐
xiaobeixin 2019-9-11 14:54:05 | 只看该作者
全局:
不用Jenkins 做CI 然后deploy么? 用git太野路子了吧,每次都重新build不能保证consistent吧
建议学习下Jenkins,如果没有专门的工具/infra组做deployment都话

评分

参与人数 1大米 +10 收起 理由
admin + 10 很有用的信息!

查看全部评分

回复

使用道具 举报

推荐
X88 2019-9-8 05:44:51 | 只看该作者
全局:
本帖最后由 X88 于 2019-9-8 05:50 编辑

git的主要任务是做code的versioning management。像你们这么直接push到target的repo上去还是第一回听说(当然也不是不可以)。

知道的procedure是git里面有master branch(tip of development, 通常不stable)和很多stable branches(只take bug fixes和小feature 改动),一般每个branch都要build出一个Image来,供测试者load到target上去运行。通过严格测试的那个image(或多个)会release出去给customer.

评分

参与人数 1大米 +20 收起 理由
admin + 20

查看全部评分

回复

使用道具 举报

🔗
 楼主| pengzhao0524 2019-9-8 07:09:43 | 只看该作者
全局:
X88 发表于 2019-9-8 05:44
git的主要任务是做code的versioning management。像你们这么直接push到target的repo上去还是第一回听说(当 ...

谢谢回复!!!你说的Image 是docker image吗?
回复

使用道具 举报

🔗
X88 2019-9-8 07:27:00 | 只看该作者
全局:
本帖最后由 X88 于 2019-9-8 07:47 编辑
pengzhao0524 发表于 2019-9-8 07:09
谢谢回复!!!你说的Image 是docker image吗?

什么image都可以。不同的target设计的image格式不同。

绝大多数传统的嵌入产品的images是经过特别archive和压缩过的binary文件,由产品(target)的loader或外部某种programmer burn入target的flash存储memory里去。target再次启动时就可以load这个新的image.

现在的cloud vm当然可以是一个docker image.

python产品应该也有规范的做法的吧?比如打包packaging ..., 你搜一下,应该有成熟的方案。

P.S: image的功能还包括比如加密或加校验码等,在target加载新的image的时候,需要确认image没有出错或被他人篡改过等。否则你的产品很容易被人破坏、做手脚。

评分

参与人数 1大米 +20 收起 理由
admin + 20

查看全部评分

回复

使用道具 举报

🔗
 楼主| pengzhao0524 2019-9-8 07:53:47 | 只看该作者
全局:
X88 发表于 2019-9-8 07:27
什么image都可以。不同的target设计的image格式不同。

绝大多数传统的嵌入产品的images是经过特别arch ...

太感谢了!!!请问我想看看这方面的资料,有什么推荐吗?或者关键字也行。另外image加密这块,有什么资料推荐吗?无比感谢!!!
回复

使用道具 举报

🔗
X88 2019-9-8 08:07:14 | 只看该作者
全局:
pengzhao0524 发表于 2019-9-8 07:53
太感谢了!!!请问我想看看这方面的资料,有什么推荐吗?或者关键字也行。另外image加密这块,有什么资 ...

啊,good question. 这些我还都不是从书里得知的。所以我不知道什么资料。

一般这个image的都是各种build system的最后一步的产出,比如android, freebsd, linux,或buildroot. 最后的build 结果就是一个完好的image.

如果你感兴趣这方面的image, 你可以download这些project的code来学习(都是free downloadable的)。你的产品听起来有些不同,可能有它独有的build/make system.

加密通常就是用openssl encrypt并sign 一下(用private key),target的loader必须有对应的public key才能解密和确认signature的正确性。这个你可以搜一下signed image.
回复

使用道具 举报

🔗
 楼主| pengzhao0524 2019-9-8 08:24:32 | 只看该作者
全局:
X88 发表于 2019-9-8 08:07
啊,good question. 这些我还都不是从书里得知的。所以我不知道什么资料。

一般这个image的都是各种bu ...

多谢!!!其实我也写过几年软件,比如C++的app(在windows,linux上运行),web前端,ios手机端。都是生成一个可执行的,然后安装到目标设备上。交给qa去测试。好像都不怎么有image这个说法。

这是我第一次做嵌入式系统。好多不懂的。你提到了很多重点。我去看看。再次感谢!
回复

使用道具 举报

🔗
painting 2019-9-8 21:39:25 | 只看该作者
全局:
X88 发表于 2019-9-8 05:44
git的主要任务是做code的versioning management。像你们这么直接push到target的repo上去还是第一回听说(当 ...

也是从来没有见过楼主他们这样的做法。。。。这是什么work flow呀。。。
回复

使用道具 举报

🔗
X88 2019-9-9 04:53:07 | 只看该作者
全局:
painting 发表于 2019-9-8 21:39
也是从来没有见过楼主他们这样的做法。。。。这是什么work flow呀。。。

所以从另一个角度看,这个任务也是楼主的一个提升机会。当然要看公司的政策。
回复

使用道具 举报

🔗
j000ker 2019-9-11 00:47:39 | 只看该作者
全局:
X88 发表于 2019-9-8 08:07
啊,good question. 这些我还都不是从书里得知的。所以我不知道什么资料。

一般这个image的都是各种bu ...

现在大公司布署的镜像都要加密么?我以为只要签名就可以了……
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表