gitlab

Prevent infinite loop with Gitlab pipeline and git pushing

时光总嘲笑我的痴心妄想 提交于 2020-08-08 05:43:10
问题 I have a project where I have 4 environments (dev, test, staging and prod) and we have branches for each (develop, test, staging master respectively). We use npm version to bump version in package.json but also add a git tag. After that we run the build and on success of that, we push the commit and tag created by the npm version command. So in my pipeline job, I have this (simplified): dev build: stage: build only: - develop@username/reponame script: - npm version patch -m "[ci skip] %s" -

拯救狗屎代码:基于 Gitlab 的代码审查,简单实用

喜夏-厌秋 提交于 2020-08-08 05:13:32
作者:刘凯_7013 https://www.jianshu.com/p/5d764b52ea88 code review 的目的是提高代码质量,减少开发bug,俗话说,三人行必有我师,众人拾柴火焰高。 gitlab提供了code review机制,对基于gitlab的code review,直接以具体例子的形式做个实践总结。 gitlab提供了两种代码merge机制: 1)在本地将源分支(Source branch)代码合并到目标分支(Target branch),然后Push到目标分支(Target branch) 2)将源分支(Source branch)Push到远端,然后在GitLab指定目标分支(Target branch)发起Merge Request,对目标分支(Target branch)拥有merge权限的用户执行Merge操作,完成合并。 这两种方式仅有第2种适合code review,所以我们要做的事情是设置权限,拒绝本地merge后push到远端的操作。 在第2种方式中 发起merge request后,由有merge权限用户做code review,通过后执行merge操作。 具体操作如正文 一,分支设置 第一步,创建项目和分支。 分支结构和功能依据具体团队的规范来定,这里仅供参考。 推荐阅读: 大厂 Git 提交规范是怎么做的 ? 关注微信公众号

代码优化 5 大原则,第一条就是别优化了!!!

痞子三分冷 提交于 2020-08-07 19:14:41
云栖号资讯:【 点击查看更多行业资讯 】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! “让这代码跑得快一点!!”——我碰到的第一件代码优化任务就是这么开始的。那个项目是一个巨大的 SAP 云平台应用程序,总共含有超过 3 万行的代码。 整个 App 加载数据的过程非常之慢,显然用户并不喜欢这种体验。 然而,我必须承认,这个项目的代码写的挺不错,数据库调用很合适,只在有需要的地方进行循环,模组化也实现的很到位。我花了两天时间,绞尽脑汁地进行各种测试,审查代码逻辑,但完全没发现到底是什么地方让这个程序变得如此之慢。 就在第三天,在我穷尽了所有的办法,最后一点理智也快要消失的时候,我终于发现了问题所在。 在其中的一个读取页面上,被塞了一个等待语句,程序到这里就停上 20 秒。 这大约是原来调试这段代码的程序员在排查的过程中插入的等待命令,结果在将代码合并进生产环境的时候忘记把这行东西去掉了。而在生产代码中,每次调用读取的时候,这段等待命令都会被执行,这就进一步放大了产生的问题。 于是,我把这行代码删掉了。好家伙,一切都正常了! 有人说,代码优化是一把双刃剑 优化你的软件是一件好事,但这并不能保证它永远都会有好结果。 如你是在错误的原因驱动下,或是通过错误的方法进行代码优化,这种所谓的优化往往可能增加成本,减缓生产速度,甚至可能会让软件的质量下降。 此外,大多数时候

.NetCore 配合 Gitlab CI&CD 实践

萝らか妹 提交于 2020-08-07 16:23:02
前言 上一篇博文 .NetCore 配合 Gitlab CI&CD 实践 - 开篇 ,主要简单的介绍了一下 GitLab CI 的持续集成以及持续部署,这篇将通过 GitLab CI 发布一个 .net core 项目,来带小伙伴们感受一下自动化的魅力,从此告别手动发布。 准备工作 创建一个空MVC项目来进行演示: mkdir hello-world cd hello-world dotnet new sln -n HelloWorld mkdir src cd src dotnet new mvc -n GitLabCIDemo cd ../ dotnet sln add .\src\GitLabCIDemo\GitLabCIDemo.csproj 完成以上创建后,用 vscode 打开应该是下面这个样子: 项目上传至 GitLab 在 gitlab 上新建一个 hello-world 的项目,将本地的项目上传。这个按照如下提示操作即可: 项目上传成功后,切一个 dev 分支出来,我这里的策略是,代码提交到 dev 分支是自动发布到开发环境进行验证的,生产环境是通过 master 分支打 tag 进行发布的。 切换到 dev 分支! 切换到 dev 分支! 切换到 dev 分支! 添加相关脚本 在 hello-world 文件夹内创建 .build/docker 文件夹

中小企业如何做运维自动化

狂风中的少年 提交于 2020-08-07 13:14:15
不管大型还是中小型互联网公司,运维面对最多的工作就是发布部署,近些年各种运维自动化工具也越来越多,运维自动化每个人都有一套自己的理解,那么中小公司一般都怎么做运维自动化呢? 我们先看一下中小企业面临的问题: 人员有限,小一点的公司专业运维可能没有,开发自己上线,也有可能1-2个运维人员,基本不会投入专门的运维开发来开发运维自动化平台。 服务器少,可能不超过50台服务器。 版本更新迭代比较快,需要快速方便的发布回滚。 中小企业运维自动化常见做法: Gitlab+Jenkins,创建Jenkins任务,使用Jenkins登录服务器执行脚本实现发布,配合服务器多个脚本实现对服务器管理。 Gitlab+Jenkins+Ansible,使用Jenkins调用Ansible登录服务器执行脚本实现代码的发布,平时服务器管理使用Anaible进行服务器管理。 K8S平台,使用K8s发布平台,打包应用Docker镜像,通过K8s发布到线上。 使用开源的运维自动化平台发布管理,Github上有很多优秀的开源项目,可以使用。 虽然可以通过上面的几种方法把发布和经常操作的都实现自动化,但是避免不了登录服务器操作命令、配置任务计划,修改应用配置文件,配置服务器监控报警等。那么有没有开源平台可以很方便的实现上面说到的这些功能呢?下面就给给大家推荐一款面向中小企业的轻量级开源运维自动化平台: Spug 平台介绍

QT C++工程CI环境笔记

淺唱寂寞╮ 提交于 2020-08-07 09:46:08
开发环境 Ubuntu18.04 or Ubuntu20.04 Qt Creator 4.6.x (Based on Qt 5.11.x) APT list: apt-transport-https git dh-make build-essential autoconf autotools-dev qt5-default libssl-dev qt5keychain-dev devscripts 项目结构 项目主体结构是根据Qt, 用.pro文件组织, 项目最外层TEMPLATE用subdirs, 用于引入项目主pro文件, 这样便于将源代码放入子目录, 实际的项目pro文件在子目录下. 最外层还有对应的说明文件, 授权文件和Gitlab CI配置等. ├── .git ├── .gitignore ├── .gitlab-ci.yml # Gitlab CI配置文件 ├── LICENSE ├── README.md # 项目Readme ├── rockbb # 实际源代码目录 │ ├── app-entry # 为debian/ubuntu提供的桌面图标配置文件及图标文件 │ │ ├── rockbb.desktop │ │ └── rockbb.png │ ├── *.cpp │ ├── *.h, *.ui │ ├── config.h # 全局配置, namespace

游戏开发中的多语言处理

偶尔善良 提交于 2020-08-07 04:24:05
前言 之前我写过一遍《数据表的使用》的文章,今天继续用文本处理为例讲解一下数据表导出工具的使用和多语言的使用方式。 编写数据表 我们先定义一个UI文本表,写好表头,添加几个测试用对本文,注意类型使用lang。 使用工具导出 打开build.bat文件,修改数据表和项目路径,双击运行,这时候如果不出问题你的项目下就会出现对应的数据和枚举文件 为了减少配置数据的大小,所有数据才用数组形式,所以生成了枚举文件,使用枚举索引对应的数值。 使用数据 添加数据到数据管理器,如果不是合并的表需要给一个key,我通常使用文件名。 所有的数据都归XlsxDataManager负责管理,不过这个XlsxDataManager可以分模块,如果游戏中数据始终不清理,可以使用一个就行。 2. 将语言文件添加到语言管理器。 语言文本管理器的处理方式与creator官方插件i18n处理方式一样,也可以处理文本替换。 3. 定义一个UI文本管理类 4. 定义UI文本组件 在界面中拖入一个label,挂上UI文本组件,填好我们在数据表中定义的ID 运行查看效果即可 如何切换语言? 执行另一个脚本,这个脚本每次都会添加zh中新添加的字段,不会替换已有字段。 如果不出问题,导出目录会多出一个语言文本,可以拿给负责翻译的人员。 为了测试自己简单翻译一下。 更改语言为en 运行看效果 结语 此套方案可以用于同时支持多种语言

CODING 敏捷实战系列加餐课:CODING 做敏捷这一年

荒凉一梦 提交于 2020-08-07 04:17:54
在数字化协同的大背景下,过去一年 CODING 以老牌代码托管工具为基础,华丽转型为一站式 DevOps 研发管理工具。本次课程 《CODING 做敏捷这一年:理解一站式 DevOps 产品思想》 由 CODING 运营及项目协同产品总监 张路宇 进行分享,主要分析数字化协同的工具对于敏捷的作用,并现场互动讨论观众喜欢的工具、团队如何实践敏捷,做工具产品的挑战等等问题。 Part 1. 数字化协同在敏捷导入中的价值 大家可能会问这样一类问题: 工具在敏捷导入中扮演了什么角色? 电子看板是否更具优势? CODING 和 TAPD/JIRA 等等有什么区别? ...... 这一切都反映了不管是选工具、选方法还是选理论,企业的根本关切在于他们能否提升效率。回顾传统的管理学研究,美国管理学家泰勒的经典著作《科学管理原理》被德鲁克誉为“20 世纪最伟大的发明”。这本书阐述了 20 世纪这段时间工业革命以及管理学、组织学上进步的根本原因在于分工,因为分工产生了流水线,因为流水线才有了工业化,因为工业化才有了以机器取代人力的工业革命。把福特推上机器时代奠基人地位,并创造了“福特之工业奇迹”的,就是泰勒科学管理原理在工业化流水线上的成功运用。 亚当·斯密的《国富论》时间出现的更早,这本书里举了一个例子,亚当·斯密发现工厂制造大头针需要完成很多的工序,抽铁丝、拉直、切截、削尖铁丝的一端

Java开发必知道的国外10大网站

拈花ヽ惹草 提交于 2020-08-06 20:06:07
1、 https://www.google.com/ 不解释 2、 https://stackoverflow.com 里面包含各种开发遇到的问题及答案,质量比较高。 3、 https://github.com/ 免费的开源代码托管网站,包括了许多开源的项目及示例项目等。 4、 https://dzone.com/ 提供技术新闻、编程教程、及各种工具、开发者的博客等。 5、 http://www.programcreek.com/ 一个非常优秀的Java博客,包含很多精选文集。 6、 https://gitlab.com/ 免费代码托管网站,可以用来做私服,和GitHub最大区别是GitLab可以有私有项目。 7、 https://www.ibm.com/developerworks/learn/java/index.html IBM的JAVA开发者网站,很多干货。 8、 http://www.javaworld.com/ 一个不错的综合性的java网站。 9、 http://www.onjava.com/ 某位国外大神的网站。 10、 http://www.oracle.com/technetwork/java/index.html oracle java的官方网站。 推荐去我的博客阅读更多: 1. Java JVM、集合、多线程、新特性系列教程 2. Spring MVC

gitlab的CICD搭建记录

泪湿孤枕 提交于 2020-08-06 10:00:52
1.使用场景 CICD是最近几年比较火的技术,顾名思义就是持续集成和持续部署。 以前的老技术,比如svn+jenkins这种,jenkins的配置多数还是依赖于负责维护CI的人,很多人不熟悉jenkins怎么配置,每一个步骤应该怎么编译和测试,一般都由CI的人来定义。 而CICD,其实可以使用jenkinsfile,就想gitlab的gitlab-ci.yaml文件,把CICD的流程控制和步骤也作为开发的一部分,由开发去维护。并且可以很快的部署到多个环境。 2. 实践 使用gitlab的CICD流程,使用nginx为例子。搭建一个pipe。一旦提交代码,自动部署nginx到k8s的集群中。 使用到的技术有: docker,k8s,helm,gitlab-runner,nginx 2. gitlab的CICD搭建 步骤一: 搭建k8s集群环境,可以使用minikube或者kubeadm快速的搭建起来k8s集群。 步骤: https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/ 步骤二: 安装helm https://zhuanlan.zhihu.com/p/33813367 步骤三: 安装gitlab-runner并且注册 步骤四: 在gitlab上面新建project