关于gitlab:企业要想构建-AI-竞争力就必须私藏大模型

3 月 3 日,由深圳市产学研单干促进会举办的海峡两岸暨港澳人工智能与机器人倒退论坛在深圳市福田区会展中心揭幕。极狐GitLab CEO 柳钢受邀缺席此次流动,并做了题为 《翻新与平安并重:大模型私藏之道》 的主题分享。 人工智能之新曦自 ChatGPT 横空出世以来,AI 的倒退浪潮,一浪高过一浪。过来二十多年,CEO 柳钢始终在科技公司工作,联合本身的工作经验,CEO 柳钢对于 AI 的倒退进行了简述:人工智能的倒退晚期能够追溯到上个世纪,比方 1956 年的达特茅斯会议。进入 2000 年当前,AI 的倒退有了很大的提高。2006 年,被称为人工智能之父的 Hinton 提出的深度神经网络带来人工智能在视觉等畛域的冲破和微小倒退;2016 年,AlphaGo 战败世界名将李世石和柯洁,标记着人工智能能够在某一畛域战败人类智慧;2017 年,Google 提出 transformer 架构,该架构因为其独特的自注意力机制、高效的并行处理能力,在 AI 畛域产生了深远的影响,也开启了自然语言解决技术的新篇章。当然,真正让 AI 为公众所熟知的是 2022 年底 OpenAI 推出 ChatGPT 这一事件,其标记着大模型和 AIGC 正式进入公众视线,从此 AI 进入大模型时代。 灿烂绽开:大模型的“热闹”在这一波浪潮中,国内外企业都在抢抓 AI 倒退时机,大模型、产品都层出不穷,大模型的“热闹”正在灿烂绽开。CEO 柳钢举了几个国内外的例子。比方微软这家曾经平凡了几十年的公司,凭借着对于 OpenAI 的投资(据统计,微软从 2019 年开始投资 OpenAI,前后投入的资金达 130 亿美金),以及将 AI 产品疾速利用到自家产品中,让其市值达到了 3 万亿美元,成为了寰球市值最高的公司。 AI 大模型时代的当红炸子鸡“OpenAI”,在接连推出文字问答产品ChatGPT、文生图产品 DALL-E、以及文生视频产品 Sora 后,估值已达到 800 亿美元,成为了顶级独角兽。 另外一家很值得探讨的企业 —— Meta,前身是 facebook,在元宇宙衰亡的时候,公司 CEO 扎克伯格发表将公司改名为 Meta,随后公司股价一路上涨,但随着大模型的衰亡,公司股价又一路回升,当初也是冲破万亿美元。 ...

March 4, 2024 · 1 min · jiezi

关于gitlab:使用-Helm-安装-极狐GitLab

本篇作者 徐晓伟应用 Helm 简便快捷的部署与治理 极狐GitLab 前提条件k8s 实现 helm 的配置k8s 实现 ingress 的配置内存至多 10G 演示环境是 龙蜥 Anolis 8.4(即:CentOS 8.4)最小化装置k8s 版本 1.28.2calico 版本 3.26.1nginx ingress 版本 1.8.0极狐gitlab 版本 v16.7.0,对应的 helm 版本是 7.7.0无其余运行的软件,总内存应用 7.4G 左右,思考到故障转移、更新配置、降级等等因素,估算须要内存为 10G阐明本文以 helm 极狐 gitlab 7.7.0 为例(即:gitlab-jh v16.7.0)演示环境应用 k8s 为两个工作节点,每个工作节点 4 核、8G,数据应用 local PV 贮存演示环境的 IP 是 172.25.25.32应用 helm 装置/配置 gitlab 的域名信息如下,如果特地阐明,则应用下表中的值域名作用阐明test.helm.xuxiaowei.cn将用于所有对外裸露服务的域名默认状况下,其余域名在此域名前拼接失去gitlab.test.helm.xuxiaowei.cn内部拜访gitlab实例的域名 minio.test.helm.xuxiaowei.cn对象贮存域名 registry.test.helm.xuxiaowei.cn容器镜像仓库域名 kas.test.helm.xuxiaowei.cn 文档TLS 配置 certmanager-issuer.email:Let’s Encrypt 账号的电子邮件地址global.ingress.configureCertmanager:配置 cert-manager 以从 Let’s Encrypt 获取证书,默认值:true根本配置 global.hosts.domain:将用于所有对外裸露服务的域名global.edition:要装置的版本标识,默认值:eeglobal.time_zone:全局时区,默认值:UTCDeploy the Community Edition ...

February 29, 2024 · 7 min · jiezi

关于gitlab:在极狐GitLab-配置-SSLhttps

本文作者 徐晓伟阐明极狐GitLab https 应用的是 nginx 实现的本文应用的域名是IP 192.168.80.14(起因:如果应用域名,必须领有这个域名的所有权,并减少解析才能够,要不然在 Docker 容器中,无奈应用域名检出代码,因为依据域名找不到DNS记录)如果应用本人生成的证书,git 检出代码、推送代码会失败,起因是无奈验证证书的有效性,能够应用名  git config --global http.sslVerify false  禁用ssl的验证生成证书如果有域名,能够应用域名申请收费的证书,下载 Nginx 证书即可 阿里云SSL(https)证书收费申请腾讯云SSL(https)证书收费申请华为云SSL(https)证书收费申请百度云SSL(https)证书收费申请如果没有域名,可应用下列命令在 CentOS 上生成创立证书文件夹 mkdir -p /etc/gitlab/sslcd /etc/gitlab/ssl生成证书 # 以 CentOS 为例# 如果呈现 -bash: openssl: command not found,请装置 openssl:yum -y install openssl# 生成指定位数的 RSA 私钥:ca.keyopenssl genrsa -out ca.key 2048# 依据 RSA 私钥,生成 crt 证书:ca.crt# CN:设置你要应用的域名# -utf8:反对中文openssl req -new -x509 -days 3650 -key ca.key -subj "/C=CN/ST=山东/L=青岛/O=徐晓伟工作室/OU=徐晓伟工作室/CN=192.168.80.14/emailAddress=xuxiaowei@xuxiaowei.com.cn" -out ca.crt -utf8# openssl req -new -x509 -days 3650 -key ca.key -subj "/C=CN/ST=山东/L=青岛/O=徐晓伟工作室/OU=徐晓伟工作室/CN=gitlab.example.com/emailAddress=xuxiaowei@xuxiaowei.com.cn" -out ca.crt -utf8# 生成 server.csr、server.key# CN:设置你要应用的域名# -utf8:反对中文openssl req -newkey rsa:2048 -nodes -keyout server.key -subj "/C=CN/ST=山东/L=青岛/O=徐晓伟工作室/CN=192.168.80.14" -out server.csr -utf8# openssl req -newkey rsa:2048 -nodes -keyout server.key -subj "/C=CN/ST=山东/L=青岛/O=徐晓伟工作室/CN=gitlab.example.com" -out server.csr -utf8# 生成 ca.srl、server.crt# subjectAltName:设置 DNS、IPopenssl x509 -req -extfile <(printf "subjectAltName=IP:192.168.80.14") -days 3650 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt# openssl x509 -req -extfile <(printf "subjectAltName=DNS:gitlab.example.com") -days 3650 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt最终生成了:ca.crt、ca.key、ca.srl、server.crt、server.csr、server.key,其中 server.crt 和 server.key 就是 Nginx 应用的证书配置https装置 vim ...

February 29, 2024 · 1 min · jiezi

关于gitlab:国产数据库兼容性认证再下两城极狐GitLab-国产适配更进一步

近日,极狐GitLab 与两大国产数据库 TDSQL 和人大金仓实现兼容性认证。极狐GitLab 在国产化适配、国产化生态建设上有了进一步的倒退。 极狐GitLab 团队别离和 TDSQL 和人大金仓数据库团队做了严格的测试验证,实现了这两大国产数据库和极狐GitLab 企业级一体化 DevOps 平台的兼容性认证,并且取得了两个数据库厂商颁发的兼容性认证证书。 <p align=center>TDSQL 兼容性认证证书</p> <p align=center>人大金仓数据库兼容性认证证书</p> 对于 TDSQL分布式数据库(Tencent Distributed SQL,以下简称 TDSQL)是腾讯打造的一款企业级数据库产品,具备强统一高可用、寰球部署架构、高 SQL 兼容度、分布式程度扩大、高性能、残缺的分布式事务反对、企业级平安等个性,同时提供智能 DBA、自动化经营、监控告警等配套设施,为客户提供残缺的分布式数据库解决方案。 对于人大金仓数据库KingbaseES 是一款面向全行业、全客户要害利用的企业级大型通用数据库管理系统,实用于联机事务处理、查问密集型数据仓库、要求刻薄的互联网利用等场景。 以后,极狐GitLab 曾经实现了与华为鲲鹏、飞腾的兼容性认证,而且反对在Kylin及 OpenEuler 这类国产操作系统上进行装置应用。 更多对于极狐GitLab 的信息和最佳实际,请搜寻【极狐GitLab】。

February 29, 2024 · 1 min · jiezi

关于gitlab:在Anolis-中安装极狐GitLabjh

本文作者:徐晓伟基于 Anolis 龙蜥 8.4 和 极狐GitLab 官网仓库脚本 装置/配置 极狐GitLab-jh 阐明与文档龙蜥官网:https://openanolis.cn/龙蜥 Anolis 零碎是阿里云团队开发龙蜥 Anolis 零碎与 CentOS 软件生态兼容本文以 Anolis 8、GitLab EE 企业版为例进行阐明(如果应用的是 Anolis 7,须要将下方链接中的参数8改为7)GitLab 官网 CentOS 装置文档 ,应用国内IP拜访时,会跳转到极狐GitLab极狐GitLab CentOS 装置文档装置阐明官网文档中 CentOS 装置阐明中,应用 curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash 装置CentOS yum源,之后就能够应用 sudo yum -y install gitlab-ee 进行装置了执行 curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash 运行的脚本内容可在 https://packages.gitlab.com/gitlab/gitlab-ee/install#bash-rpm 中查看,脚本中下载 yum 源的地址是 https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/config_file.repo?os=${os}&dist=${dist}&source=script ,由从地址可知,下载时会应用以后零碎的名称作为参数因为龙蜥零碎与CentOS软件生态兼容,能够本人构建下载链接并手动下载yum源,放入到 /etc/yum.repos.d/文件夹中即可装置查看零碎版本 cat /etc/redhat-release# 返回后果[root@alios8 ~]# cat /etc/redhat-release Anolis OS release 8.4[root@alios8 ~]# 依据下面的内容,能够看到应用的是龙蜥8,对应的 CentOS 版本也是 8构建yum源链接并下载到 /etc/yum.repos.d/ 文件夹中 尝试获取后果 # 应用 curl 须要在申请头中增加标识 User-Agentcurl 'https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/config_file.repo?os=centos&dist=8&source=script' --header 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'yum源下载到 /etc/yum.repos.d/gitlab_gitlab-ee.repo ...

February 28, 2024 · 2 min · jiezi

关于gitlab:极狐GitLab-169-重磅发布赶快来-pick-你喜爱的功能吧~

GitLab 是一个寰球出名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版,专门为中国程序员服务。能够一键式部署极狐GitLab。因循咱们的月度发版机制,明天咱们正式公布极狐GitLab 16.9。此次公布带来泛滥性能更新,包含在合并申请中申请变更、CI/CD 变量页面的应用体验晋升以及主动勾销流水线的多种选项等。 以下是此次版本公布的一些重点性能更新详情,请查阅。 极狐GitLab 16.9 要害改良在合并申请中申请变更Request changes on merge requests 根底版专业版旗舰版SaaSYYY私有化部署YYY合并申请审核的最初一部分就是针对论断进行沟通。尽管审核是明确的,然而正文却可能不是。他们要求作者来浏览你的评论,而后决定评论是否是实在有意义的,或者确切形容了变更。当初,当你实现你的审核后,你能够有以下三个选项: 正文:提交个别反馈而无需明确批准。批准:提交反馈并且批准变更。申请变更:提交的反馈须要在合并之前解决。当初侧边栏能够在你名字的边上显示你的审核后果。以后,以申请变更完结审核并不会阻止合并申请的合并,但它为合并申请中的其余参与者提供了额定的上下文。 CI/CD 变量用户界面的改良Improvements to the CI/CD variables user interface 根底版专业版旗舰版SaaSYYY私有化部署YYY在极狐GitLab 16.9 中,咱们公布了一些对于 CI/CD 变量用户体验的改良。咱们通过以下形式改善了变量的创立流程: 改善了当变量值不满足要求时的验证。改善了变量创立过程中的帮忙文档。容许调整变量表单中变量值字段的大小。其余改良包含一个新的、可选的针对群组及我的项目变量的形容,用来助力变量的治理。咱们还让多个变量的增加和编辑变得更加容易了,缩小了软件研发工作流程中的摩擦,并且使研发人员可能更无效地工作。 主动勾销流水线的扩大选项Expanded options for auto-canceling pipelines 根底版专业版旗舰版SaaSYYY私有化部署YYY以后,要想应用主动勾销冗余流水线这个性能,用户必须通过 interruptible:true将作业设置为可被勾销的,以决定流水线是否能够被勾销。然而这只对那些当极狐GitLab 尝试勾销流水线时还在失常运行的作业时无效。那些还没开始的作业(处于“期待”状态)也被认为是能够平安勾销的,无论是否在这些作业中配置了 interruptible。 这种不足灵便的做法,让用户的占空变弱了,用户不可能确定能够应用主动勾销流水线性能来勾销哪些具体的作业。为了解除这个限度,咱们很快乐的发表此次发版引入了 auto_cancel:on_new_commit关键字,以便更精细化的管制作业的勾销。如果之前的形式对你不太无效,当初你能够通过配置流水线来只勾销哪些显式设置了 interruptible:true的流水线,即便这些作业还没有开始。当然,你也能够设置作业从不会被勾销。 极狐GitLab 16.9 的其余改良开启群组级别的 Jira 议题Enable Jira issues at the group level 根底版专业版旗舰版SaaSYYY私有化部署YYY在此次版本中,你能够在极狐GitLab 群组级别为所有我的项目开启 Jira 议题性能。而在此之前,你只能为每个我的项目独自开启 Jira 议题性能。 展现间接迁徙的导入统计数据Show import stats for direct transfer 根底版专业版旗舰版SaaSYYY私有化部署YYY通过间接迁徙的形式实现极狐GitLab 群组和我的项目的迁徙后,会显示一些徽章(已实现、局部实现或者失败),以便告诉用户对于此次迁徙的后果。用户通过点击查看失败的链接,还能够看到那些没有导入胜利的条目列表。 然而,对于只导入了一部分的我的项目来说,没有疾速的形式来理解到底有多少条目导入胜利,又有多少条目没有导入胜利。 此次发版,咱们为群组和我的项目新增了一个导入后果的统计。为了查看统计,在间接迁徙的历史页面上点击详情链接即可。 自定义价值流剖析的新阶段事件New stage events for custom Value Stream Analytics 根底版专业版旗舰版SaaSYYY私有化部署YYY为了改善极狐GitLab 中的研发工作流,价值流剖析曾经扩大了一个新的阶段事件:议题优先增加到迭代中。您能够应用此事件来检测因为团队打算太提前而不足敏捷性而导致的问题,或者因为问题在迭代之间滚动而导致的团队执行挑战而导致的问题。比方,当初你能够减少一个“打算的”阶段,以“议题优先增加到迭代中”为始,以“议题优先被指派”为终。 应用 SSH 证书认证和签名提交Authenticate and sign commits with SSH certificates 根底版专业版旗舰版SaaS YY私有化部署 之前,极狐GitLab SaaS(JihuLabcom)上的 Git 访问控制依赖于用户账号中设置的凭据。当初,你能够设置一个流程,以便仅应用 SSH 证书即可进行 Git 拜访。你还能够应用这些证书进行 commit 签名。 Fleet 仪表盘:实例上每个我的项目应用 Runner 计算资源的数据Fleet Dashboard: Compute minutes used on instance runners per project metric card 根底版专业版旗舰版SaaS 私有化部署 Y当规模化治理极狐GitLab Runner Fleet 的时候,有用户想获知哪个我的项目在 Runner 上应用的计算资源最多,这是十分重要的。对于用户来讲,此信息十分必要,可能帮忙团队优化 CI/CD 流水线,而且可能帮忙用户在优化 fleet 老本的时候作出好的决策。 当初,能够在 Runner 的 Fleet 仪表盘上看到每个我的项目的 Runner 资源应用指标,这是对之前通过 CSV 性能导出 CI/CD 应用分钟数的进一步实现。你能够查看耗费实例 Runner 分钟数最多的我的项目以及应用资源最多的 Runner 实例。 在基于分支的流水线中展现 MR 链接Show MR link for branch based pipelines 根底版专业版旗舰版SaaSYYY私有化部署YYY如果用户在应用分支流水线,当初能够在流水线详情页面中查看和拜访相干的合并申请。 从群组/子群组中验证 Terraform 模块Validate Terraform modules from your group or subgroup 根底版专业版旗舰版SaaSYYY私有化部署YYY当应用极狐GitLab Terraform 仓库时,有一个跨我的项目视角来查看所有的模块是十分重要的。直到最近,才有了我的项目级别的用户界面。如果你的群组有一个简单的构造,你可能很难找到并且验证你的模块。 从极狐GitLab 16.9 开始,你能够看到极狐GitLab 中所有群组、子群组中的模块。这种改良的可见性让你可能更好的理解 Terraform 仓库,并且缩小名称抵触的可能性。 反对 Kubernetes 1.29Kubernetes 1.29 support 根底版专业版旗舰版SaaSYYY私有化部署YYY此次版本,齐全反对 Kubernetes 1.29 版本,该版本公布于 2023 年 12 月。如果你部署应用程序到 Kubernetes 上,当初你就能够将连贯的集群降级到 1.29 并且享受所有最新的性能。 你能够查阅更多对于 Kubernetes 的反对策略以及其余反对的 Kubernetes 版本。 DAST 分析器更新DAST analyzer updates 根底版专业版旗舰版SaaS Y私有化部署 Y咱们在极狐GitLab 16.9 版本中修复了以下问题: 当浏览器切换到新的页面时,尝试获取缓存资源的响应注释时,呈现基于浏览器的 DAST 谬误。更多详情能够查看此议题。基于浏览器的 DAST 爬虫工作不可能并行运行,引起性能升高问题。更多详情能够查看此议题。在 VS Code 中查看更多安全漏洞详情More detailed security findings in VS Code 根底版专业版旗舰版SaaS Y私有化部署 Y咱们曾经改良了如何在 VS Code的极狐GitLab 工作流扩大中展现安全漏洞。你能够看到之前未曾展现的对于安全漏洞的更多详情: 以富文本格式显示的全副形容。破绽的解决方案,如果有的话。指向代码库中呈现问题的地位的链接。无关已发现破绽类型的更多信息的链接。咱们还做了以下改良: 改善了扩大在后果就绪以前如何展现平安扫描的状态。做了其余可用性的改良。应用 LDAP 群组同步性能从群组中减少或移除服务账号Add or remove service accounts from groups with LDAP group sync 根底版专业版旗舰版SaaS 私有化部署 YY之前,如果群组开启了 LDAP 同步性能,管理员是不可能从群组中邀请或者移除任何用户的。当初,应用 LDAP 同步性能,管理员能够应用群组和我的项目成员 API 来将服务账号用户邀请到某个群组或者删除。然而,管理员仍旧不可能将实在的用户邀请到开启了 LDAP 同步性能的群组或者将其删除。这可能确保 LDAP 群组同步性能是实在用户关系信息的繁多可信源,同时还保障了应用服务账号的灵活性,同时容许灵便地应用服务帐户将自动化能力增加到 LDAP 同步组。 通过 UI 和 API 来拜访企业用户的邮箱地址Enterprise user email address accessible through UI and API 根底版专业版旗舰版SaaS YY私有化部署 当初,领有企业用户的群组拥有者能够应用用户治理 UI 或者群组和我的项目成员 API 来查看其余用户的邮箱地址。之前,仅返回已配置用户的电子邮件地址。 ...

February 27, 2024 · 1 min · jiezi

关于gitlab:害怕代码操作是黑盒用代码审计将操作变白盒

审计事件应用审计事件来跟踪重要事件,包含执行相干操作的人员和工夫。 您能够应用审计事件来跟踪例如: 谁更改了极狐GitLab 我的项目的特定用户的权限级别,以及何时更改。谁增加了新用户或删除了用户,以及何时更改。极狐GitLab API、数据库和 audit_json.log 记录了许多审计事件。一些审计事件只能通过审计事件流取得。 查看形式实例级您能够查看整个极狐GitLab 实例中,用户操作的审计事件。 查看实例审计事件: 在顶部栏中,抉择 主菜单 > 管理员。在左侧边栏中,抉择 监控 > 审计事件。 <p align=center>图示:实例级审计事件</p> 您能够将实例审计事件的以后视图(包含过滤器)导出为 CSV 文件。要将实例审计事件导出到 CSV: 在顶部栏上,抉择 主菜单 > 管理员。在左侧边栏上,抉择 监控 > 审计事件。抉择可用的搜寻过滤器。抉择 导出为 CSV。导出的文件: 始终按 created_at 升序排序。限度为最多 100,000 个事件,达到此限度时,将截断其余记录。 <p align=center>图示:导出的csv</p> 群组级查看群组的审计事件: 进入群组。在左侧边栏上,抉择 平安与合规 > 审计事件。群组事件不包含我的项目审计事件,您也能够应用群组审计事件 API,拜访群组事件。群组事件查问的期限最长为 30 天。 <p align=center>图示:群组级审计事件</p> 我的项目级查看我的项目的审计事件: 进入我的项目。在左侧边栏中,抉择 平安与合规 > 审计事件。您也能够应用我的项目审计事件 API,拜访我的项目事件。我的项目事件查问的期限最长为 30 天。 <p align=center>图示:我的项目级审计事件</p> 审计事件流该性能为旗舰版性能。用户能够为顶级群组设置流目的地,接管无关该群组、其中子组和我的项目的所有审计事件作为结构化 JSON。顶级群组所有者能够在第三方零碎中治理他们的审计日志。任何能够接管结构化 JSON 数据的服务都能够用作流目的地。 具备群组所有者角色的用户能够为其增加事件流目的地: 在顶部栏上,抉择 主菜单 > 群组 并找到您的群组。在左侧边栏中,抉择 平安与合规 > 审计事件在主区域,抉择 事件流 选项卡。抉择 增加流目的地,显示增加目的地的局部。 ...

February 24, 2024 · 1 min · jiezi

关于gitlab:这份攻略帮助你分分钟构建出幻兽帕鲁游戏极致体验

春节前夕,一款名为《幻兽帕鲁(Palworld)》的游戏火爆出圈,在数天之内销量达到数百万,半月之内玩家达到了数千万之多。为了晋升用户的体验,国内云厂商,诸如阿里云、华为云、腾讯云等纷纷推出幻兽帕鲁服务器,玩家能够在分钟级别内疾速构建出开箱即用的幻兽帕鲁服务器。 对于疾速构建云服务器这件事,很多时候,DevOps 人员可能是通过在管制台上,通过手动点击来疾速创立。然而在云原生时代,有一个IaC(基础设施即代码)的技术,DevOps 人员无需手动操作,只须要通过自动化即可创立一些云资源。 比方在腾讯云上,一个云服务器是这样的参数: 如果用 IaC 的角度看,其实是这样的: ## instance inforesource "tencentcloud_instance" "cvm_almalinux" { instance_name = "jh-gitlab" availability_zone = "ap-ap-shanghai" image_id = "img-q95tlc25" instance_type = "S2.MEDIUM2" system_disk_type = "CLOUD_PREMIUM" system_disk_size = 100 hostname = "jh-gitlab" allocate_public_ip = true data_disks { data_disk_type = "CLOUD_PREMIUM" data_disk_size = 50 encrypt = false } security_groups = [ "${tencentcloud_security_group.sg_bj.id}" ] vpc_id = "${tencentcloud_vpc.vpc_bj.id}" subnet_id = "${tencentcloud_subnet.subnet_bj_02.id}" internet_max_bandwidth_out = 10 count = 1}## security groupresource "tencentcloud_security_group" "sg_bj" { name = "sg-jh-gitlab" }resource "tencentcloud_security_group_rule" "sg_bj_1" { security_group_id = "${tencentcloud_security_group.sg_bj.id}" type = "ingress" cidr_ip = "0.0.0.0/0" ip_protocol = "tcp" port_range = "22,80,443" policy = "accept"}## vpc inforesource "tencentcloud_vpc" "vpc_bj" { name = "vpc_jh-gitlab" cidr_block = "10.0.0.0/16" is_multicast = false}## route table inforesource "tencentcloud_route_table" "rtb_vpc_bj" { vpc_id = tencentcloud_vpc.vpc_bj.id name = "rtb-vpc-jh-gitlab"}## subnet inforesource "tencentcloud_subnet" "subnet_bj_01" { name = "jh-gitlab" cidr_block = "10.0.1.0/24" availability_zone = "ap-shanghai" vpc_id = "${tencentcloud_vpc.vpc_bj.id}" route_table_id = "${tencentcloud_route_table.rtb_vpc_bj.id}"}这些信息都是以 .tf 的格局保留的。也就是 terrafrom 的格局保留的。 ...

February 22, 2024 · 4 min · jiezi

关于gitlab:如何使用极狐GitLab-代码推送规则提高代码质量

简述极狐 GitLab 中的推送规定(Push Rules)是一种强制执行代码仓库标准和最佳实际的办法。推送规定解决了以下场景的痛点: 第三方需要管理工具集成:比方与Jira集成须要开发者提交代码时的commit message中携带JIRA-ID,通过推送规定的正则束缚,能够无效的防止家养commit的存在,确保commit都是可追踪到Jira原始需要的。代码品质和格调一致性:推送规定能够确保团队成员在提交代码时遵循对立的代码格调和质量标准。例如,您能够设置规定来要求提交信息遵循特定的格局,或者禁止提交蕴含某些关键字的代码。这有助于进步代码品质和可读性,升高保护老本。避免敏感信息泄露:推送规定能够帮忙您避免团队成员不小心将敏感信息(如明码、密钥等)提交到代码仓库。您能够设置规定来查看提交的内容,如果发现蕴含敏感信息,将阻止提交操作。这有助于爱护我的项目的安全性。确保分支策略:推送规定能够帮忙您施行团队的分支策略。例如,您能够设置规定来限度只有特定用户或用户组能力向受爱护的分支提交代码。这有助于确保我的项目的要害分支保持稳定和洁净,便于管理和保护。用户信息校验:对提交的用户进行多维度校验,防止不存在的用户推送代码到极狐GitLab中 详述反对的配置层级实例级您能够为所有要继承的新我的项目创立推送规定,但能够在我的项目级别或群组级别笼罩它们。 配置全局推送规定后创立的所有我的项目都继承此配置。然而,必须应用笼罩每个我的项目的全局推送规定中形容的过程,手动更新每个现有我的项目。 实例级推送规定设置仅针对私有化部署场景,且配置人员须要管理员权限,配置办法: 在顶部栏上,抉择 主菜单 > 管理员。在左侧边栏上,抉择 推送规定。开展 推送规定。设置您想要的规定。抉择 保留推送规定。 群组级群组级配置参数与实例级没有区别,只是配置地位不同。群组级配置位于: 在顶部栏上,抉择 主菜单 > 群组 并找到您的群组。在左侧边栏上,抉择 设置 > 仓库。开展 推送规定。设置您想要的规定。抉择 保留推送规定。我的项目级我的项目级配置参数与实例级没有区别,只是配置地位不同。我的项目级配置位于: 在顶部栏上,抉择 主菜单 > 我的项目 并找到您的我的项目。在左侧边栏上,抉择 设置 > 仓库。开展 推送规定。设置您想要的规定。抉择 保留推送规定。推送规定详解验证用户回绝未经验证的用户:用户必须有一个已确认的电子邮件地址。提交作者的电子邮件:作者和提交者的电子邮件地址都必须与正则表达式匹配。要容许任何电子邮件地址,请留空。查看提交作者是否是 GitLab 用户:提交作者和提交者必须具备通过极狐GitLab 验证的电子邮件地址。如果开启此选项,当用户的ssh公钥中蕴含的邮箱地址,如some@email.com并非GitLab用户时,会报错如下:git.exe push --progress "origin" feature-issue7LEAPESC SYY 0523:feature-issue7LEAPESC SYY 0523Counting objects: 6,done.Delta compression using up to 8 threadsCompressing objects: 100% (4/4),done.writing objects: 100% (6/6),537 bytes 537.00 KiB/s, done.Total 6 (delta 4), reused 3 (delta 2)remote: Gitlab: You cannot push commits for 'some@email.com'. You can only push commits if the committer email isone of your own verified emails .To 192.168.20.9:group esc/project leap/app all leap.git[remote rejected feature-issue7LEAPESC ABB 0523 -》 feature-isue7LEAPESC ABB 0523 (pre-receive hook declined)error: failed to push some refs to 'git@192.168.20.9:group esc/project leap/app all leap.gitgit 未能顺利完结 (退出码 1) (2281 ms @ 223/5/24 1:29:19)如果须要此问题,创立正确的ssh公钥增加到账户中即可。如果不开启此查看,可能会导致很多没有关联(关联行为是基于邮箱地址)到GitLab账户的家养提交存在,而且,仓库统计时,家养提交也不会被算在GitLab用户名下,这个设置就是为了防止这种状况。配置了适合的ssh公钥后,当前就不存在这种问题了。 ...

February 22, 2024 · 2 min · jiezi

关于gitlab:细粒度的代码权限怎么做极狐GitLab-代码所有者来帮忙

本文作者:极狐GitLab 资深解决方案架构师 尹学峰 如果基于固定的评审规定每次都是那几个人,当仓库很大的时候,各个模块(文件夹)责任人不同,其他人并不太懂。所以当批改不同的模块时候,基于固定规定就太死板了。而且容易造成「评审行为」的流于形式,因为固定的人可能基本看不懂理论MR变更波及到的模块代码。最终就导致,评审者间接点了approve按钮,这十分不适合。 简述极狐GitLab的代码所有者解决了以下场景的痛点: 代码审查:确保特定代码区域的变更失去相干所有者的审查,进步代码品质。即在合并申请过程中,基于变更文件,动静指定相干代码所有者参加合并申请审批过程,确保代码平安与稳固。负责人调配:为要害代码区域指定所有者,明确责任划分,有助于项目管理。团队合作:进步团队成员之间的合作效率,缩小沟通老本。 图示:承包鱼塘好 详述代码所有者代码所有者定义代码所有者定义谁开发和保护性能,并领有仓库中生成的文件或目录。 当您浏览目录时,您定义为代码所有者的用户会显示在 UI 中。 图示:文件浏览时的所有者会显示在页面上 您能够设置合并申请,以便在合并前必须失去代码所有者的批准。 图示:Code Owner示例 您能够爱护分支并仅容许代码所有者批准对分支的更改。应用代码所有者、核准人以及批准规定,构建灵便的批准工作流程: 应用 代码所有者,定义对仓库中的特定门路具备畛域专业知识的用户。应用 核准人 和 批准规定 来定义业余畛域(例如平安团队),这些畛域不限于仓库中的特定文件门路。核准人定义用户。批准规定定义这些用户何时能够批准工作,以及是否须要他们的批准。例如: 类型名称范畴阐明批准规定UX所有文件用户体验 (UX) 团队成员评审我的项目中所有更改的用户体验。批准规定Security所有文件平安团队成员评审所有更改是否存在破绽。代码所有者批准规定Frontend: Code Style*.css 文件前端工程师查看 CSS 文件更改是否合乎我的项目款式规范。代码所有者批准规定Backend: Code Review*.rb 文件后端工程师评审 Ruby 文件的逻辑和代码格调。创立一个 CODEOWNERS 文件,指定负责仓库中特定文件和目录的用户或共享群组。每个仓库都能够有一个CODEOWNERS 文件。创立步骤: 抉择要指定代码所有者的地位:在仓库的根目录中在.gitlab/ 目录中在 docs/ 目录中在那个地位,创立一个名为 CODEOWNERS 的文件。在文件中,输出遵循以下模式之一的文本:# Code Owners for a filefilename @username1 @username2# Code Owners for a directorydirectoryname/ @username1 @username2# All group members as Code Owners for a filefilename @groupname# All group members as Code Owners for a directorydirectoryname/ @groupname受爱护分支的代码所有者管制对于受爱护的分支,您能够要求至多取得代码所有者的一项批准。 ...

February 21, 2024 · 1 min · jiezi

关于gitlab:云原生明星创业公司-Weaveworks-倒闭了GitOps-该何去何从

自从 2009 年 DevOps 面世以来,xOps 的潘多拉魔盒就被关上了,AIOps、DataOps、DevSecOps、BizDevOps,当然还有最近几年比拟炽热的 GitOps。然而很可怜的是,就在龙年新春前夕,GitOps 实践提出者—— Weaveworks 倒下了。 工夫回到 2 月 5 日,就在大家期待春节长假的时候,一则 Weaveworks 公司行将开张的音讯刷爆了云原生技术圈。Weaveworks 公司的 CEO Alexis Richardson 在领英上公布了一则音讯: 间接用 ChatGPT 把这段话翻译成中文: 大家好, 我十分遗憾地发表 - 正式地 - Weaveworks 将敞开大门并进行商业经营。客户和合作伙伴将与咱们很快颁布的财务受托人单干。 该公司的营业额已达到两位数(超过1000万美元),并且在2023年新增产品标记的数量已减少了一倍以上。然而,这种销售增长是不稳固的,因而咱们的现金情况也变化莫测。咱们须要一个长期增长的合作伙伴或投资者。最初,与一家较大公司进行的十分有前途的并购过程在最初时刻搁浅。因而,咱们决定敞开。 我只能向大家为这个艰巨的转折赔罪。我能够说这不应该产生,但我晓得在这个市场上咱们并不孤独。更大的船舶也曾迷失方向。Weaveworks团队是一个特地的团队,这是一段漫长而艰巨的旅程。我晓得每个人都十分有能源为咱们的客户、咱们的开源社区和彼此做出最大致力。你们做得很好,能够骄傲。咱们将永远有一个独特的故事。 咱们的故事十分激动人心 - 从容器的最后阶段开始,艰巨地诞生。有人第一次在Azure上胜利运行Kubernetes的那一天。CNCF的开始。咱们用一键击出了零碎的那一天。新冠疫情的头几个月。而后是投资以及咱们为许多杰出的企业客户解决GitOps问题的工作。当然也有艰难的时刻,但咱们大多数状况下都一起解决了。你们分享了所有这些,每个人都应该怀有美妙工作回顾,并且有幸晓得你们都是最优良的人之一。 故事并没有在这里完结 - 咱们的开源软件无处不在。我正在与几家大型组织单干,以确保CNCF Flux处于最衰弱的状态。稍后会有更多音讯。我想邀请任何浏览此文并想晓得接下来将会产生什么或提供帮忙的人,请与我分割!谢谢。 咱们将不进行摸索 咱们所有摸索的起点 将是达到咱们终点的中央 并第一次意识到这个中央。 从字里行间也能看出,weaveworks 尽管有着肯定的支出(千万美元),然而市场的不稳定性,也让 weaveworks 的运行遇到了艰难,最终不得已做出行将敞开 weaveworks 公司的决定,然而其开源的对于 GitOps 的我的项目 Flux 将继续衰弱运行(因为捐献给了 CNCF)。 家喻户晓,Weaveworks 成立于 2014 年,员工超过 200 人,已经取得过 3600万美元的融资,他们依据本身在云计算方面的教训,在 2017 年提出了 GitOps 这个理念,而且开源了 Flux 这个与 GitOps 相干的我的项目。这几年 GitOps 在国内也是有一阵热度,不少云原生转型的公司都在用 GitOps 的形式实现 CD。 ...

February 20, 2024 · 2 min · jiezi

关于gitlab:极狐GitLab-如何配置多个-LDAP

本文作者 极狐GitLab资深解决方案架构师 尹学峰本文仅实用于极狐GitLab私有化部署场景。场景化痛点极狐GitLab 的多 LDAP 接入性能解决了企业在以下场景中可能遇到的痛点: 多个组织/部门的整合:在大型企业或跨国公司中,往往存在多个组织或部门,它们可能领有独立的 LDAP 服务器。GitLab 的多 LDAP 接入性能容许这些组织或部门在一个对立的平台上进行合作,同时放弃各自的身份验证和受权体系。并购与合并:当企业进行并购或合并时,它们可能须要整合不同的 IT 零碎和身份验证服务器。极狐GitLab 的多 LDAP 接入性能简化了这个过程,使得不同起源的员工能够应用各自的原始 LDAP 凭据登录 极狐GitLab 平台。权限治理与安全性:多 LDAP 接入性能有助于企业实现细粒度的权限治理。通过将不同的 LDAP 服务器调配给相应的用户群组,企业能够确保每个用户仅能拜访其所需的资源,从而进步整体的安全性。灵活性与可扩展性:对于疾速倒退的企业来说,可能不便地整合新的 LDAP 服务器是很重要的。极狐GitLab 的多 LDAP 接入性能提供了这种灵活性,使得企业能够随着其规模的扩充,轻松地增加更多的 LDAP 服务器。加重 IT 管理负担:通过应用极狐 GitLab 的多 LDAP 接入性能,企业能够防止在多个平台上别离治理用户的身份验证和受权。这有助于升高 IT 治理的复杂性和老本,同时进步工作效率。配置原理不同LDAP域下的用户通过不同的LDAP服务登录到同一个极狐GitLab实例,实现跨LDAP域的用户开发合作与共享。 成果配置实现后成果如下,能够依据理论所处的LDAP域抉择适合的LDAP登录入口。 办法编辑 /etc/gitlab/gitlab.rb,其中内容以理论内容为准,具体配置形式能够征询极狐GitLab技术支持团队。 gitlab_rails['ldap_enabled'] = truegitlab_rails['ldap_servers'] = { 'main' => { 'label' => 'GitLab AD', 'host' => 'ad.mydomain.com', 'port' => 636, 'uid' => 'sAMAccountName', 'encryption' => 'simple_tls', 'base' => 'dc=example,dc=com', }, 'secondary' => { 'label' => 'GitLab Secondary AD', 'host' => 'ad-secondary.mydomain.com', 'port' => 636, 'uid' => 'sAMAccountName', 'encryption' => 'simple_tls', 'base' => 'dc=example,dc=com', }, 'tertiary' => { 'label' => 'GitLab Tertiary AD', 'host' => 'ad-tertiary.mydomain.com', 'port' => 636, 'uid' => 'sAMAccountName', 'encryption' => 'simple_tls', 'base' => 'dc=example,dc=com', }}保留文件并重新配置极狐GitLab ...

February 19, 2024 · 1 min · jiezi

关于gitlab:gitlab1593升级到16341640也好

背景后面的步骤参照[gitlab-11.1.4持续降级到15.9.3]()(我有三个gitlab服务器,还有两个降级到了15.11.0,在关上gitlab web控制台的时候常常会收到让版本升级的弹窗,很是让人强迫症。就筹备降级一下个gitlab. 后期筹备:确认降级路线https://gitlab-com.gitlab.io/support/toolbox/upgrade-path/也是很刺激,我昨天关上还是16.3.4.......依照提醒 先降级到15.11.13-16.3.4(or 16.4.0):先持续记录一下本人到16.3.4的吧! 下载rpm包到本地:操作系统为rokcy 8 依据我的操作系统下载gitlab-ce-15.11.13-ce.0.el8.x86_64.rpm gitlab-ce-16.3.4-ce.0.el8.x86_64.rpm 到本地!因为gitlab rpm 包比拟大,我在对应页面获取了连贯地址在国外下载了rpm包:而后用了coscmd的办法上传到了国内腾讯云对象存储(带cdn减速),然而本地wget下载还是好慢,持续应用了aria2c 下载,速度很是快: aria2c -c -x 8 -s 16 -o gitlab-ce-15.11.13-ce.0.el8.x86_64.rpm https://xxx.cos.com/gitlab/gitlab-ce-15.11.13-ce.0.el8.x86_64.rpm 对于备份:下一步失常的流程应该是gitlab的备份我这里偷懒了没有操作,不举荐。倡议每次操作之前备份 gitlab-rake gitlab:backup:creategitlab 降级降级到第一个举荐版本15.11.13执行以下命令进行gitlab服务:gitlab-ctl stop 卸载gitlab服务:cat /opt/gitlab/embedded/service/gitlab-rails/VERSIONrpm -evh `rpm -qa gitlab-ce` 装置15.11.13版本rpm包:rpm -ivh gitlab-ce-15.11.13-ce.0.el8.x86_64.rpm 启动gitlab服务期待rpm包装置实现依照提醒执行restart命令: sudo gitlab-ctl restart 验证版本升级胜利restart后略微期待一会刷新浏览器治理界面版本曾经降级到15.11.13版本 降级到16.3.4 or 16.4.0版本留神:每次降级以前的流程应该都是先进行备份 备份 备份! 执行以下命令进行gitlab服务:gitlab-ctl stop 卸载gitlab服务:cat /opt/gitlab/embedded/service/gitlab-rails/VERSIONrpm -evh `rpm -qa gitlab-ce` 装置15.11.13版本rpm包:rpm -ivh gitlab-ce-15.11.13-ce.0.el8.x86_64.rpm 看日志有很多数据库相干的操作....庆幸降级没有呈现问题,所以始终在强调肯定要先备份 启动gitlab服务期待rpm包装置实现依照提醒执行restart命令: sudo gitlab-ctl restart 验证版本升级胜利restart后略微期待一会刷新浏览器短暂502页面,等控制台能够失常登陆:治理界面版本曾经降级到16.3.4版本:控制台页面产生了一些变动:总结: 操作之前先进行备份,这是必须的。一些其余工具的学以致用,比方aria2 ,coscmd。对于aria2 ,coscmd的利用:linux一些罕用的下载工具-aria2编辑

September 23, 2023 · 1 min · jiezi

关于gitlab:软件定义汽车时代1-亿行代码的安全保障极狐GitLab-这么做

本文整顿自极狐GitLab 解决方案部总监张扬老师在 AUTOSEMO 会议上的主题分享“驾驭代码激增浪潮,护航软件定义汽车”。软件定义汽车的挑战“软件吞噬世界”,这是网景创始人 Marc Andreessen 在 2011 年说的一句话。这些年软件行业的飞速发展也验证了这句话。智能手机就是一个很鲜活的例子,各种 app 彻底改变了人们的衣食住行。 对于汽车行业来说,也进入到了软件定义汽车时代。在智能汽车畛域,软件老本占据汽车老本的比重越来越高,软件带来的价值正在重塑整个智能汽车的商业模式。如上面的微笑曲线所示,整个汽车产业链的两端,有更多有意思并且能带来价值的一些商业模式在呈现。 举一个典型的例子:软件订阅制。在晚期的汽车售卖模式中,车辆的交易根本都是“一锤子买卖”,车辆发售当前,OEM 厂商就很难再赚取用户的钱了(除了可能存在的一些维保)。然而在软件订阅制模式下,如果用户想要应用汽车的某一个性能(比方主动驾驶、空调近程主动启停等),就能够通过订阅汽车软件的形式来实现。订阅一个月就能够应用一个月。如果不想应用了,间接勾销订阅即可。这样做的益处在于用户具备了自由选择的权力,能够依照本人的需要来通过软件“定制化”汽车的一些性能,而 OEM 厂商既通过这种形式和用户减少了粘性,又减少了一条能够让企业继续减少营收的形式。 软件定义汽车,那什么定义软件呢?答案是:代码。软件运行的根底是代码,而在软件定义汽车这样的背景下,依据业余机构的数据统计:一辆智能汽车,大概有 1 亿行代码,这个数据远大于大型客机(约 1500 万行)、战斗机(约 2500万行)以及一些家喻户晓的操作系统(诸如 windows vista,约 4000 万行)的代码量的。而且这些是 2020 年的数据,随着智能驾驶的蓬勃发展,这个数据在2025 年可能会达到惊人的 5 亿。 另外从下图能够看出,传统软件开发模式下,编码阶段引入的缺点(包含品质和平安问题)数是最多的(85%),然而大量缺点的真正开掘却是在编码之后的阶段,这种状况带来了两个问题: 缺点的修复是滞后的,问题的反馈慢,导致整个修复周期比拟长;修复的老本很高。从图中能够看出,在编码阶段引入的缺点,其修复老本是最低的,而在软件运行状时发现的缺点,其修复老本是极其昂扬的,大概是编码阶段的 640 倍。这种状况对于汽车软件来讲更加严厉,而且随着智能汽车的倒退,这种激增的代码量所带来的挑战是微小的,这对于 OEM、Tier 1 或者整个汽车软件生态外面跟软件打交道的所有组织来说都是一样的。 代码激增挑战的应答之道汽车行业中的软件不同于个别行业的软件,在某些状况下交付的速度能够慢一点,老本略微高一点,然而平安是永远不可能斗争的红线。“软件能够重启,然而生命不能够重启”,平安是代码激增对汽车软件带来的最大挑战。 软件平安如何保障?先来举两个例子来。第一个是波音 737 Max 飞机,家喻户晓,737 Max 之前出过两次事变,起初有揣测说事变可能和飞机上的一个避免飞机失速失控的软件无关。因为这个问题,导致 737 Max 飞机被大量停飞,而且很多曾经确定的订单被勾销。这种事件如果产生在汽车行业,因为汽车软件问题而带来的汽车召回、停用甚至停售,是任何车企无奈接受的。而一旦波及到人身安全这样的话题,舆论所带来的冲击对车企而言可能是毁灭性的。 第二个是“史诗级破绽”的 log4j 破绽事件。log4j 是一个开源组件,用户遍布寰球,所以当被披露出有破绽时,影响了寰球泛滥用户,这其实是一个典型的开源软件供应链平安问题。 为了应答性能平安和信息安全带来的挑战,在汽车软件研发行业或者平安畛域都有很多规范或者标准去参考,比方 ISO 26262、MISRA、AUTOSAR 以及 OWASP Top10、CWE Top 25,通过这些规范或者标准来进步汽车软件的品质和平安。 除此以外,还有一个点须要留神,那就是随着软件定义汽车时代到来的一个新概念——SBOM。SBOM 是软件物料清单,是一个软件的组件成分表。SBOM 次要应答的问题就是开源软件供应链平安问题。随着当初开源采用率的晋升,曾经很少有企业从零到一去构建所有的零碎,根本都是采纳一些开源框架或者库来减速构建本人的产品。这就带来一个问题:如何保障这些应用或者援用的开源组件的平安合规?万一应用的开源组件外面蕴含一些恶意代码,甚至一些高危破绽,那带来的危险也是很大的。而 SBOM 通过盘点企业数字资产的办法很好的解决了下面的问题。 ...

September 21, 2023 · 1 min · jiezi

关于gitlab:写得了代码焊得了板嵌入式开发工程师必修之代码管理方案下

本文来自武让 极狐GitLab 高级解决方案架构师 前两篇文章,作者介绍了嵌入式开发场景之 代码治理特点与诉求,代码管理工具与形式之 SVN 与 Git嵌入式开发场景的代码治理分仓、权限与依赖问题,以及基于 Git 的多仓治理戳链接即可回顾前情。 本文进一步介绍极狐GitLab 针对嵌入式开发的解决方案。Enjoy~ 3.极狐GitLab嵌入式开发场景解决方案围绕企业对于嵌入式开发场景的诉求,极狐GitLab 提供了一整套解决方案,能够较好解决嵌入式开发场景下的种种问题,重点包含以下几局部内容。 3.1 高可用部署与灾备企业进行代码对立治理的前提是代码管理系统具备高可用、高性能以及容灾等个性,能力撑持企业安全可靠的治理代码数据资产。 极狐GitLab 专业版提供高可用部署计划,是松耦合分布式架构,各组件均为多正本部署,各组件均可实现横向扩大。 极狐GitLab 高可用架构通过横向扩大同时实现了高性能,针对从 1k 到 50k 用户数场景提供了不同的参考架构,满足不同用户规模的企业。 极狐GitLab 同时提供 GEO 主从架构部署计划,该计划为一主多从架构,主从节点配置不用完全一致,主节点提供读写服务,从节点提供只读服务,数据在主从节点之间实时同步,可实现: 通过拜访就近节点减速;负载分担;准实时备份;劫难复原。当主节点呈现故障后可在几分钟内将从节点切换为主节点,复原服务。 极狐GitLab GEO 在实现准高可用的同时,极大升高基础设施资源老本、部署和运维老本。 3.2 组织治理极狐GitLab 通过群组、子群组嵌套关系实现对企业简单组织关系的映射,嵌套最多反对 20 层,能够无效治理企业中的部门、组织、虚构组织、我的项目。 代码库隶属于群组或子群组,可在任意群组、子群组对仓库和人员权限进行治理。 对于须要总览整个群组的管理人员,能够将其在父群组上调配权限,该用户的权限将被继承到所有子群组和代码库中;对于须要查看局部内容的项目经理,能够将其在某个子群组上调配权限,该用户只可看到子群组下所有子子群组和代码库的数据;对于只专一于具体功能模块的开发人员,只须要将其在具体的代码库上调配权限即可,这样就实现了在分仓模式下的受权治理。 3.3 分支策略前文提到,分支治理是 Git 的劣势,分支策略也是体现 Git 高效协同的重要价值,此外分支策略间接决定了研发流程的标准化。 从事嵌入式开发的企业进行 DevOps 转型,首先要思考的就是分支策略怎么建设。以下是常见的几种分支模型,可供参考: 从极狐GitLab 本身实际的角度登程,我更偏向两种分支策略: 上图是极狐GitLab 本人的分支策略,自身是属于版本分支 GitLab Flow,适宜多人协同的大、中型我的项目。相较于Git Flow 裁剪了一些不必要的分支,升高复杂度;下图是对于小型我的项目举荐的极简分支策略,自身是属于 GitHub Flow,适宜单人或者较少人员协同的小型我的项目。须要留神的是,没有所谓的最佳分支策略,因为不同企业的研发流程不一样,即使是同一家企业的不同团队或者同一个团队在不同期间的研发流程也是不一样的,这时候就须要基于这些常见的分支策略总结和提炼一套属于本人的分支模型,并且对它继续进行测验和迭代。比方对于小型嵌入式我的项目,如果存在对不同的芯片或用户有定制版本,那么更倡议基于 GitHub Flow,退出 Release 分支来治理不同的交付版本。 3.4 分支爱护当分支策略制订实现,如何保障开发人员遵循这套流程?那肯定是须要工具层面有束缚伎俩。 极狐GitLab 提供分支爱护性能,能够限度开发人员间接向主分支提交代码,必须通过向 feature 分支或 dev 分支提交代码,再通过 Merge Requests 的形式合并到主分支,能够升高代码抵触,进步协同效率,同时也为开发团队践行代码评审提供了工具侧的落地撑持。 ...

September 5, 2023 · 1 min · jiezi

关于gitlab:腾讯众安卡斯柯极狐GitLab-圆桌精华版狂飙减速效能登场

 “研发效力”真的火了。为帮忙企业一起找到最适宜的研发效力晋升之路,近日, InfoQ 联结极狐GitLab 邀请到来自腾讯、卡斯柯、众安的研发效力专家和实践者,从 6 大问题登程,独特拆解“研发总是追不上业务需要,除了买工具,还能做什么”之问。以下是本次圆桌的精髓回顾,Enjoy~ Q1:近年来泛滥软件企业纷纷投身“效力反动”,降本增效的呼声越来越大,背地的起因是什么?变动与老本+方法论提高,点燃研发效力。张扬  极狐 GitLab 解决方案团队负责人 我第一次接触“效力”一词,是在 DORA(DevOps Research and Assessment,一个致力于 DevOps 调研与钻研的组织)公布的 DevOps 报告中。自 2014 年起,DORA 每年公布一份行业报告,剖析高效能团队与低效能团队在 DevOps 实际上的差别。 过后,我和张乐老师一起参加翻译 DevOps 报告,其中提到了“Software Delivery Optimization Performance”,咱们十分纠结“Performance”应该翻译成什么?通过短暂的探讨,咱们发现在业务场景中,它是“绩效”,在软件交付的改良与优化的场景中,把它译为“效力”更为得当。  为什么“研发效力”明天这么火?我认为有两个起因: 第一,市场变动和老本。数字化过程中,传统企业要做数字化转型,数字原生企业要做数字化晋升,而外部环境变动十分快,要求企业迅速响应市场的变动;另外,软件投入十分高,如何掂量 ROI ,如何降本增效,是研发效力须要解答的命题。 第二,研发方法论和实际的提高。随着瀑布模型 → 麻利开发 → DevOps 理念的遍及和倒退,软件研发治理和工程畛域已获得显著效果。此时咱们想进一步理解本身实际处于什么程度,如何撑持业务倒退等问题,这也须要研发效力来尝试解答。 “狂飙”踩下刹车,“湖水岩石效应”减速浮现。张乐  腾讯研发效力资深技术专家 研发效力被越来越多人认知和认同,与大时代背景相符合。 过来一二十年是互联网、软件行业“狂飙”的黄金期间,数字化红利推动了一波波增长。为了更早或更多地占领市场,很多企业通过大量堆砌人力、资源和工夫,俗称“快糙猛”的开发方式,让业务先跑赢,而后置了倒退模式是否衰弱、迷信、可继续等问题。 现阶段经济上行,企业经营压力大,这种不衰弱的倒退形式注定无奈短暂。 这个过程叫“湖水岩石效应”————当一个湖中有很多水,水面很高时,湖中的石块都被水所笼罩,此时即便有很大的暗礁,人们也看不到。然而当水量缩小,水面升高时,一些暗礁就裸露进去了。  如同现如今企业常常碰到这样的景象:相比前几年,人员数量曾经翻倍,但因零碎架构越来越简单,微服务数量越来越多,导致交付的业务量和需求量并没有同比增加,甚至降落。这在肯定水平上阐明,在过来一段时间里,快速增长覆盖了一些实在问题,即研发效力并没有回升,可能持平甚至降落。 所以咱们明天提效力反动或降本增效,其实是强调在新时代下,研发如何从“快糙猛”转变为更高效、更继续的形式。 Q2:当咱们谈研发高效能或者精英研发效力时,到底在议论什么?既要做正确的事,也要正确地做事。张乐  腾讯研发效力资深技术专家 2021 年,我和一些专家、实践者,提出和公布了“研发效力宣言”,既是对麻利宣言的致敬,也是对咱们的信念和价值观的呐喊和申明,代表了咱们的立场,以及咱们认为对研发效力而言什么才是最重要的。 图片起源:书籍《软件研发效力晋升实际》 我过后画了一张图,下面是业务指标,上面有两个因素,右边是“现实的性能和品质”,左边是“现实的工作量”,即咱们心愿用什么的代价实现什么的性能和品质。但咱们会发现现实和事实之间常常存在差距,要么是效率上的差距,要么是有效性上的差距。 所以,研发效力 ≠ 研发效率,咱们既要关注效率,也要关注有效性,或者说既要关注做正确的事件,也要关注正确的做事件,并谋求效率。 如果用这个一句话来表述研发效力,我认为这句话就是:研发效力就是更高效(即效率)、更高质量、更牢靠、可继续地交付更优的业务价值(即有效性)的能力。对于大型企业而言,还要关注规模化问题,思考如何治理复杂性。 欢送点击此处获取 5 本《中国企业研发高效能白皮书》( CI/CD、ChatOps、企业级软件架构、Code Review、从价值流治理到研发效力治理)完整版合集,开启高效能研发之旅。研发效力是企业在不确定事件里应对外部变动的响应力。张扬  极狐 GitLab 解决方案团队负责人 首先,原生的研发效力肯定是软件的研发效力,不是硬件或者是其余业务的研发效力。 其次,我集体定义研发效力,是数字化企业在不确定事件里应对外部变动的响应力。品质有多高,老本有多低,工夫有多好,工具有多强,将这些因素串联起来,造成一个高速流转的业务交互价值流的能力,就是研发效力流转。 ...

August 24, 2023 · 2 min · jiezi

关于gitlab:写得了代码焊得了板嵌入式开发工程师必修之代码管理方案中

本文来自武让 极狐GitLab 高级解决方案架构师 前一篇文章,作者介绍了嵌入式开发场景的代码治理特点与诉求,以及该场景下的代码管理工具与形式之 SVN 与 Git。前情回顾  嵌入式开发场景下的代码治理计划(上) 本文承前启后,将介绍嵌入式开发场景的代码治理分仓、权限与依赖问题,以及基于 Git 的多仓治理。 2.2 分仓、权限与依赖问题在上文中我曾经简略介绍了 SVN 和 Git 在分仓模式和权限治理上的一些区别,简略来说: SVN 反对目录受权,罕用于大仓模式;Git 仅反对仓库受权,罕用于分仓模式,也反对大仓模式。这本是一个简略的选择题:要么留在 SVN,保留现有的目录受权模式;要么应用 Git 分仓,权限也落在不同的仓库上;要么应用 Git 大仓,权限就管制在整个仓库上;直到另一个需要突破了这个均衡:代码复用。 做过 C/C++ 且又做过 Java、Python、Node 等语言开发的技术人员经常会感叹 C/C++ 短少好的包管理工具,艳羡 Java 有 Maven、Python 有 Pip、Node 有 Npm,而 C/C++ 始终深陷 DLL 天堂、代码版本与交付版本不统一、反复造轮子等各式各样依赖问题的泥潭,不可自拔。 首先 C/C++ 因为其语言个性,构建时经常是零碎底层相干,所以打包时须要思考操作系统、体系架构、编译器版本、构建类型等一系列因素。 且须要关注一些包本身的属性:纯头文件库、动态库还是动静库,以及包的构建参数(比方优化级别、是否开启 exception 和 rtti 的编译选项等),还有指定裁剪性(个性宏)等配置。 另外,因为 C/C++ 的规范库(glibc 和 libstdc++)存在版本兼容性问题,以及 C++ 存在 ABI 兼容性问题,这会让包的版本治理超过语义化版本(SemVer)所能解决的问题范畴,导致包的创建者须要在发包的时候为包的兼容性做更多的思考。 最初,因为 C/C++ 语言在语法上不足包级别的模块化机制,会让包的符号抵触以及依赖解决变得艰难。如果还不够,再加上穿插编译的场景,相对会让一个通用 C/C++ 包管理器的复杂度超过其它任何语言。 包管理器的目标就是对包进行版本控制,解决我的项目间的依赖问题,也能从根本上解决代码复用的问题。但因为 C/C++ 包管理器的复杂度,导致 C/C++ 开发人员在过来很长一段时间内没有包管理工具可用。在这样的背景下,大家对于 C/C++ 的代码复用倒退出了很多模式: ...

August 24, 2023 · 2 min · jiezi

关于gitlab:极狐GitLab-价值流管理之总时间图使用指南

本文起源:about.gitlab.com作者:Haim Snir译者:极狐(GitLab) 市场部内容团队对于软件研发管理者来说,理解在整个研发过程中工夫都消耗在了哪些地方,是进行交付价值优化的要害洞察。GitLab / 极狐GitLab 新的价值流剖析总工夫图是一种可视化展现,帮忙研发管理者把握软件研发中从想法到上线整个过程中理论用时多少,还能够理解到团队在工作流中的每一个阶段耗时多少。 极狐GitLab 价值流剖析开箱即用。它通过对立的数据模型来存储所有与研发相干的数据,显示流程与价值交付的相干指标。价值流剖析应用了一个后端流程来收集并将阶段级别的数据聚合到三个外围对象中: 价值流:带有阶段列表的容器对象;价值流阶段:开始和完结事件的事件对;价值流阶段事件:价值流的最小构建块。比方,从议题创立到议题被增加到看板。查看可用的阶段事件列表。咱们在新的图表中将阶段依照堆面积去展现,不便用户理解每个阶段对总工夫的奉献是什么样的,以及随着工夫的推移是如何变动的。 图中每一块区域代表一个阶段,通过比照每个区域的最高点,就能得悉每个阶段对于价值流总工夫的奉献如何。咱们还增加工具提醒,对阶段进行了从上到下的细分,以帮忙你依照正确的程序来理解不同的阶段。 新的视图在价值流剖析概览页面是可用的(在左侧导航栏抉择剖析 → 价值流)。此页面蕴含四个局部: 数据过滤文本框:在概览页面顶部,可应用数据过滤器来查看合乎特定条件或日期范畴内的数据;阶段导航栏:在过滤文本框上面,可应用阶段导航栏来考察特定阶段都产生了什么,以及辨认延缓整个阶段的条目(议题/ MR);要害指标集:在要害指标集的上方图标,显示流性能的总述;概览图标:新增的总工夫图表及按类型划分的工作图表。但这还不是全副。总工夫图表还可能简化从上到下的优化流程,从价值流仪表盘的组织级视图开始,深刻理解每个我的项目的绩效。 从价值流剖析概览页面,你能够从要害指标集进入极狐GitLab 剖析页面来进行深入调查;还能够转到价值流仪表盘,或钻研新仪表盘中也提供的 DORA 指标。 须要留神的是,图表数据仅限于所选日期范畴内实现的我的项目。而且,也可能存在没有“阶段事件”的工夫点。在这种状况下,图表将以虚线的展示模式来示意数据失落。这些间隙中能够减少一些与工作流无关的上下文信息,但这不代表数据中断。当特定的阶段没有数据时,该阶段的线将是平的。 应用极狐GitLab 价值流剖析总工夫图表,你能够立刻取得每个阶段所破费工夫的洞察,以决定是否要采取下一步动作。更多详情能够查看价值流剖析文档。

August 24, 2023 · 1 min · jiezi

关于gitlab:嵌入式开发场景下的代码管理方案上

本文来自武让 极狐GitLab 高级解决方案架构师版本控制,也称为源码管制、代码治理,是跟踪和管理软件代码的工作实际。 随着信息化、数字化技术的倒退,源代码逐步成为企业的外围数据资产。如何治理好代码这个数据资产,是每一个企业都须要思考和解决的问题。 作为数字化时代的先行者,大部分互联网和科技型企业曾经实现或局部实现了这项工作,并借助麻利开发、DevOps 等方法论和工具实现了代码的标准、牢靠治理,以及高效高质的产品交付。 在产业数字化转型,企业 DevOps 转型的大趋势下,近些年有不少传统嵌入式开发的企业开始参加进来。嵌入式与互联网、科技公司有着不同的技术栈、开发模式和交付形式,对他们来说,并不能发挥拿来主义精力,将“前辈”的教训间接复用,须要结合实际状况走出一条不一样的路,而首先要解决的问题就是代码的牢靠治理、高效协同以及高质量交付。 嵌入式开发场景的代码治理特点与诉求特点依据我过往工作经验以及接触到的局部客户来看,嵌入式开发场景的次要特点如下: 团队规模:团队规模不大,少数在 100 人左右;技术路线:以 C/C++ 为主;开发模式:以瀑布流为主;需要治理:需要绝对简略,相较于利用零碎的简单业务逻辑,嵌入式更多是在跟芯片、元器件打交道;代码大小:较小,少数在 KB 或者 MB 级别;协同形式:以单人开发为主,无需协同;交付频率:较慢,大部分依照月度进行交付;交付形式:固件为主(单片机、下位机等),少部分是可执行程序(上位机);测试形式:真机烧录手动测试为主,极少团队应用仿真模仿测试;零碎工具:次要围绕需要治理和代码治理: 需要治理:常见有 Word、Excel 等电子文本形式,或应用业余 PLM、ALM 工具,又或是无管理工具;代码治理:以 SVN 为主,或无管理工具,仅依附 U 盘、网盘、文件服务器进行归档和传递。在这样的背景下,从事嵌入式开发的企业其实也是不紧不慢,安稳度过了一段期间。但在数字化转型的浪潮下,很多企业管理者开始居安思危,心愿借助一些先进的开发和管理模式,帮忙企业和研发团队转型降级。 诉求如上文所述,嵌入式开发场景的特点决定了他们的工作模式,也带来了一些弊病。简而言之就是短少治理、不足标准、不成体系。 依据我接触到的客户状况来看,从事嵌入式开发的管理者和研发人员对于治理企业源代码的次要诉求如下: 对立治理:源代码是企业外围资产,有必要进行集中、对立治理: 无代码管理工具的团队:须要应用代码管理工具,防止企业源代码失落、泄露;企业存在多套代码管理工具:须要尽可能对立代码管理工具,防止治理不受控或减少治理老本。权限管控:须要实现最根本的无权限、只读、读写、治理等权限调配和管控;版本控制:需对代码进行版本控制,实现最根本的查看历史记录、查看提交人、进行版本回退等性能: 对于开发人员,版本控制提供了一颗“后悔药”,防止代码失落或误删除、误批改后无奈找回;对于管理人员,版本控制提供了一套可追溯、可回退机制,防止人为歹意删除、批改代码等状况,确保企业资产安全可靠。代码标准:须要对开发人员的代码标准进行束缚,防止开发人员上传一些无关要紧的大文件以及不标准的代码提交信息,从而导致性能问题并影响协同效率;代码复用:须要有代码复用的能力,防止企业内反复造轮子,防止雷同性能的代码在多个我的项目中屡次实现;分支策略:须要一套分支策略和工作流,实现单人、多人对于一个我的项目的继续开发、修复、公布,并且能较好的辨别和治理不同的环境和版本,如开发环境、生产环境以及为某客户定制版本;审核机制:需提供一套审核机制,实现代码的评审和确认,未经审核的代码不容许进入代码管理系统,从而进步代码品质,晋升开发团队的综合能力;平安审计:需记录零碎用户在代码管理系统上的行为和操作,便于对一些危险行为进行剖析、追溯和告警,升高代码泄露的危险。所谓工欲善其事必先利其器,嵌入式开发团队或企业要解决的问题远不止如此,但很多团队抉择先从工具侧动手,基于一个好的工具再缓缓摸索和欠缺其实际形式和治理流程。 嵌入式开发场景的代码管理工具与形式纵观版本控制系统,即代码管理系统的发展史,大抵分为 4 个期间,它们对应的支流工具如下: 1980年:RCS;1990年:CVS、VSS、Perforce;2000年:SVN;2005年:Git。 毫无疑问,Git 是当下用于源代码治理的支流工具,它的发起人正是 Linux 之父 Linus Torvalds。 早在 2002 年以前,世界各地的 Linux 开发者通过邮件的形式把代码 diff 发送给 Linus 自己,再由他人工评审和合并,效率十分之低下,社区开发者也表白了不满。援用而 Linus 十分拥护 CVS、SVN 等集中式的版本控制系统,它们性能较差且必须联网能力应用。在 2002 年至 2005 年这段时间,BitMover 公司受权 Linux 社区收费应用它们的商业化版本控制系统 BitKeeper,然而在 2005 年,Linux 社区的开发人员却试图破解 BitKeeper,导致 BitMover 公司发出使用权。援用故事的最初,Linus 自己花了两周工夫用 C 写了一个分布式的版本控制系统,就是 Git。所以 Git 自诞生之日起,就是为了更好的治理 Linux 的外围代码。它跟 Linux 一样也是开源的,并且在社区开发人员的继续奉献下倒退了快二十年。而 SVN 作为上一代的版本控制系统,开始逐步退出历史舞台,往年 1 月,GitHub 也发表自 2024 年 1 月 8 日起,进行对 Subversion (SVN)的反对。 ...

August 17, 2023 · 2 min · jiezi

关于gitlab:如何用极狐GitLab-为-iOS-App-创建自动化CICD详细教程来了

本文起源:about.gitlab.com/blog作者:Darby Frey译者:极狐(GitLab) 市场部内容团队为苹果 iOS 利用程序开发创立一个全自动的 CI/CD 流水线极具挑战,配置构建环境以及治理代码签名都是十分耗时且容易出错,而当搞定所有时,仍旧须要找到一个办法将你的应用程序发送给苹果。 而 GitLab/极狐Gitlab 挪动端 DevOps让这所有都变得非常容易。 极狐GitLab 挪动端 DevOps 是一系列内置在极狐GitLab 外部的性能,帮忙挪动端团队解决在 DevOps 实际中面临的微小挑战。 这篇文章将演示如何应用极狐GitLab 和 fastlane 来设置自动化 CI/CD。 前提条件一个苹果开发者账号:https://developer.apple.com/ 本地机器上装置好 Ruby 和 XCode 命令行工具:https://docs.fastlane.tools/getting-started/ios/setup 参考我的项目为了不便演示,咱们将应用 iOS 我的项目仓库做参考 装置 fastlane如果你还没有装置 fastlane,那么第一步就是要先装置 fastlane: 在我的项目根目录下创立一个 Gemfile 文件并写入如下内容: source "https://rubygems.org"gem "fastlane"而后,在命令终端下执行: bundle install上述命令将实现 fastlane 装置,以及与其相干的所有依赖。 初始化 fastlanefastlane 装置实现,能够为仓库设置 fastlane 了: 进入我的项目根目录,在终端中执行如下命令,抉择选项 2。因为在本教程中,咱们将针对 Test Flight 进行操作: bundle exec fastlane init执行此命令会在我的项目下新创建一个叫做 fastlane 的文件夹,文件夹蕴含 Appfile 和 Fastfile 两个文件。 Appfile 蕴含应用程序所需的配置信息,Fastfile 有一些样例代码(稍后会进行替换)。 对于 Appfile 中更多对于配置的具体内容,欢送查阅 fastlane 文档 ...

June 30, 2023 · 2 min · jiezi

关于gitlab:阅读报告|Gartner®DevOps-平台魔力象限出炉GitLab-获评领导者

日前,寰球出名 IT 征询和钻研公司 Gartner 公布了 DevOps 平台魔力象限《Gartner Magic Quadrant for DevOps Platforms》,GitLab 凭借当先的执行能力和愿景残缺度,入选「领导者」象限,再次向寰球证实了 GitLab DevOps 平台的卓越能力! 极狐 GitLab  作为 GitLab 中国发行版,具备与 GitLab 雷同的产品能力。入选 Gartner DevOps 魔力象限领导者,是对 GitLab 和极狐GitLab 一体化平安 DevOps 平台的实力与价值的重要验证。 点击获取《 2023 Gartner DevOps 平台魔方象限》残缺报告正本Gartner 对 GitLab 的评估Gartner 自 2006 年开始推出魔力象限报告,多年来已倒退为理解各 IT 畛域的重要参考根据,失去市场的宽泛关注与认可。 基于 DevOps 发展趋势,Gartner 首次公布了 DevOps 平台魔力象限。Gartner 示意,DevOps 平台是 DevOps 工具链最简略无效的代替计划,它为组织提供一系列集成能力。软件工程领导者应将 DevOps 平台当作减速客户价值交付的一种伎俩。 依据执行能力和愿景的完整性,Gartner 对寰球 14 家 DevOps 平台提供商进行了评估,GitLab 位居「领导者」象限。 Gartner 在报告中指出: GitLab 一体化 DevOps 平台是一个蕴含了打算、源代码治理、继续集成、部署自动化、可观测性、应用程序平安测试、软件供应链平安、合规报告、价值流剖析及事件治理的繁多应用程序,并在2022 年,GitLab 新增对于 DORA 指标的反对,进一步欠缺价值流仪表盘。援用GitLab 非常适合那些寻求将平安内置到了软件研发工作流的一体化 DevOps 平台的组织。Gartner 评估 GitLab 具备如下劣势: ...

June 30, 2023 · 1 min · jiezi

关于gitlab:Gitlab使用访问令牌拉取代码

拜访令牌 Gitlab提供了一种拜访令牌的形式,用于调用API和拉取代码: 集体拜访令牌能够代替 OAuth2 并用于: 应用 GitLab API 进行身份验证。应用 HTTP 根本身份验证与 Git 进行身份验证。值得注意的是,这种形式仅利用于HTTP形式,不可用于SSH形式,例如不可用于克隆git@结尾的地址。 如何应用如果是公有仓库,须要设置疏忽http认证 git config --global http.sslVerify "false"间接拉取代码 git clone https://oauth2:KNgus-zGhsiKkw@gitlab.my.net/mygroup/myproject.git能够将令牌设置到config中,这样不必每次批改Url git config --global url."https://oauth2:KNgus-zGhsiKkw@gitlab.my.net".insteadof "https://gitlab.my.net"# 间接拉取即可git clone https://gitlab.my.net/mygroup/myproject.git

June 2, 2023 · 1 min · jiezi

关于gitlab:gitlab升级版本cicd-runner页面500错误

背景:gitlab从8.5.7版本升级到gitlab15.11.0版本参照:gitlab远古版本备份&还原&降级,gitlab-11.1.4持续降级到15.9.3。15.9.3版本又执行了一次降级到了gitlab15.11.0。过程根本都是一样的。然而注明一下:我其实降级了两个实例:一个8.5.7-15.11.0,另外一个10.8.7-15.11.0.这里区别阐明,是因为两个解决的过程略微不一样,降级实现后页面都是一样的,点了一遍左侧栏:CI/CD页面runner 包了500的谬误:搜寻关键词 gitlab runner 500:根本起因都是降级or迁徙后gitlab-secrets.json清空造成的,上面具体记录一下两个集群的操作过程: gitlab降级版本ci/cd runner页面500谬误解决方案10.8.7降级的15.11.0实例:尝试了好几个博客中的办法....后果都是有效,最终参考的是:gitlab从12.3.9降级为14.4.5版本后批改通用设置报错。 cd /var/log/gitlab/gitlab-rails/tail -f production.log gitlab-ctl tail | grep error [root@VM-5-14-rockylinux gitlab-rails]# sudo gitlab-rails dbconsole --database mainpsql (13.8)Type "help" for help.gitlabhq_production=# UPDATE application_settings SET encrypted_customers_dot_jwt_signing_key = null;UPDATE 1gitlabhq_production=# UPDATE application_settings SET encrypted_customers_dot_jwt_signing_key_iv = null;UPDATE 1gitlabhq_production=# UPDATE application_settings SET runners_registration_token = null;UPDATE 1gitlabhq_production=# UPDATE application_settings SET runners_registration_token_encrypted = null;UPDATE 1刷新web页面能够失常关上runner: 8.5.7降级的15.11.0实例:尝试了下面的办法还是不能够(下面的流程走过一遍了): cat /var/log/gitlab/gitlab-rails/production.log找到了关键词:aes256_gcm_decrypt 能够参照:DevOps ---- Gitlab-Runner 500然而我看到复原默认备份的没有敢操作.......,参照了:https://blog.csdn.net/ZH_CS/article/details/124709638 sudo gitlab-rails consule------------------------------------------------------------------------------------- GitLab: 15.11.0 (1d9280e) GitLab Shell: 5.11.0 postgresql: 12.12-------------------------------------------------------------------------------------Loading production environment (Rails 5.1.7.2)irb(main):001:0> settings = ApplicationSetting.last......irb(main):002:0> settings.update_column(:runners_registration_token_encrypted, nil)=> trueirb(main):003:0> settings.update_column(:encrypted_ci_jwt_signing_key, nil)irb(main):004:0> settings.save!刷新页面能够了:这应该是降级Or备份还原常见的一个问题,每个人遇到的也可能不一样,只能长于借助搜寻工具了! ...

May 4, 2023 · 1 min · jiezi

关于gitlab:GitLab-解析为什么市场正在转向一体化-DevSecOps-平台附Forrester完整报告下载

本文起源:about.gitlab.com译者:极狐(GitLab) 市场部内容团队如 GitLab 预测:2023 年企业会将更多的工夫和资源投入到继续的平安左移上(详情请戳:重磅!GitLab 提出五大预测,洞见 2023 年 DevSecOps 发展趋势)市场正在转向 DevSecOps 平台。 以前那种让不同工程团队在软件开发生命周期不同阶段,别离采纳他们本人工具工作的过程——咱们称之为“DIY DevOps”,正在被单个应用程序所取代。 为什么会这样? 首先,IT 经理开始着手解决工具链蔓延带来的低效率和老本问题; 其次,高管们正在依赖数字化转型解决一些业务层面的重大问题,例如如何进步研发人员的生产力、打造高效能团队、保障软件供应链平安、创立平安私有云入口等; 最初,潜在的寰球经济衰退危险,减速了上述趋势。 Forrester:GitLab 一体化 DevOps 平台为企业降低成本并实现业务和技术指标GitLab 作为一体化 DevOps 平台(在一个平台中实现了源代码托管、CI/CD、高级平安性能以及其余性能)。 2022年,GitLab 委托 Forrester Consulting 进行了一项 “GitLab 旗舰打算的整体经济影响” 钻研,以便更好地理解企业是如何应用 GitLab 来降低成本并实现业务和技术指标。 点击获取残缺钻研报告《Forrester :GitLab 帮忙企业实现 427% 投资回报率》 钻研发现,在经济低迷的大环境下,GitLab 旗舰版(囊括最残缺的、最全面的 GitLab 性能)能够帮忙企业实现: 技术投资的强劲回报;通过技术工具整合节省成本;更快的应用程序公布速度以获取和留住客户;更高的开发和交付效率;更牢固并且更易于操作的平安保障;疾速的投资回收期。从而带来以下收益: 三年投资回报率(ROI)为427%;带来收益的应用程序年度公布数量减少12倍;开发和交付工夫缩短了87%;少于六个月的投资回报期。自省而后行,理解企业研发痛点无论什么规模,你的企业在软件开发过程中是否也面临以下痛点? 简单的工具链和流程;低效的开发环境;不足平安技能;缓和的开发周期;没有繁多可信源或繁多代码仓库;有效的软件测试实际。上述所有痛点都会减弱企业应答经济衰退和复苏的能力。 五大收益,助力企业在经济不确定期间蓬勃发展Forrester 钻研发现,基于受访客户,GitLab 旗舰版在三年内为复合型组织提供了 10 项要害收益。 每项劣势自身都可能对企业产生踊跃影响,帮忙企业在经济艰难期间保持稳定甚至蓬勃发展能源,而这些劣势的联合,将形成能够打消更多痛点的弱小力量。 以下列举 GitLab 旗舰版带来的收益中,尤为要害的 5 大收益: 破绽治理正如 GitLab 2022 寰球 DevSecOps 调研所示,平安是所有 DevOps 组织最关怀的事件。然而,平安的大规模推广仍旧充斥挑战,尤其是寻找并雇用具备适合技能的专业人才。 依据 Forrester 钻研,GitLab 旗舰版的劣势之一就是高效的破绽治理。 ...

March 9, 2023 · 1 min · jiezi

关于gitlab:gitlab远古版本备份还原升级

背景:gitlab 8.5.8版本.参照:https://github.com/sameersbn/docker-gitlab.git.太多年了也没有降级,当初筹备备份还原到一个新的服务器而后降级一下。gitlab服务器开始是docker-compose搭建的前面迁徙到了kubernetes上(记得过后还是1.14),前面kubernetes 版本继续降级到了1.21。根底环境如下: kubectl get nodeskubectl get pods -n gitlabimage 镜像的版本如下: kubectl get deployment -n gitlab -o yaml|grep image:降级的过程参考了:降级公司的 GitLab,根本版本是8.5.8 -8.12.13-9.5.10-10.8.7-11.1.4(8的小版本先降级到稳固的8.12,而后到8的最高版本,而后每个大版本进行降级)注:我这里的gitlab的根底镜像并不是sameersbn/gitlab 过后有汉化twang2218/gitlab-ce-zh镜像间接应用了汉化的镜像,间接应用了twang2218/gitlab-ce-zh的镜像为例!存储间接挂载了nfs存储未应用pv,pvc形式,如下: Kubernetes下备份gitlab进入gitlab容器执行备份命令:登陆一台CVM节点,当然了前提是能够exec进入gitlab容器控制台。也能够其余可视化dashboard进入,我这里间接在k8s-master-01节点操作了VM-4-34-rockylinux为操作还原降级节点,这里也备注强调一下: kubectl exec -it gitlab-77d7878db-j8kqh bash -n gitlabgitlab-rake gitlab:backup:create确认一下数据的备份目录: cat /etc/gitlab/gitlab.rb |grep back默认的备份目录为:/var/opt/gitlab/backups目录进入/var/opt/gitlab/backups失去生成的备份文件如下:很漫长失去一个20多G的压缩包! COPY备份文件到新的存储门路20g的文件copy 或者mv很慢很慢,尤其是在copy腾讯云cfs文件存储下面的文件。过后还找存储的小伙伴问过,过后他们举荐了应用rclone传输,体验了是很快! 装置rclone装置rclone,参照:https://cloud.tencent.com/document/product/582/83114(还是在kubernetes 管制节点操作的,当然了其实能够在任何一个局域网内节点装置,而后挂载10.0.0.24 的nfs) wget https://downloads.rclone.org/v1.53.4/rclone-v1.53.4-linux-amd64.zip --no-check-certificateunzip rclone-v1.53.4-linux-amd64.zipchmod 0755 ./rclone-*/rclonecp ./rclone-*/rclone /usr/bin/rm -rf ./rclone-*挂载nfs:源nfs 10.0.0.24 目标nfs 10.0.4.134 在k8s管制节点挂载。文件夹门路能够自定义。 sudo mount -t nfs -o vers=4.0,noresvport 10.0.0.24:/ /nfs5sudo mount -t nfs -o vers=4.0,noresvport 10.0.4.134:/ /nfs10 ...

March 9, 2023 · 4 min · jiezi

关于gitlab:gitlab-ssh无法clonesshkeygen加密算法问题

背景:gitlab 比拟古老的一个版本8.5.8(twang2218/gitlab-ce-zh:8.5.8).搭建形式能够参照:Kubernetes 1.20.5 装置gitlab。其实都是基于sameersbn的文档搭建的,甚是古老!开启了https and ssh的形式(也有http,毕竟on kubernetes.作了端口的映射),https and http clone的时候常常会呈现504......也没有方法仓库都大几百M......先不说他们更新麻烦, 我在打包的时候jenkins pipeline根本都是depth: 1 即 git clone --depth=1 stages { stage("GetCode"){ agent { label "build01" } steps{ script{ println("下载代码 --> 分支: ${env.branchName}") checkout([$class: 'GitSCM', branches: [[name: "${env.branchName}"]], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'CloneOption', depth: 1, noTags: false, reference: '', shallow: true]], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'xxxxx', url: "${env.gitHttpURL}"]]]) } } }明天正好须要clone一个仓库,http and https的这样504残害,正好筹备ssh clone 一下...... gitlab ssh clone 仓库生成ssh密钥对:其实原本有密钥对的,这里伪装一下小白间接从头开始创立了: [root@zhangpeng .ssh]# ssh-keygen当然了也能够上面这样创立: ...

March 3, 2023 · 1 min · jiezi

关于gitlab:4道数学题求解极狐GitLab-CI-流水线|第4题合并列车

本文来自:武让 极狐GitLab 高级解决方案架构师 极狐GitLab CI 依附其一体化、轻量化、申明式、开箱即用的个性,在开发者群体中的使用率越来越高,在国内企业中仅次于 Jenkins ,排在第二位。 极狐GitLab 流水线有 4 种不同类型,别离是: 有向无环图流水线父子流水线多我的项目流水线合并列车 但仅靠这些流水线类型名称和官网形容,咱们很难了解其意义和用处。因而,作者联合泛滥用户反馈和本身实际,简明扼要 “从新定义” 了这些流水线类型,并通过 3 篇连载文章为您解答,帮忙您把握极狐GitLab 流水线。 【前文回顾】 有向无环图流水线2. 父子流水线+多我的项目流水线 本文是最初一篇——合并列车 ,enjoy~ 合并列车 Merge Trains官网定义Merge Trains 即合并队列或者叫合并列车,我记得当初可能得花了 2、3 蠢才彻底弄明确这货色到底是干嘛的,先看看官网定义: 应用合并队列对合并申请进行排队,并在将它们合并到指标分支之前验证它们的更改是否能够协同工作。 在频繁合并到默认分支的我的项目中,不同合并申请的更改可能会互相抵触。合并后果流水线确保更改实用于默认分支中的内容,但不适用于其他人同时合并的内容。 懵没懵?GitLab Inc 甚至写了一整篇 Blog 来介绍 Merge Trains 以及 Merge Trains 工作流,详见:《How starting merge trains improve efficiency for DevOps》,内容很丰盛,然而我真的没看懂。 通过一番折腾,我发现要想了解 Merge Trains,得先理解它的前世今生。 从新定义相熟极狐GitLab CI 的敌人肯定晓得在极狐GitLab 的合并申请(MR)中是能够看到与这个 MR 相干的流水线的运行状况,如下图所示,共有两局部流水线,其中: 下面的流水线是发动 MR 后始终到 MR 合并之前,如果源分支 test 有代码提交就会运行流水线,也就是流水线运行在源分支上;上面的流水线是 MR 被执行合并后,在指标分支 main 上运行流水线: 这个逻辑是说,当发动一个 MR 时,假如从 test 分支合并到 main 分支,那么极狐GitLab 首先会在 test 分支下跑流水线,只有当 test 分支的流水线跑胜利时,才阐明至多 test 分支的代码是跑得通的,也意味着能够合并到 main 分支。如果 test 分支的流水线都跑不通,那么合并到 main 分支后会导致 main 分支的代码也无奈失常执行,这就失去了多分支协同开发的意义。 当 test 分支被胜利合并到 main 分支后,极狐GitLab会在 main 分支下再跑一次流水线,用来验证合并后的代码是否可能跑通流水线,或者间接执行部署工作。 基于这个逻辑,在合并申请的根底上,极狐GitLab CI 又延长出 3 种用法。 ...

March 3, 2023 · 2 min · jiezi

关于gitlab:gitlab-158-on-rocky-8

背景:过来始终gitlab搭建在kubernetes上,然而很多的治理不不便:资源的备份。pv,pvc这些治理扩容,降级,迁徙,上传文件的大小等种种问题。当初想把gitlab移出来间接独自部署。操作系统rocky 8 or rocky9(为什么特别强调 8 or 9呢?扫了一眼国内tsinghua的源只有el7的源了。 8 9 搭建装置会报各种问题) gitlab的简略搭建批改主机名:hostnamectl set-hostname XXXX 挂载数据盘集体习惯,挂载一个数据盘为data目录。不想挂载也能够间接应用系统盘了。这里服务器都是腾讯云CVM: 增加gitlab yum源扫了一眼根本国内用的清华的源,but没有el8 or el9的源: https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/?C=M&O=Drocky8 or 9 rpm -ivh el7的源会呈现如下谬误: [root@gitlab ~]# rpm -ivh gitlab-ce-15.8.3-ce.0.el7.x86_64.rpm warning: gitlab-ce-15.8.3-ce.0.el7.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID f27eab47: NOKEYerror: Failed dependencies: perl is needed by gitlab-ce-15.8.3-ce.0.el7.x86_64 policycoreutils-python is needed by gitlab-ce-15.8.3-ce.0.el7.x86_64 [root@gitlab ~]# yum install perl [root@gitlab ~]# yum install policycoreutils-python*恩 el8 el9不能用的....policycoreutils-python包产生了扭转貌似8开始!无奈失常装置rpm包!到gitlab 官网package中查找是否有el8之上对应版本rpm: https://packages.gitlab.com/gitlab/gitlab-ce以el8 15.8.3 rpm包为例: rpm -ivh gitlab-ce-15.8.3-ce.0.el8.x86_64.rpm ...

March 2, 2023 · 2 min · jiezi

关于gitlab:docker-gitlab部署配置参考

官网参考地址 docker-compose.yml version: "3.9"services: gitlab: image: gitlab/gitlab-ee:15.7.3-ee.0 ports: - "28022:22" - "28080:80" - "28443:443" volumes: - ../data:/var/opt/gitlab - ../logs:/var/log/gitlab - ../config:/etc/gitlab shm_size: '256m' environment: GITLAB_OMNIBUS_CONFIG: "from_file('/omnibus_config.rb')" configs: - source: gitlab target: /omnibus_config.rb secrets: - gitlab_root_password gitlab-runner: image: gitlab/gitlab-runner:alpine3.14-bleeding deploy: mode: replicated replicas: 4configs: gitlab: file: ./gitlab.rbsecrets: gitlab_root_password: file: ./root_password.txtgitlab.rb external_url 'https://gitlab.ueic.tech/'gitlab_rails['initial_root_password'] = File.read('/run/secrets/gitlab_root_password').gsub("\n", "")root_password.txt MySuperSecretAndSecurePassw0rd!

January 14, 2023 · 1 min · jiezi

关于gitlab:gitlabce将https修改为http

因为一些未知的起因(猜测应该是gitlab的证书主动renew),近期自部署的gitlab-ce呈现了证书问题。 索性咱们禁用gitlab的https性能,将期复原为http。前期咱们再在部署一个nginx进行数据转发,而后在nginx上起用https并设置证书。这样应该就躲避了gitlab的证书谬误问题。 配置gitlab-ce的配置文件位于:/etc/gitlab/gitlab.rb中。而将https变更为http的办法很简略,只须要配置external_url为 http 打头即可。 - external_url 'https://gitlab.yourdomain.com:8888'+ external_url 'http://gitlab.yourdomain.com:8888'而后应用执行命令:sudo gitlab-ctl reconfigure使其失效。 配置尽管简略,但测试的时候却每每产生问题,导致开始狐疑人生。 测试应用chrome关上地址:http://gitlab.yourdomain.com:8888,却发现产生了307,转向的地址为:https://gitlab.yourdomain.com:8888,这会使得咱们开始狐疑后面的配置是否失效了。 即便开启了chrome或firefox的禁用缓存性能,拜访原地址依然是307。这是因为禁用缓存性能并没有禁用浏览器的redirects,所以如果在浏览器上间接进行测试,则须要先清空浏览器的缓存。 比方咱们将地址输出地址栏后,而后关上控制台,接着左键点住刷新按钮: 抉择清空缓存并且硬加载(Empty cache and hard reload),此时便能够禁用chrome的redirects的缓存后实现加载了。 其实除了应用浏览器间接测试外,更靠谱的办法是应用一些脚本,比方curl。curl反对应用-I参数来显示返回的状态码及响应头。 雷同的地址,如果curl并没有返回307而浏览器却是307则能够确认是浏览器的缓存问题而不是gitlab的配置问题了。 panjie@panjies-Mac-Pro ~ % curl -I http://gitlab.yourdomain.com:8888HTTP/1.1 302 FoundServer: nginxDate: Tue, 27 Dec 2022 04:33:50 GMTContent-Type: text/html; charset=utf-8Connection: keep-aliveCache-Control: no-cacheLocation: http://gitlab.yourdomain.com:8888/users/sign_inPragma: no-cacheX-Content-Type-Options: nosniffX-Download-Options: noopenX-Frame-Options: SAMEORIGINX-Permitted-Cross-Domain-Policies: noneX-Request-Id: 01GN8XQC4NVMGZ7VA4S5QRRX2EX-Runtime: 0.029655X-Ua-Compatible: IE=edgeX-Xss-Protection: 1; mode=blockStrict-Transport-Security: max-age=63072000Referrer-Policy: strict-origin-when-cross-origin此时首页返回302,回跳地址为:http://gitlab.yourdomain.com:8888/users/sign_in,持续申请该地址: panjie@panjies-Mac-Pro ~ % curl -I http://gitlab.yourdomain.com:8888/users/sign_inHTTP/1.1 200 OKServer: nginxDate: Tue, 27 Dec 2022 04:35:02 GMTContent-Type: text/html; charset=utf-8Connection: keep-aliveVary: Accept-EncodingCache-Control: max-age=0, private, must-revalidateContent-Security-Policy: Etag: W/"7aefc583df813a9b66e476d0c11736b1"Link: </assets/application_utilities-f86a7caa76c1a2f00550828a9303a66e38d2f043e5f21c2bade17a6ddafe50ab.css>; rel=preload; as=style; type=text/css,</assets/application-f8ba2470fbf1e30f2ce64d34705b8e6615ac964ea84163c8a6adaaf8a91f9eac.css>; rel=preload; as=style; type=text/css,</assets/highlight/themes/white-14ba9f209d5cc375d065606896b08ef3d4dc7be19e5b5800958b390d7ab2bd40.css>; rel=preload; as=style; type=text/cssPermissions-Policy: interest-cohort=()Pragma: no-cacheSet-Cookie: _gitlab_session=e3d88869c1f709d08bb1887a9da8fb9f; path=/; expires=Tue, 27 Dec 2022 06:35:02 GMT; HttpOnlyVary: AcceptX-Content-Type-Options: nosniffX-Download-Options: noopenX-Frame-Options: SAMEORIGINX-Permitted-Cross-Domain-Policies: noneX-Request-Id: 01GN8XSJQC57ANRBDYY8J9P8HFX-Runtime: 0.068342X-Ua-Compatible: IE=edgeX-Xss-Protection: 1; mode=blockStrict-Transport-Security: max-age=63072000Referrer-Policy: strict-origin-when-cross-origin可见状态码为200,非307。此时便能够请释怀的去钻研浏览器的缓存问题了。 ...

December 27, 2022 · 1 min · jiezi

关于gitlab:如何利用gitlabrunner-触发ci-和cd

1、装置docker brew install --cask --appdir=/Applications docker2、启动docker我装置了docker-deskTop 启动软件,就启动了docker 3、装置gitlab 3.1 搜寻可装置的gitlab list docker search gitlab 3.2 下载镜像,我下载的中文docker pull twang2218/gitlab-ce-zh 3.3 启动gitlab服务 3.3.1 能够通过docker-deskTop 生成一个镜像实例 3.3.2 也能够通过一下命令行生成镜像实例 docker run -d -p 8443:443 -p 8090:80 -p 8022:22 --restart always --name gitlab -v /usr/local/gitlab/etc:/etc/gitlab -v /usr/local/gitlab/log:/var/log/gitlab -v /usr/local/gitlab/data:/var/opt/gitlab --privileged=true twang2218/gitlab-ce-zh解释一下: docker run -d #后盾运行,全称:detach-p 8443:443 #将容器外部端口向外映射-p 8090:80 #将容器内80端口映射至宿主机8090端口,这是拜访gitlab的端口-p 8022:22 #将容器内22端口映射至宿主机8022端口,这是拜访ssh的端口--restart always #容器自启动--name gitlab #设置容器名称为gitlab-v /usr/local/gitlab/etc:/etc/gitlab #将容器/etc/gitlab目录挂载到宿主机/usr/local/gitlab/etc目录下,若宿主机内此目录不存在将会主动创立-v /usr/local/gitlab/log:/var/log/gitlab #与下面一样-v /usr/local/gitlab/data:/var/opt/gitlab #与下面一样--privileged=true #让容器获取宿主机root权限twang2218/gitlab-ce-zh #镜像的名称,这里也能够写镜像ID4、gitlab相干配置 4.1 进入容器环境 docker exec -it gitlab bash 也可通过docker-deskTop,通过点击刚生成的实例 ...

November 2, 2022 · 1 min · jiezi

关于gitlab:gitlab在阿里云的安装

[toc] gitlab阿里云搭建1. 阿里云购买(略)2. gitlab搭建2.1 环境依赖搭建yum -y install policycoreutils openssh-server openssh-clients postfixyum install policycoreutils-pythonsystemctl enable sshd && sudo systemctl start sshdsystemctl enable postfix && systemctl start postfix如果postfix启动失败报警如下: Job for postfix.service failed because the control process exited with error code. See "systemctl status postfix.service" and "journalctl -xe" for details.须要批改配置,而后重试: vim /etc/postfix/main.cf#批改内容如下:inet_protocols = ipv4inet_interfaces = all2.2 敞开防火墙或者防火墙减少白名单systemctl stop firewalld.service 2.3 下载软件并装置wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/7/gitlab-ce-15.4.3-ce.0.el7.x86_64.rpm/download.rpm # 从这里能够找到响应的包来抉择:https://packages.gitlab.com/gitlab/gitlab-ce/2.4 批改配置#大概在33行 留神123.123.123.123是你的公网IPexternal_url 'http://123.123.123.123:8280'#大概在1456行nginx['listen_port'] = 82802.5 重新启动gitlab-ctl reconfiguregitlab-ctl restart2.6 拜访页面:如上http://123.123.123.123:8280 ...

October 21, 2022 · 1 min · jiezi

关于gitlab:我与CI流水线的羁绊任谁也无法斩断

本文来自:程恒 极狐(GitLab) 培训讲师极狐(GitLab) CI 流水线设计直播课上周落下帷幕,小伙伴们学习热情高涨,想听听 CI 流水线设计课程背地的故事。那么明天,作为本次直播课讲师,我联合本人的亲自体验,与大家分享利用极狐GitLab CI 流水线之前的经验。在这里,我先借用我的导师分享的一句话 “What does not kill you, makes you stronger”。深有共鸣,与大家共勉。 你是否也有这样一个困惑 首先,咱们再认识一下继续集成(Continuous Intergration,简称 CI )。在软件工程中,CI 是将所有开发人员的工作正本每天屡次合并到共享主线的做法。每个集成都通过主动构建(包含测试)进行验证,以尽快检测集成谬误。 CI 次要的目标就是为了实现品质内建(Built-in-Quality),在开发阶段就解决大部分的品质和平安问题。 提到 CI,大家往往就想到了自动化测试,尽管自动化测试并非 CI 的严格组成部分。 市面上对于自动化测试的实际比拟多,比方 TDD(测试驱动开发)、BDD(行为驱动开发)、DDD(畛域驱动开发)、ATDD(验收测试驱动开发)等等。 在您布局或设计流水线的时候,是否思考了这样一个问题:自动化测试对于您的业务来讲,它真的值得的吗?下图给了一个十分概况的估算形式。 点击查看具体阐明信息 我与 CI 的前半生工夫回到 2014 年,这注定不平庸的一年。这是我接触到 DevOps 的第一年,也是我率领金融团队的第一年,是我职业生涯中的第一个转折。 尽管在之前的工作经验中,我在规模 300+ 人的我的项目里有过四年率领 10 多人团队的教训,但过后更多的是关注业务层面的设计以及实现,这一次的我的项目却须要关怀到软件生命周期中的方方面面。还记得,拿到整个我的项目的零碎形成图之后,我的感觉就是这样的: 第一条流水线:真香啊该我的项目属于保护性质(在已有的我的项目根底上开发),特色比拟显著,客户也比拟随(you)和(qian),要求在两周内公布一些新个性。要上线的时候,我才发现,团队外面竟然没有人做过部署,要做就是 WinSCP 的工具拖拽,部署 10 次就有 9 次跑不起来(剩下的一次就是我部署的)。 为了我的项目的顺利进行,我用 Jenkins 部署了人生中的第一条 CI 流水线,整个 CI 流水线只有两个性能,打包和部署环境。破费的工夫从原来的 1 人日/部署,缩短到了 10 分钟/部署,我尝到了 CI 的苦头,真香啊~(当年的我的项目奖金拿到手也是真香) 第二条流水线:磨人小妖精我的项目过程中除了有不顺,还有更不顺。随着我的项目进入正规,一些问题也逐步浮现,品质上属于大错不犯,小错一直,客户天然对于品质产生了担心。为了打消客户的放心,我投入到品质剖析和报告中去,这些工作占据了我大部分的工夫,最厉害的一次做到了一个月两次品质报告。可是,品质报告 ≠ 品质晋升,还得通过欠缺各种流程,加上各种代码的人工评审流程,这些让团队疲惫不堪,可是不见任何成果。 ...

September 29, 2022 · 1 min · jiezi

关于gitlab:官宣-极狐GitLab-公司成立一年完成-4-轮融资夯实中国开源市场信心

2022 年 9 月 13 日,极狐(GitLab)(以下简称“极狐公司”)发表实现 A3 轮融资。本轮融资方为地狱硅谷,融资金额达数千万元。 此前,极狐公司曾获红杉宽带跨境数字产业基金、高成资本、泰康人寿、淡马锡、干杯基金、Alpha Prime Limited、联想创投、纪源资本、上海人工智能产业基金、诺基亚成长基金近十家投资机构的天使轮及 A1、A2 轮投资。成立仅一年半,极狐公司已取得四轮融资,金额累计数亿元人民币,外资占比进一步升高。 极狐GitLab 是面向中国市场的开放式一体化平安 DevOps 平台。通过业界当先的优先级治理、平安、危险和合规性性能,实现产品、开发、QA、平安和运维团队间的高效协同,减速和优化企业软件开发生命周期。 自 2021 年 3 月成立以来,公司依靠成熟的产品研发技术、更适宜外乡企业应用场景的 DevOps 策略服务,迅速跻身行业前列。 据悉,此次融资将进一步增强 “自主可控 3.0”、独立翻新方面的投入:一方面提供更适宜中国本土化企业需要的 DevOps 产品,源于 GitLab,但不止于 GitLab;另一方面继续推动 DevOps 自主翻新,在孵化我的项目的同时做出更多翻新我的项目,通过凋敝中国开源生态,引领寰球翻新。 成立一年半赢一线资本与超200家标杆客户青眼,提振开源市场信念开源自 20 世纪 80 年代诞生至今倒退迅速,中国的开源软件市场已达到千亿规模。成立仅一年半融资四轮、赢近十家一线资本青眼的极狐GitLab 显得尤为突出,验证了开源产业价值在国内一直被认可: 在政策方面,开源被列入 “十四五” 布局和 2035 年近景指标大纲,人民银行等五部门联结公布《对于标准金融业开源技术利用与倒退的意见》也激励金融机构将开源技术利用纳入本身信息化倒退布局。 在产品与商业化方面,开源是目前最佳、也是最快打磨产品并验证商业化的形式。当一个新技术或产品走向市场的时候,开源模式使用户在更短时间、用更低成本疾速应用、并反馈。开源模式扩充了客户覆盖范围,用户粘性也更强。 极狐公司开创团队次要来自于 IBM、华为、惠普、VMware、D2iQ、京东等,在企业服务、开源软件方面领有近 20 年资深教训。 极狐公司创始人兼 CEO 陈冉示意: “极狐将会利用此次融资,持续扩充对自主可控的研发投入,并增强开源凋谢生态建设,不断扩大市场影响力,改进开源土壤,优化开源环境,继续验证中国 ‘开源凋谢’ 新模式,打造中国开源凋谢文化,融入寰球新名片。” 本轮投资方地狱硅谷资产治理团体有限公司于 2000 年 11 月成立,是国内首批成立的基金治理人之一;曾荣膺中国私募股权投资机构十强、中国最具创新力综合性基金管理机构十强、中国最佳产业投资机构 TOP3。 地狱硅谷高级合伙人王伟指出: “地狱硅谷继续关注企业数字化的转型,而软件行业是数字化的根底和外围。软件开发模式从传统的麻利开发过渡到当初的 DevOps 模式是行业必然,而 GitLab 是世界上为数不多领有欠缺成熟 DevOps 的工具体系和平台软件的公司。并且其 ‘中外合资 3.0’ 的模式符合中国政策的要求,置信在陈冉的率领下,团队肯定能够把极狐GitLab 打造成中国人本人的 DevOps 根底软件和开源平台,并最终走向世界。” ...

September 15, 2022 · 1 min · jiezi

关于gitlab:GitLab-对免费用户实施存储限制谷歌数据中心发生爆炸新版-Vue-3-中文文档上线-思否周刊

40s 新闻速递推特确认 540 万账户数据泄露iPhone14 Pro 大概率涨至 8999 元起GitLab 将对收费用户施行存储限度谷歌公开鞭挞苹果妨碍跨平台交换微信反对电脑手机相互迁徙聊天记录谷歌数据中心发生爆炸 3 人受伤马斯克回应套现 465 亿元,或打造新社交平台iPhone 14 或将提前公布又一加密货币交易平台暂停交易Kali Linux 2022.3 公布Windows 11 加密 bug 会导致数据失落运行迟缓OpenSUSE 思考移除 reiserfs 文件系统新版 Vue 3 中文文档上线Rust 1.63.0 公布行业资讯推特确认 540 万账户数据泄露7 月 22 日 Restore Privacy 报告称,推特因安全漏洞被黑客入侵,共计 540 万个账户的联系方式泄露,泄露的 540 万个账户包含推特 ID 与其关联的电话号码和电子邮件信息,已在一个黑客论坛上发售,价格为 3 万美元(约 20.28 万元人民币)。今日,推特已正式确认该攻打已产生,并且该 0-day 破绽已被修补。 iPhone14 Pro 大概率涨至 8999 元起据中国经济周刊报道,苹果目前已开启发布会视频的录制,最终发布会日期将会被定在 9 月 13 日。依照常规,iPhone 14 系列将会在 9 月 23 日上市。依据最近的供应链音讯,iPhone 14 标准版这次并不会跌价,仍然维持前代的 5999 元起步价。而 iPhone 14 Pro 系列两款机型,将大概率迎来跌价,其中 iPhone 14 Pro 预计售价 8999 起步,iPhone 14 Pro Max 预计 9999 起步。 ...

August 13, 2022 · 2 min · jiezi

关于gitlab:GitLab-自动删除项目仅需四步丝滑迁移至极狐-GitLab

近期 GitLab 对于对收费账户进行了几项调整: 将托管在 GitLab SaaS 上那些一年以上不沉闷的仓库应用块存储的 “归档” 形式解决,任何读写操作即可从新激活仓库namespace 下的存储限额从 45000GB 逐步减小到最终的 5GB此举引发了国内泛滥开发者热议。 极狐 GitLab 作为 GitLab 在国内的发行版,有本人独立的 IP 、经营形式以及泛滥劣势,不会对仓库进行任何归档解决。 目前已推出极为丝滑的迁徙体验:仅需四步,即可实现从 GitLab 到极狐 GitLab 的迁徙。欢送各位开发者体验试用。 极狐 GitLab 的劣势极狐 GitLab 是齐全面向国内用户的一体化 DevOps 平台,除了成熟、平安的开箱即用的 DevOps 能力外,还具备以下劣势: 齐全本土化服务。极狐 GitLab 所有的经营、服务反对团队都在国内,可能更好的服务中国用户日臻完善的中文文档。极狐 GitLab 有专属中文文档,不便国内用户更好的学习应用极狐 GitLab。数据安全保障。极狐 GitLab 的所有基础设施均部署在国内,齐全独立于美国 GitLab,保障了用户数据安全。顺畅的网络体验。极狐 GitLab 的网络齐全基于本地建设,网络速度得以保障,应用体验大幅晋升。极狐版专属性能。极狐 GitLab 有针对国内用户的多项专属性能,如:研发效力治理、集成钉钉、飞书的 ChatOps 性能等,而且随着版本的更新,这些专属性能也会始终迭代。多种服务获取形式。极狐 GitLab 用户能够从多种渠道获取服务与反对,诸如微信群、论坛、直播分享等。齐全开源凋谢的平台。极狐 GitLab SaaS(JiHuLab.com)是一个齐全开源凋谢的平台,提供开源我的项目托管,可能为开发者打造一个学习开源、参加开源、奉献开源的平台,让国内百万开发者通过开源来减速社会翻新。从 GitLab SaaS 到极狐 GitLab SaaS仅需四步即可实现 GitLab SaaS 到极狐 GitLab SaaS 的迁徙。 前提条件须要有极狐 GitLab SaaS 账号,能够点击链接https://jihulab.com/users/sign_in注册。 迁徙流程在极狐 GitLab SaaS 上抉择新建我的项目,抉择 Import project ...

August 12, 2022 · 1 min · jiezi

关于gitlab:GitLab-宣布不删除免费用户的不活跃项目马斯克我被推特骗了Linux-519-发布-思否周刊

40s 新闻速递超 8000 加密货币钱包蒙受攻打,黑客卷走数百万 Solana 与 USDC 资产GitLab 发表不会删除收费用户的不沉闷我的项目GitHub 呈现超 35000 个歹意攻打文件 / 克隆仓库亚马逊将在 2023 年底敞开 Amazon Drive 服务英特尔 2024 年将推出 WiFi7,苹果正逐步向 WiFi6E 过渡iPhone 14 Pro 或勾销远峰蓝,新增紫色马斯克:我被推特骗了,他们吹牛的日活用户数远高于看广告的用户数苹果第二季度下架 43.9 万款 App:久未更新Chrome 引入“无害”API,遭苹果、火狐抵制.NET Core 3.1 将于 12 月 13 日终止反对Python 3.10.6 公布Linux 5.19 公布Visual Studio Code 1.70 公布Linux 5.20 改名为 Linux 6.0行业资讯超 8000 加密货币钱包蒙受攻打,黑客卷走数百万 Solana 与 USDC 资产近日,外媒报道 Nomad 代币桥遭逢了破绽攻打,导致其 1.9 亿美元资产被掏空。与此同时,不出名的攻击者也在周二晚间涤荡了数千个蕴含价值至多 400 万美元的 Solana 和 USDC 的加密货币钱包。Decrypt.co 指出,攻打产生于太平洋规范时晚间 20:00,并且仿佛起源于 Solana 浏览器钱包 Phantom。 ...

August 6, 2022 · 3 min · jiezi

关于gitlab:Terraform-Gitlab-CI简单集成方案

一 背景利用Gitlab CI实现基础设施编排自动化,用户后续针对基础设施的治理应用Gitlab实现,提交基础设施变更后,会登程pr进行Gitlab CI流水线执行,从而实现基础设施DevOPS流程。二 流程架构2.1 架构图 2.2 流程运维研发编写指标云的基于Terraform的资源清单文件,共事我的项目内治理Gitlab CI流程,在K8s不同NS下注册有对应的runner,当在不同分支下能够触发不同ns下的CI流程。 开发或运维人员提交代码。部署在对应名称空间下的runner执行流程,创立运行单个Stage的POD来运行Terraform对应命令,例如init/fmt/play/apply等。如果要对云上资源进行变更,批改代码,再次提交pr,登程更新流水线。如果须要销毁,依据CI文件配置提交BUILD为destroy,触发云上销毁动作。 三 预置条件 Gitlab 服务器注册有我的项目的gitlab-runnerK8s集群腾讯云AK账号 四 配置4.1 Gitlab CI配置4.1.1 .gitlab.yamlvariables: # PHASE: BUILD|DESTROY PHASE: DESTROY PROXY: http://squiduser:xxzx789@43.1...PROXY: http://squiduser:xxzx789@43.1...REGION: "ap-guangzhou" PLAN_JSON: plan.json BACKEND_CONF: "backend_oss.conf" before_script: - apk add --no-cache curl git jqapk add --no-cache jqexport http_proxy=${SQUID_PROXY}export https_proxy=${SQUID_PROXY}export TENCENTCLOUD_SECRET_KEY=${TENCENTCLOUD_SECRET_KEY}export TENCENTCLOUD_SECRET_ID=${TENCENTCLOUD_SECRET_ID}export TF_REGISTRY_CLIENT_TIMEOUT=120000export CHECKPOINT_TIMEOUT=500000export TF_REGISTRY_DISCOVERY_RETRY=5alias convert_report="jq -r '([.resource_changes[]?.change.actions?]|flatten)|{\"create\":(map(select(.==\"create\"))|length),\"update\":(map(select(.==\"update\"))|length),\"delete\":(map(select(.==\"delete\"))|length)}'"配置缓存cache: paths: - ${CI_PROJECT_DIR}/.terraform/*stages: initvalidateplandeployInit: image: name: hashicorp/terraform:0.14.0entrypoint: [""]stage: init retry: max: 2when: - script_failuretags: - gitlab-runner-k8s-newscript: ...

July 6, 2022 · 2 min · jiezi

关于gitlab:运维脚手架之GitLab

开源推动社会提高,不过商场如战场,目前大部分商业策略中,企业产品源代码个别不太适合间接开源,产品代码大都不是很适合间接放GitHub、GitEE上,企业惯例做法是搭建局域网仓库,还能进步传输速度,其中GitLab是个不错的抉择! 本文解说GitLab采纳容器化的装置办法及三种次要利用场景。 一、GitLab装置配置Docker环境规划及装置Docker的搭建能够参考之前的【运维脚手架】相干文档,这里不赘述。 服务器布局: 咱们先筹备一台服务器,能够是虚拟机,应用centos7 64位最新版服务器挂载一块独立大硬盘,门路是/usr/local/docker/,条件容许能够挂在网络安全存储,用于数据卷挂载,后续做容器漂移、重装降级都能够妥善爱护数据。容器装置:采纳Docker-compose装置,以下代码,复制到ssh终端执行即可,下文配置如下: 容器的数据卷、配置信息对立挂docker下的专属目录,其余利用相似compose脚本中指定了镜像、容器的运行端口及数据卷信息compose脚本可随时批改配置信息,下方脚本提供了日常应用脚本 mkdir -p /usr/local/docker/gitlab_dockercd /usr/local/docker/gitlab_dockertee docker-compose.yml <<-'EOF'version: '3.1'services:gitlab: image: 'gitlab/gitlab-ce:latest' container_name: gitlab restart: always environment: GITLAB_OMNIBUS_CONFIG: | external_url 'http://192.168.20.151:8929' gitlab_rails['gitlab_shell_ssh_port'] = 2224 ports: - '8929:8929' - '2224:2224' volumes: - './config:/etc/gitlab' - './logs:/var/log/gitlab' - './data:/var/opt/gitlab'EOFdocker-compose up -ddocker-compose logs -fdocker exec -it gitlab bashGitLab简略配置root初始密码批改初始密码个别是非人类可记忆的,通过shell查问初始密码,在网站中进行批改 # 登录页面批改默认明码docker exec -it gitlab cat /etc/gitlab/initial_root_password增加团队成员用户站点反对用户自注册管理员审批、管理员手工开明并邮件告知两种操作,举荐前者!二、代码治理之Idea集成GitLab版本治理最频繁的就是代码的保护了,目前java最支流的就是idea了,对于idea的应用能够查问作者其余相干文档。 集成应用有个通用流程,不然容易掉坑里这边叨叨两句:先在gitlab上创立我的项目,配置好相干人员读写权限;idea中创立我的项目,初始化git本地仓库治理。idea中对我的项目测试ok,连贯近程gitlab仓库,推送代码。团队成员首次应用,间接拉取gitlab近程代码,而后协同开发即可 开始水代码啦~ 步骤一: gitlab上创立我的项目,设为public,默认不创立readme,省去抵触合并的麻烦 步骤二: idea端本地代码治理# idea控制台执行gitlab的申明账号信息git config --global user.name "linzh" git config --global user.email "linzhihui@hotmail.com"idea对工程初始化git本地仓 ...

June 30, 2022 · 1 min · jiezi

关于gitlab:快来极狐GitLab-SaaS-学习全球顶级的开源项目吧

开源的倒退推动了技术的提高,技术的提高促成了各行各业的转型与倒退,例如这些年势头迅猛的 DevOps、云原生、人工智能、区块链等,其倒退背地的弱小推动力正是开源。 Linux 基金会和 Apache 基金会作为寰球顶级的两大基金会,托管有数以百计的优良开源我的项目。拿近些年异样火爆 CNCF(云原生计算基金会,为 Linux 基金会下的一个子基金会)来讲,目前托管有 123 个开源我的项目,吸引了寰球 187 个国家的 159K 贡献者来参加奉献,其奉献量达到了惊人的 9.3M,同时云原生 landscape 中所展现的内容,市场价值为 $22.3T。同样在 Apache 基金会中托管有为大家所熟知并常常应用的开源我的项目,诸如 hadoop、flink、kafka、skywalking 等。 上述所有基金会我的项目均托管在 GitHub,为了帮忙国内开发者和团队失去更敌对、顺畅的拜访体验,极狐(GitLab)将 CNCF 中曾经毕业的 16 个我的项目和 Apache 基金会中 Star 最多的 34 个我的项目,镜像到了极狐GitLab SaaS — JihuLab.com。极狐GitLab SaaS 基础设施部署在中国境内,在网络拜访上没有任何限度,任何开发者都能够通过极狐GitLab SaaS 快速访问这些顶级开源我的项目。极狐GitLab 也将推出系列主题流动,帮忙大家学习应用并参加到国内顶级的开源我的项目中来! CNCF 中的毕业的 16 个开源我的项目如下图:Apache 中 Star 最多的 34 个我的项目(除归档外)如下图: 上述 50 个我的项目在极狐GitLab SaaS 上的镜像地址为: https://jihulab.com/oss-mirrors 。 极狐GitLab 镜像产品许可证阐明本开源软件镜像文件服务(“本服务”)由极狐信息技术(湖北)有限公司(下称“极狐(GitLab)”或“咱们”)提供,您批准恪守位于极狐(GitLab)官网 https://gitlab.cn/terms/ 的法律申明、无关协定与免责申明,以及下述所载的所有规定(以下称“本政策”)。一旦您开始应用本服务,即示意您已充沛了解本政策内容,并批准受本政策束缚。如果您不恪守本政策,咱们能够停止或终止向您提供本服务,由此造成咱们损失的,您应负责抵偿。 第一局部 权力归属本服务供您下载开源软件镜像文件(“镜像文件”)的知识产权应归属于该镜像文件的开发者(或依据该镜像文件实用的许可证约定的知识产权持有者)所有。您的下载和应用镜像文件的行为应恪守该等镜像文件所对应的许可证或其中其余对于知识产权的约定,亦应受限于中华人民共和国对于知识产权相干法律法规的限度与规定。若违进犯该等知识产权,在法律规定的范畴内,由此带来的责任由您承当。 本服务不形成任何软件、产品或服务的销售,也不向您或本服务用户传播任何软件、产品或服务的所有权或与软件、产品、服务相干的权力或形成任何其余模式的知识产权或权属的转移或传递。 您不得删除、更改或含糊任何镜像文件中要求清晰展现的许可证申明、知识产权申明、专有图例、商标或服务标记属性、专利标记或有权方对所有权或奉献的其余标记。 除第1条的本服务对应的镜像文件外,网站的其余内容,包含图片、网站架构与画面的安顿、网页设计、文字、图表、代码、SDK、API、LOGO等知识产权及其他合法权益,包含商标权、著作权与专利权等知识产权,均归咱们或咱们的关联方所有。极狐(GitLab)(及其关联公司、许可方,如实用)将保留及享有与前述相干内容以及对前述相干内容的全副倡议、想法、加强申请、反馈或其余模式解决与订正后的所有知识产权。未经咱们或关联公司的当时书面许可,任何人不得以包含通过机器人、蜘蛛、爬虫等程序或设施监督、复制、流传、展现、镜像、上载、下载等形式擅自应用本服务内除第1条镜像文件之外的所有内容。就第1条的本服务对应的镜像文件外得其余任何网站内文件,您不得删除、更改或含糊任何极狐(GitLab)(或其关联公司、许可方)的知识产权申明、专有图例、商标或服务标记属性、专利标记或极狐(GitLab)(或其关联公司、许可方)对软件的所有权或奉献的其余标记。 ...

June 9, 2022 · 1 min · jiezi

关于gitlab:自建Gitlab迁移工具使用指南

自建Gitlab迁徙工具指南,迁徙工具对自建 Gitlab 服务的数据搬站提供了反对,能够不便地将 Gitlab 的 Git 代码数据、用户权限关系和已开启的合并申请数据进行批量迁徙,大幅升高企业迁徙老本。 阐明: 迁徙工具包于 2022 年 04 月 13 日 进行更新,新增自建 Gitlab 人员权限关系和已开启的合并申请迁徙能力,倡议该日期前下载工具的用户更新最新版本应用。留神 倡议导入库地址应用 HTTP 协定,后续将基于 HTTP 协定反对仓库同步能力。工具应用办法简略三步,实现代码库批量迁徙: 步骤一.下载迁徙工具; 步骤二.通过命令主动生成阿里云RAM子账号,作为迁徙用户映射关系的配置文件; 步骤三.通过命令主动生成冀望导入的代码库列表,作为迁徙库范畴的配置文件; 步骤四.执行迁徙命令,工具将根据步骤二、三生成的配置文件将自建 Gitlab 数据迁徙至 Codeup 指定企业; 一、工具筹备下载迁徙工具,其原理是依据你在自建的 Gitlab 服务里的权限,主动生成相干配置文件,并能够按需调整配置文件内容后,再根据配置文件规定将 Gitlab 数据迁徙至 Codeup 企业中。 下载工具macOS ARM 64位 下载地址 macOS 64位 下载地址 Linux 64位 下载地址 Windows 64位 下载地址 下载地址详见:https://help.aliyun.com/document_detail/424587.html 装置工具Windows环境能够跳过装置,间接应用,但须要保障在命令行执行的目录下有已下载的迁徙工具。 Linux和macOS,须要将下载失去的文件放在 /usr/local/bin/ 目录下: mv codeup /usr/local/bin/ 测试工具在命令行中执行,执行胜利会显示工具的帮忙信息: codeup -h 在 macOS 可能会提醒 macOS 无奈关上工具,因为无奈验证开发者,请通过“零碎偏好设置”-“安全性与隐衷”-“通用”页面,抉择“依然容许”,来受权 macOS 应用工具 ...

May 17, 2022 · 2 min · jiezi

关于gitlab:Gitlab修复记

Gitlab忽然不能部署了大概三个月前的一天,师傅愁眉不展地跟我说:徒弟,不好了,我最近用咱们这gitlab打包公布的时候总是失败。 我说:原先不是好好的吗? 他说:是啊,原先的确很好用,也不晓得怎么了,最近这段时间就是不好用了,你说彻底不能用吧,也不是,偶然也能用,但总要重试那么好几次,有时候甚至十几次能力用。 我认真想了想,也没改啥啊,只是为了代码平安起见,把原先的giblab的IP地址从公网切换到了内网了,然而DNS我同时也改了,大家没有反映有什么问题啊。 我说:你这样的,你先把编译脚本改成ping gitlab.mydomain.com试试看能不能ping通。 ping了,不稳固,有时候通有时候不通。 这就奇了怪了,能ping到IP地址,阐明DNS没有问题,只是到这个IP地址不通。(到此我仍然执迷不悟,没有想到是路由的问题,前面再说) 被MTU误导的三个月师傅开始尝试用做减法的形式定位问题,很快有了重大发现。 只有咱们不在工作中减少docker:dind服务,网络就没有问题,那阐明问题就出在这个dind上。 dind的全称是docker in docker,因为自身咱们编译用的gitlab runner就是运行在docker容器外面的,当初还要在这个容器外面再执行docker命令进行打包,就必须依赖这个dind服务,dind服务自身又是一个小的容器,它外面再启动一个docker守护过程,这样里面这个容器能力运行docker命令。 习惯性地关上Google,开始面向Google解决问题。 很多网页都把问题的焦点指向了一个名叫MTU的神秘设置,说这个dind容器缺省的MTU是1500,在某种状况下会导致网络传输不稳固,跟咱们遇到的这个症状很类似。 最大传输单元 (Maximum Transmission Unit):最大传输单元是指材料链接层下面所能通过的最大数据包大小。最大传输单元这个参数通常与通信接口无关。 因特网协定容许IP分片,这样就能够将数据报包分成足够小的片段以通过那些最大传输单元小于该数据报原始大小的链路了。这一分片过程产生在IP层,它应用的是将分组发送到链路上的网络接口的最大传输单元的值。问题变为:如何设置这个MTU?咱们须要理解gitlab流水线工作中的服务外面的子容器如何设置,查了很多材料,有人山盟海誓地说只有在service里减少一个command参数mtu=1400就能够了,然而试验之后发现还是不行,咱们把命令行改为ifconfig,间接查阅网卡参数,发现还是1500,于是查阅docker:dind源码,发现dind会读取一个环境变量DOCKERD_ROOTLESS_ROOTLESSKIT_MTU。 于是问题又变成了:如何设置这个环境变量以让dind读到?尝试了各种办法,dind仍然读取不到。 静下心来,从新读Gitlab官网的文档,外面介绍了一个参数variables: Additional environment variables that are passed exclusively to the service.提供给服务应用的附加的环境变量仿佛这个货色就是咱们想要的,然而它有附加条件:此设置只能用于Gitlab 14.5版本及以上。而咱们的Gitlab版本还是13.12.3。 降级Gitlab惊魂记我找了一个宁静的周末,开始果决降级Gitlab,而后就差点陷入万劫不复之境。 我想,降级嘛,这还不是很简略的一件事件,而且对于咱们这样严格守规矩的人来说,降级只是减少一个版本号而已。 docker-compose.yml里本来就已有这一句了,这还是大概一年前初始装置gitlab时设置好的:image: 'gitlab/gitlab-ee:latest',那么这曾经是最高版了,于是间接docker-compose down而后docker-compose up -d应该就能够了吧? 不是的,它还是13.12.3。 查资料,才晓得应该先docker-compose pull下来能力失去最新版。 好吧,按步骤执行。 坏了,gitlab容器怎么不停地重启?连忙执行docker logs查看容器,发现外面赫然写着一行大字:大版本的降级,必须先升到14.0版本! 郁闷,咱们还是先看看gitlab降级说明书吧,这外面倒是提到了降级门路: 8.11.Z -> 8.12.0 -> 8.17.7 -> 9.5.10 -> 10.8.7 -> 11.11.8 -> 12.0.12 -> 12.1.17 -> 12.10.14 -> 13.0.14 -> 13.1.11 -> 13.8.8 -> 13.12.15 -> 14.0.12 -> 14.9.0 -> latest 14.Y.Z于是,间接将docker-compose.yml改成image: 'gitlab/gitlab-ee:14.0.12',竟然报告找不到包,再查阅gitlab标签,发现版本号前面竟然还要有-ee.0,你这后面曾经有ee了,为什么标签里还要再写一遍?(所谓ee就是企业版的简称Enterprise Edition,gitlab当初其实不辨别企业版和社区版,对立都要求大家应用企业版,只是你不付费的话,外面属于企业版的那局部性能就不能用而已) ...

May 8, 2022 · 1 min · jiezi

关于gitlab:GitLab使用Docker和DockerCompose部署个人私有代码仓库

概述GitLab 是一个用于仓库管理系统的开源我的项目,应用Git作为代码管理工具,并在此基础上搭建起来的Web服务。GitLab和GitHub一样是仓库管理系统,不一样的是GitLab能够本人搭建,本人或企业外部应用。 环境筹备Linux零碎dockerdocker-compose硬件要求CPU 4 核是举荐的最小核数,最多反对 500 个用户8核最多反对1000个用户RAM 4GB RAM是所需的最小内存大小,最多可反对 500 个用户8GB RAM 反对多达 1000 个用户装置GitLab Docker 镜像能够以多种形式运行:这里介绍后面2种 应用 Docker 引擎应用 Docker-compose应用 Docker swarm集群模式1.docker引擎装置gitlab拉取镜像,目前2022年5月,gitlab/gitlab-ce最新版docker镜像2.36GB(有点大能够提前下载)下载并启动 GitLab 容器,并公布拜访 SSH、HTTP 和 HTTPS 所需的端口。所有 GitLab 数据都将存储为 /mydata/ docker run --detach \--hostname gitlab.admin.com \--publish 1443:443 --publish 81:80 --publish 1022:22 \--name gitlab \--restart always \--volume /mydata/config:/etc/gitlab \--volume /mydata/logs:/var/log/gitlab \--volume /mydata/data:/var/opt/gitlab \gitlab/gitlab-ce:latest本地地位容器地位用法/mydata/data/var/opt/gitlab用于存储应用程序数据/mydata/logs/var/log/gitlab用于存储日志/mydata/config/etc/gitlab用于存储 GitLab 配置文件GitLab初始化启动过程须要很长时间,您能够通过logs形式跟踪此过程:docker logs -ft gitlab启动容器后,浏览器拜访gitlab.admin.com:81,这里如果域名没做hosts映射的话,请应用ip地址:192.168.200.11:81。这里GitLab 默认创立root用户和明码,root用户 明码查问: docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password输出root用户(管理员)和明码登录: 2.应用 Docker Compose 装置 GitLab---*(compose案例看这里!!)应用Docker Compose,您能够轻松配置、装置和降级 GitLab : ...

May 5, 2022 · 1 min · jiezi

关于gitlab:还在用-PostmanProtobuf-Apifox-GitLab-给你-API-工程化极致体验

API 工程化是什么API 工程化是通过一系列工具的组合,将 API 的编写、构建、公布、测试、更新、治理等流程,进行自动化、规范化。升高各端在 API 层面的沟通老本,升高治理和更新 API 的老本,进步各端的开发效率。 百瓶技术 API 工程化的成果后端开发人员编写好 Protobuf 文件后提交到 GitLab,在 GitLab 发动 MergeRequest。GitLab 会发邮件给 MergeRequest 合并人员,合并人员收到邮件揭示后,在 GitLab 上进行 CodeReview 后合并 MergeRequest。工作群会收到 API 构建音讯。开发人员在 Apifox 上点击立刻导入按钮,Apifox 上的接口文档便会更新。客户端人员在本人的我的项目中配置新接口地址,便会构建新的申请模型。 百瓶技术 API 工程化的流程编写和治理 Protobuf 接口文件Protobuf 根本的环境搭建和应用就不在这里赘述了。 如煎鱼老师总结的 真是头疼,Proto 代码到底放哪里?,可能每个公司对 proto 文件的治理办法是不一样的,本文采纳的是集中仓库的治理形式。如下图: Kratos 的毛剑老师也对 API 工程化 有过一次分享,对煎鱼老师的这篇文章进行了一些 解读,自己听过后受益匪浅。 本文的我的项目构造如下图: 本我的项目根底是一个 Go 的我的项目,在 api 包分为 app 客户端接口和 backstage 治理后盾的接口。从 app 下的 user 目录中能够看到,在 user 域中有个 v1 的包用来在做接口版本辨别,有一个 user_enums.proto 文件用来放 user 域共用的枚举。枚举文件如下: ...

April 11, 2022 · 6 min · jiezi

关于gitlab:如何在gitlab完成提交PR合并PR等操作后用钉钉自定义机器人进行消息推送

gitlab能够设置在实现某些操作(例如:提交pr,合并pr,提出issue...)能够对接钉钉机器人,从而将这些信息实时推送到钉钉群中。 尽管钉钉也对gitlab设置了官网的机器人然而可能并不能很好的满足咱们的需要,或者说gitlab所收回的申请并不合乎钉钉机器人所要求的格局。 这时候咱们就须要一个相似中转站的货色来满足咱们的要求——接管gitlab所收回的申请,将其转换为钉钉机器人能够失常接管的格局再依据这些数据结构一个新的申请来调用咱们的钉钉机器人从而实现咱们所须要的性能。 本文基于传送门编写。 流程图: 咱们如果间接运行该我的项目的话咱们会发现当咱们人为模仿gitlab发出请求时会收到以下响应: { "errcode":310000, "errmsg":"sign not match"}报错信息提醒:签名不匹配,在查阅钉钉官网文档后就会发现如果咱们采纳“加签”办法对机器人进行平安设置时如果没有对申请的url依据设置的serect进行解决就会产生这样的报错。钉钉机器人平安设置依据下面给出的钉钉官网文档中的内容咱们能够写出上面这个函数对url进行解决: public String encode(String secret) throws Exception { //获取工夫戳 Long timestamp = System.currentTimeMillis(); //把工夫戳和密钥拼接成字符串,两头退出一个换行符 String stringToSign = timestamp + "\n" + secret; //申明一个Mac对象,用来操作字符串 Mac mac = Mac.getInstance("HmacSHA256"); //初始化,设置Mac对象操作的字符串是UTF-8类型,加密形式是SHA256 mac.init(new SecretKeySpec(secret.getBytes("UTF-8"), "HmacSHA256")); //把字符串转化成字节模式 byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8")); //新建一个Base64编码对象 Base64.Encoder encoder = Base64.getEncoder(); //把下面的字符串进行Base64加密后再进行URL编码 String sign = URLEncoder.encode(new String(encoder.encodeToString(signData)),"UTF-8"); String result = "&timestamp=" + timestamp + "&sign=" + sign; return result; }之后咱们只须要再从C层获取到serect再传给这个函数应用即可。 ...

April 5, 2022 · 2 min · jiezi

关于gitlab:Gitlab静态页面Pages

动机我的项目不直观,无奈明确感知是哪个我的项目。 yaml配置# .gitlab-ci.ymlimage: node:latest # 针对前端,抉择适合的node镜像# 定义各阶段的执行程序stages: - build - deploy# 在脚本执行前设置npm源before_script: - npm config set registry https://registry.npm.taobao.org/ - npm config set cache-folder .cache/# 定义各阶段的具体执行命令# artifacts缓存在gitlab上的工件,用于将指定目录下的文件下载下来build: stage: build script: - npm i - npm run build artifacts: paths: - distpages: # 该工作命名必须是pages,是gitlab外部工作 stage: deploy approval: false script: - rm -rf public/* - mv dist/* public artifacts: paths: - public only: - bundler-rollupcache: # 定义缓存文件 paths: # 定义缓存文件的门路 - node_modules # 在下一次触发 gitlab-ci 时,缓存会被还原,就不必反复装置依赖。 - dist # 同时把 build 阶段生成的 dist 文件夹也缓存起来,在 deploy 阶段会用到。Pages流程介绍在push源代码到仓库的时候,Gitlab能够依据我的项目中的 .gitlab-ci.yml 文件来主动构建我的项目,而后部署到服务器中。 ...

March 26, 2022 · 1 min · jiezi

关于gitlab:gitlab安装后提示NETERRCERTINVALID证书无效的解决方法

gitlab装置后呈现了默认的证书有效的问题(这可能是装置过程中产生谬误导致的),这使得chrome无奈向指定的站点发动申请。 能够通过以下两种形式来解决。 长期解决方案如果你应用的是chrome浏览器,则能够在产生谬误的页面上任意点击左键,而后在键盘上输出thisisunsafe,此时便会关上网站。 永恒解决方案永恒的计划当然是更新证书,收费的证书的申请形式有很多,在此不论述。比方我是由阿里云申请的,在下载的列表中会有很多项,比方:iss\apache\tomcat\nginx等。接着咱们下载对应的私钥文件及数字签名证书即可。比方咱们下载apache对应的key文件以及crt文件。其中: key文件则是服务器用到的私钥,这个文件只能服务器用,不能扩散。crt文件在用户拜访时,同返回的内容一并返回给用户。有了这两个文件,就有了https加密传输的根底。能够这么简略来了解: key文件是服务器用来加密、解密的。crt文件是客户用来加密、解密的。咱们将上述两个文件下载后,对应替换gitlab的证书配置文件即可,地位是:/etc/gitlab/ssl,步骤如下: 备份原key、crt文件。将下载到的key、crt文件改为原key、crt文件.执行:sudo gitlab-ctl restart此时,再次拜访gitlab的站点便能够顺利关上了。 加密传输既然说到了,就不防对加密传输多讲几次。在https,加密解密分为两种: 第一种是加密和解密的密钥雷同的AES算法。该算法的长处是加密、解密速度快。毛病是加密与解密密钥雷同。咱们又把这种算法称为对称加密算法。第二种是加密和解密的密钥不雷同的RSA算法。简略来讲就是用123加密的内容须要用456来解密,而用456加密的内容则须要应用123来解密。该算法的长处是保密性强,毛病是加密解密速度慢。咱们把这种加密与解密的密钥不雷同的算法又称为非对称算法。而https则聪慧的联合了两种算法,其实前阵子那个风行的勒索病毒也是用的这个原理。 在数据加密解密过程中应用AES算法。在传入AES算法应用的密钥时应用RSA算法。在RSA算法中,咱们把保留的那个密钥称为私钥,该明码仅被签发者把握;而把那个发送给他人的密钥称为公钥,公钥能够被任意多的用户把握。而一个私钥能够对应有限多个公钥。 如果你对AES和RSA算法还不是太理解,请先学习这两种算法的根底。同时为了避免数据在中途被劫持,产生替换的危险,又引入了根证书签发机构。最初它整体的传输过程大略是这样的: 服务端向 CA 签发机构来申请证书。CA 将加密后的公钥以及未加密的私钥给服务端。客户端进行加密申请(以https:打头申请站点)服务端返回CA 签发的公钥客户端查看 CA 签发的公钥的有效性。客户端通过 CA 签发的公钥来获取服务器端的公钥客户端随机生一个AES密钥,并将AES密钥通过服务端公钥进行加密后传递给服务端服务端通过私钥对客户端传入的加密后的数据进行解密,而后失去AES密钥客户端与服务端应用独特的AES密钥进行高兴、疾速的通信。简略画个图,大略长这样:

March 21, 2022 · 1 min · jiezi

关于gitlab:爆测一周22年必看最细致代码托管工具测评

简介:网上代码托管选型的文章不少,不过大多内容有点长远,很多最新的平台没有包含进来,集体花了大略一个星期的工夫,把目前市面上比拟火的代码托管平台(开源托管平台:Github、Gitee;企业级托管平台:Gitlab、阿里云效Codeup、 腾讯Coding)做了一些比拟,比拟的维度包含速度、老本、产研工具链完整性、平安、统计报表等,心愿能够帮忙正在进行代码托管选型的技术同行做决策选型。 版权申明: 本文转载于公众号 [JavaGuide] 。原文链接:【https://mp.weixin.qq.com/s/A7...】 前言大家好,我是 Gudie。明天的内容次要是为了帮忙大家在进行代码托管工具选型时可能思考得更加全面。 大家平时也接触Github、Gitee 这些开源场景的代码托管平台,他们对集体开发者敌对,能够接触到很多优良的开源我的项目。但对团队代码治理,光这些还不够,还须要思考老本、速度、和其余研发工具买通等。最近在帮初创企业团队做代码托管的选型,因为公司业务属性,迭代比拟快,人力缓和,没有足够资金老本投入自建代码托管,而且最放心的是本人搞的话容灾安防做的不到位,导致企业代码数据出问题。 网上代码托管选型的文章不少,不过大多内容有点长远,很多最新的平台没有包含进来,集体花了大略一个星期的工夫,把目前市面上比拟火的代码托管平台(开源托管平台:Github、Gitee;企业级托管平台:Gitlab、阿里云效Codeup、 腾讯Coding)做了一些比拟,比拟的维度包含速度、老本、产研工具链完整性、平安、统计报表等,心愿能够帮忙正在进行代码托管选型的技术同行做决策选型。 在开展具体比拟前,先给出集体体验的论断供大家参考,不便大家对应到关注的内容: 应用场景在选型时,首先要明确你的应用场景,是想在开源社区里合作开发(通常是集体开发者),还是想要领有私密的代码仓库(通常是企业团队)。 开源合作场景如果在意开源场景,目前可抉择国外的 Github,或是国内的 Gitee。 Github GitHub 代码托管平台,蕴含了全世界很多优良的开源我的项目,能够从GitHub获取到很多很多优良的开源我的项目来进行学习,也能够将本人的我的项目上传上去与别人分享,当初已被微软收买。GitHub最开始并没有收费的公有仓库,被微软收买之后,个人用户才反对了创立公有仓库,尽管也能反对公有库,但他的次要场景还是集中在开源合作这件事上。 对于微软收买GitHub,不少用户的反馈比拟强烈。人们感觉开源必须得中立,有了微软背景就不独立了,GitHub跟开发者之间的间隔,可能会越走越远,后续如何倒退得持续察看。 Gitee Gitee 码云是国内的一个开源代码托管社区(哈哈这名字总让人感觉和阿里有关系,其实阿里云有本人的代码托管服务),因为GitHub属于国外的网站,因而国内用户拜访的时候,常常会很慢,影响体验,而 Gitee 不存在拜访速度慢的问题,而且中文化也比拟敌对,比拟适宜国内的开源爱好者们应用。不过因为百度鼎力投资了Gitee,不少开发者认为它也不这么中立了。 尽管比照 Github 还有较大差距,不过随着国家政策的激励,国内开源也正在疾速倒退的过程中。 企业/公有托管场景 如果你对代码私密性要求比拟高,通常在企业、团队公有代码治理场景下应用,那么国外的Gitlab,国内的阿里云云效Codeup、腾讯Coding 是更好的抉择。 Gitlab GitLab 利用 Ruby on Rails 开发,据说最早也用过 Github 进行托管,后独立倒退为出名的代码托管平台,同时反对 SaaS 版和自治理的私有化部署版本,因为其丰盛的代码合作管控能力,备受企业青眼,不过因为是国外的平台,云服务的访问速度还是存在慢和不稳固的问题。 对于企业,还有一个抉择是私有化部署托管服务。例如 Gitlab 就凋谢了根底版本供企业自行部署应用,目前在国内企业中的使用量还是比拟宽泛的。然而私有化部署是一把双刃剑,如果企业有足够的资本和人力,将托管服务部署在本人的服务器上感觉最平安,可是如果容灾和防护不到位,宕机数据失落、黑客拖走代码也不是没有产生过。所以,如果自信有足够的技术实力的企业,能够抉择私有化部署,反之,抉择大公司提供的 SaaS 托管云服务是更好的决策。 阿里云云效 Codeup提到阿里云的代码托管,一搜全是阿里云 Code,然而事实是这个平台早在 2020 年就曾经升级成阿里云 Codeup (https://codeup.aliyun.com/)了,同时带了个云效的品牌名,降级为提供笼罩项目管理、代码治理、测试治理、继续集成、制品治理、公布治理的 DevOps 一站式研发治理平台。 听起来挺简单,简略说就是你在开发过程中须要用到的各种工具都在一个平台上提供给你了,违心用哪些你本人选。这对于企业来说大大降低了治理难度,以前有一堆账号一堆工具,切来切去本人都凌乱了,数据也扩散在各个工具里,人也不好管,来个新人教半天讲不明确。当初一个平台一套账号就搞定了。 鉴于本文次要聊代码托管,就把云效外面托管产品 Codeup 拎进去看。它提供基于 Git 的代码托管服务,主打企业级托管,因而在管控和平安层面做了不少增强,因为在国内,访问速度相比 Gitlab、Github 快不少。 ...

January 26, 2022 · 1 min · jiezi

关于gitlab:ONES-与极狐GitLab战略合作强强联手推动-DevOps-发展

近日,ONES 与开放式一体化 DevOps 平台极狐(GitLab)公司签订策略单干协定,单方独特致力于打造 DevOps 麻利软件研发全生命周期治理解决方案。 极狐(GitLab)以「外围凋谢」为准则,面向中国市场,提供开箱即用的开放式一体化平安 DevOps 平台——极狐 GitLab。极狐 GitLab 提供当先的企业级 DevOps 生命周期平安防护性能,包含项目管理、代码平安、企业合规、破绽防护及规模化企业治理能力,减速企业软件翻新生命周期——降本增效、平安提速。 通过此次单干,ONES 提供的软件开发中的布局到追踪的业务管理能力与极狐(GitLab)提供的源代码到 CI/CD 工具链的工程治理能力得以深度集成。 依靠于单方的工具凋谢生态,相干的解决方案能够无缝整合单方的产品线。其中,ONES Pipeline 被用作整体计划中 DevOps 流水线集成和对接平台,ONES Project 被用作基于业务和工程追踪的整体治理平台,而 ONES Performance 则被用作掂量企业从治理到工程的总体效力的可视化平台,整体实现了多方位的单干体系,买通项目管理与工程治理,助力企业实际端到端的 DevOps 研发治理。 近日,ONES 与开放式一体化 DevOps 平台极狐(GitLab)公司签订策略单干协定,单方独特致力于打造 DevOps 麻利软件研发全生命周期治理解决方案。 极狐(GitLab)以「外围凋谢」为准则,面向中国市场,提供开箱即用的开放式一体化平安 DevOps 平台——极狐 GitLab。极狐 GitLab 提供当先的企业级 DevOps 生命周期平安防护性能,包含项目管理、代码平安、企业合规、破绽防护及规模化企业治理能力,减速企业软件翻新生命周期——降本增效、平安提速。 通过此次单干,ONES 提供的软件开发中的布局到追踪的业务管理能力与极狐(GitLab)提供的源代码到 CI/CD 工具链的工程治理能力得以深度集成。 依靠于单方的工具凋谢生态,相干的解决方案能够无缝整合单方的产品线。其中,ONES Pipeline 被用作整体计划中 DevOps 流水线集成和对接平台,ONES Project 被用作基于业务和工程追踪的整体治理平台,而 ONES Performance 则被用作掂量企业从治理到工程的总体效力的可视化平台,整体实现了多方位的单干体系,买通项目管理与工程治理,助力企业实际端到端的 DevOps 研发治理。 ONES 关联极狐 GitLab 代码仓 需要/工作关联代码,及时跟踪研发状态 从项目管理到工程治理,可视化度量研发效力 ...

December 3, 2021 · 1 min · jiezi

关于gitlab:gitlabgithub-sshkeygen-密钥添加方法

一、生成密钥命令行执行 ssh-keygen二、查看密钥把id_rsa.pub的内容复制到keys增加页面window 默认地址: "C:\Users\Administrator.ssh\id_rsa.pub”Mac 默认地址(能够通过open命令间接关上): /Users/xz/.ssh/id_rsa.pub 三、增加密钥gitlab,github 密钥增加页面地址: https://gitlab.xxxxxx.cn/prof...https://github.com/settings/keys

November 30, 2021 · 1 min · jiezi

关于gitlab:GitLab和Rainbond整合实现一体化开发环境

GitLab善于源代码治理,Rainbond善于利用自动化治理,整合Gitlab和Rainbond就能各取所长,本文具体讲述如何整合Gitlab和Rainbond,并通过整合实现一体化开发环境。 一.通过Rainbond一键装置 GitlabRainbond作为利用运行环境,Gitlab能够运行在Rainbond之上,为了便于Gitlab装置,咱们制作了Gitlab安装包放到了Rainbond的利用市场,实现Gitlab的一键装置。 装置Rainbond,装置步骤。从利用市场搜寻“Gitlab”,点击装置,一键实现Gitlab所有装置和配置工作,包含数据装置和初始化。装置实现,通过Rainbond治理和运维Gitlab。二.Rainbond源码构建对接Gitlab Oauth,实现一键代码部署应用过Rainbond的小伙伴肯定晓得,在Rainbond上创立组件有三种形式:源代码创立、镜像创立、利用市场创立。 源码构建形式通过配置源码地址实现代码构建,Gitlab尽管能够提供源码地址,但构建新利用须要拷贝源码地址及设置用户名明码,这个过程很麻烦,也容易犯错。 为了与 GitLab 配合有更好的体验,Rainbond做了产品化的反对,通过OAuth2.0协定与GitLab进行对接。 1.配置GitLab Applications 进入 User Settings → Applications 选项名填写内容阐明NameRainbond填写自定义的 Application 名称Redirect URIhttps://IP:7070/console/oauth...回跳门路,用于接管第三方平台返回的凭证Scopesapi、read_user、read_repositoryGitLab的权限设置,须要开启 api、read_user、read_repository创立后请保留 Application ID 和 Secret,前面会用到。 应用私有化部署 Rainbond 时,需配置 GItLab 容许向本地网络发送 Webhook 申请 进入 Admin area → settings → NetWork → Outbound requests 勾选 Allow requests to the local network from hooks and services 选项即可 2.配置Rainbond OAuth 进入 Rainbond 首页企业视图 → 设置 → Oauth 第三方服务集成 → 开启并查看配置 → 增加 选项名填写内容阐明OAuth类型gitlab认证的 Oauth 类型OAuth名称自定义(GitLab-Demo)填写自定义的 Oauth 服务名称服务地址http://xx.gitlab.comGitLab 服务拜访地址客户端ID上一步获取的Application IDGitLab 生成的 Application ID客户端密钥上一步获取的Application SecretGitLab 生成的 Application Secret平台拜访域名应用默认填写内容用于OAuth认证完回跳时的拜访地址3.Rainbond OAuth认证 ...

November 8, 2021 · 1 min · jiezi

关于gitlab:离线安装GItLab

前置要求找到能够联网的机器下载依赖组件: yum -y install policycoreutils-python --downloadonly --downloaddir /home/gitlab/#打包下载好的依赖组件,上传到须要装置的服务器中,而后执行如下命令装置依赖组件rpm -Uvh *.rpm --nodeps --force下载GitLab离线安装包:https://packages.gitlab.com/g... 1.开始装置rpm -ivh gitlab-ce-13.8.3-ce.0.el7.x86_64.rpm2.编辑GitLab配置文件vi /etc/gitlab/gitlab.rb批改如下内容,指定IP和端口,端口本人随便写一个然而不要和服务器中的其余服务抵触即可。 external_url 'http://IP:PORT'3.重置配置文件并启动GitLabgitlab-ctl reconfiguregitlab-ctl restart4.验证拜访GitLab服务:http://IP:PORT

November 3, 2021 · 1 min · jiezi

关于gitlab:记一次gitlab代码仓清空还原复盘

前言故事产生在一个夜黑风高的早晨,一通看着不怎么寻常的电话过去,说是业务赶着上线,但他们的API包上传不了到公司的maven私库,领导叫我撑持下看怎么解决。通过多年不怎么靠谱的直觉,应该是磁盘满了。于是利索地敲下 df -lh果然磁盘满了,其中/var/lib/docker/overlay 这个玩意儿基本上把磁盘占满。接着输出 docker system df查看docker所占的磁盘大小。在思考是申请流程单叫运维扩容下磁盘,还是手动清理下磁盘的时候,电话再次过去,说找到问题没,能不能连忙解决。接完电话后,情绪莫名焦躁,于是敲下了如下命令 docker system prune这个命令能够用于清理磁盘,删除敞开的容器、无用的数据卷和网络,以及dangling镜像(即无tag的镜像)。接着一通电话又过去,说gitlab拜访不了,我过后给的答案是磁盘满了,gitlab应该是进行了,我稍等重启下gitlab容器,就在我打算重启gitlab时,敲下命令 docker ps -a想捞一下gitlab容器,而后完犊子了,docker ps -a 看不到任何容器。因为之前gitlab的容器是前架构师装置,我压根就不分明他过后是以什么模式装置,于是就把这个问题反馈给领导,通过领导拿到过后启动gitlab的docker-compose.yml.样例如下 version: '2'services: redis: restart: always container_name: gitlab_redis image: sameersbn/redis:latest command: - --loglevel warning volumes: - /usr/local/docker/gitlab/redis:/var/lib/redis:Z network_mode: bridge postgresql: restart: always container_name: gitlab_postgresql image: sameersbn/postgresql:9.6-2 volumes: - /usr/local/docker/gitlab/postgresql:/var/lib/postgresql:Z environment: - DB_USER=gitlab - DB_PASS=password - DB_NAME=gitlabhq_production - DB_EXTENSION=pg_trgm network_mode: bridge gitlab: restart: always container_name: gitlab image: sameersbn/gitlab:10.4.2-1 links: - redis - postgresql network_mode: bridge ports: - "10080:80" - "10022:22" volumes: - /usr/local/docker/gitlab/gitlab:/home/git/data:Z environment: - DEBUG=false - DB_ADAPTER=postgresql - DB_HOST=postgresql - DB_PORT=5432 - DB_USER=gitlab - DB_PASS=password - DB_NAME=gitlabhq_production - REDIS_HOST=redis - REDIS_PORT=6379 - TZ=Asia/Shanghai - GITLAB_TIMEZONE=Beijing - GITLAB_HTTPS=false - SSL_SELF_SIGNED=false - GITLAB_HOST=gitlab.common.com - GITLAB_PORT= - GITLAB_SSH_PORT=10022 - GITLAB_RELATIVE_URL_ROOT=看了一下文件,我看到有做文件目录挂载,而后我就去挂载的文件目录下,看文件有没有在,还好文件都在,于是我就释怀敲下 ...

November 2, 2021 · 1 min · jiezi

关于gitlab:第三方Gitlab库资源如何一键导入云效Codeup

云效Codeup 提供代码库一键导入能力,帮忙你不便的导入托管在三方平台上的代码资源,云效代码治理Codeup是阿里云出品的一款企业级代码治理平台,提供代码托管、代码评审、代码扫描、品质检测等性能,全方位爱护企业代码资产,帮忙企业实现平安、稳固、高效的研发治理。 第三方Gitlab库资源,如何一键导入云效Codeup。点击「导入代码库」抉择第三方代码托管平台,针对不同的平台个性,容许通过 Access Token 或者 Oauth 进行账号受权。 自建 Gitlab ① Host URL:自建Gitlab 首页的地址,非代码库残缺 URL; 例如 https://gitlab.alibaba-inc.com ②:Access Token:生成形式请参看 Access Token 增加阐明; 留神 代码导入的 Access Token 至多须要具备以下权限:apiread_user Gitlab.com Access Token:生成形式请参看 Access Token 增加阐明; 留神 代码导入的 Access Token 至多须要具备以下权限:apiread_user 自建Gitlab导入时告知网络不通怎么解决?Q:在进行三方代码库导入时,导入失败且提醒“无奈连通,请确认代码库公网可拜访”应该怎么解决?A:有时候,运维人员在配置自建Gitlab时,限度了应用内网地址,敞开了公网拉取的入口,此时每个仓库的下载地址将显示为内网地址,如: 以下示例没有买域名,因而应用frp的端口来代理本地gitlab的web端口。 1.更改 gitlab.rb 的 external_url 为公网地址 grep ^external_url /mnt/gitlab/etc/gitlab.rb external_url 'http://47.103.xx.x' 2.更改如下host和port参数 $ cat /mnt/gitlab/data/gitlab-rails/etc/gitlab.yml ## GitLab settings gitlab: ## Web server settings (note: host is the FQDN, do not include http://) host: 47.103.xx.x #公网地址 port: 20113 #这个是frp的映射地址 https: false3.在frpc.ini的配置文件中,把地址映射进来 ...

October 8, 2021 · 1 min · jiezi

关于gitlab:GitLab-Rainbond-打造Devops流程

GitLab + Rainbond 打造Devops流程流程预设我的项目有两个分支,dev和masterdev分支对应dev环境master分支对应test环境和prod环境开发在dev中编写代码,提交git时触发dev环境构建开发在dev自测实现,将dev分支代码合并master分支并提交gitmaster提交操作触发test环境构建,告诉测试人员进行测试,并附加构建地址(gitlab CICD)测试不通过则开发持续开发,反复上述流程测试通过则登录gitlab CICD手动点击,执行“部署”步骤目录一、创立rainbond三个环境我的项目,并开启构建源的自定义API二、为gitlab我的项目设置runner三、编写gitlab cicd配置附1 gitlab-runner环境一、开启rainbond我的项目构建源的自定义APIrainbond中有三个我的项目环境 dev 开发环境对应dev分支test 测试环境对应master分支prod 正式环境对应master分支开启WebHook步骤关上rainbond进入我的项目点击“构建源”页签“主动构建设置”点击“自定义API”页签点击“关上主动构建”复制“API”和“秘钥”二、为gitlab我的项目设置runner先依据 附1 中的步骤配置好,gitlab-runner的docker容器 进入gitlab我的项目Settings > CD/CD > Runners "Expand"能够看到左侧“Specific runners”中就有设置runner的配置信息页面左下角有“Set up a specific runner manually”(注册信息,URL及token)进入docker的gitlab-runner容器# 注册runner$ docker exec -it gitlab-runner gitlab-runner register# 输出我的项目页面上的URL,即git地址Enter the GitLab instance URL (for example, https://gitlab.com/):$ http://git.abc.com/# 输出秘钥,我的项目设置页面上Enter the registration token:$ testtestestest-testest# 输出形容,这里最好填写项目名称(所有runner的配置会房子同一个配置文件中,这个形容能够不便辨别)Enter a description for the runner:$ rainbond_gitlab_python# 输出标签(重要,CICD的配置中须要应用)Enter tags for the runner (comma-separated):$ Auto-Group# 输出执行器类型,个别选shellEnter an executor: custom, parallels, shell, ssh, docker, docker-ssh, virtualbox, docker+machine, docker-ssh+machine, kubernetes:$ shell# #####配置实现###### 查看刚刚的配置$ docker exec -it gitlab-runner cat /etc/gitlab-runner/config.tomlconcurrent = 1check_interval = 0[session_server] session_timeout = 1800[[runners]] name = "rainbond_gitlab_python" url = "http://git.abc.com/" token = "testtestestest-testest" executor = "shell" [runners.custom_build_dir] [runners.cache] [runners.cache.s3] [runners.cache.gcs] [runners.cache.azure]刷新gitlab页面后,即可看到runner中多减少了“Available specific runners”下方是咱们刚刚创立的runner三、编写gitlab cicd配置在我的项目的根目录中增加CICD配置文件,命名为:".gitlab-ci.yml"配置如下default: tags: - Auto-Groupvariables: # 我的项目名 PROJECT_NAME: "rainbond_gitlab_python" FAILURE_MESSAGE: "[$PROJECT_NAME]单元测试/构建失败,请查看:$CI_PROJECT_URL/-/pipelines/$CI_PIPELINE_ID/failures" # dev环境构建源秘钥及地址 DEV_API_KEY: "" DEV_API_URL: "" # test环境构建源秘钥及地址 TEST_API_KEY: "" TEST_API_URL: "" # prod环境构建源秘钥及地址 PROD_API_KEY: "" PROD_API_URL: ""# 失败时告诉,所有分支job-failure: stage: test when: on_failure script: - echo $FAILURE_MESSAGE# ------------- dev分支配置 ------------- #dev-build: stage: build only: - dev # 只针对dev分支 script: - pip3 install --no-cache-dir -r requirements.txt - pytestdev-deploy: stage: deploy only: - dev script: - curl -X POST -H "Content-Type:application/json" -d '{"secret_key":"'$DEV_API_KEY'"}' "$DEV_API_URL" after_script: - echo "触发构建后,减少即时通讯工具的WebHook,告诉相干开发人员进行自测"# ------------- master分支配置 ------------- #master-build: stage: build only: - master script: - pip3 install --no-cache-dir -r requirements.txt - pytestmaster-unitest: stage: deploy only: - master script: - curl -X POST -H "Content-Type:application/json" -d '{"secret_key":"'$TEST_API_KEY'"}' "$TEST_API_URL" after_script: - echo "触发构建后,减少即时通讯工具的WebHook,告诉相干测试人员进行测试"master-deploy: stage: deploy only: - master when: manual script: - curl -X POST -H "Content-Type:application/json" -d '{"secret_key":"'$PROD_API_KEY'"}' "$PROD_API_URL" after_script: - echo "触发构建后,减少即时通讯工具的WebHook,告诉公布正式环境"附1: gitlab-runner环境官网文档 :https://docs.gitlab.com/runne...因为gitlab-runner环境只须要部署一次,所以放在附录首先要装置docker装置步骤docker拉取gitlab-runner镜像创立共享卷运行容器设置apline linux软件库镜像装置curl、python、pip设置环境变量(很重要)查看gitlab-runner配置1. docker拉取gitlab-runner镜像 ...

September 30, 2021 · 2 min · jiezi

关于gitlab:使用-Jenkins-创建微服务应用的持续集成

体验简介本场景领导您联合Jenkins把微服务利用部署到SAE平台:场景资源 背景常识本场景次要波及以下云产品和服务:Serverless 利用引擎 SAE Serverless 利用引擎 SAE(Serverless App Engine)是面向利用的 Serverless PaaS 平台,可能帮忙 PaaS 层用户免运维 IaaS、按需应用、按量计费,做到低门槛微服务利用上云。绝对于其余 Serverless 产品,它形象了利用的概念,并提供了一整套微服务解决方案,反对 Spring Cloud、Dubbo、HSF 等支流的微服务开发框架,实现了 Serverless 架构和微服务架构的完满联合。 创立资源在页面左侧,单击云产品资源下拉菜单,查看本次试验资源。单击收费开明创立所需资源。阐明: 资源创立过程须要1~3分钟。实现试验资源的创立后,您能够在云产品资源列表查看已创立的资源信息,例如:IP地址、用户名和明码等。 配置我的项目1.批改Maven我的项目配置,增加toolkit-maven-plugin及部署信息,具体操作,请参见通过Maven插件自动化部署利用。 配置Jenkins1.在Jenkins控制台的菜单栏中抉择Manage Jenkins > Manage Plugins,装置Git和GitLab插件。 2.在Jenkins控制台的菜单栏中抉择Manage Jenkins > Global Tool Configuration,设置Maven版本名称并配置门路,单击保留。 3.在Jenkins服务器上生成SSH RSA密钥对,并将公钥导入GitLab,实现Jenkins拉取GitLab代码时的主动认证。 3.1在Jenkins服务器生成SSH RSA密钥对。具体信息,GitLab文档3.2进入GitLab首页,在菜单栏抉择Settings > Deploy Keys ,并单击New Deploy Key ,导入在Jenkins服务器上创立的SSH RSA公钥。 创立Jenkins工作1.在Jenkins首页左侧导航栏中单击新建Item,在创立工作界面输出工作名称,并抉择Freestyle project,单击确定,配置工作信息。 2.单击源码治理,在源码治理页签中抉择Git,并设置相干参数。 Repository URL:您的我的项目的Git协定地址。Credentials:平安凭证,抉择无即可。3.单击构建触发器,在构建触发器页签选中GitHub hook trigger for GITScm polling。 4.单击构建环境,在构建环境页签选中Add timestamps to the Console Output,为控制台输入的信息增加工夫戳。 5.单击构建,在构建页签单击减少构建步骤,在下拉列表中抉择Invoke top-level Maven targets。 ...

August 30, 2021 · 1 min · jiezi

关于gitlab:将本地文件上传到gitlab

登录gitlab新建我的项目 填写项目名称、抉择我的项目拜访权限,配置好后Create project即可 须要在本地下载装置git 网址:https://git-scm.com/文件内鼠标右键抉择 Git Base Here装置好后配置用户信息,配置集体的用户名称和电子邮件地址:git config --global user.name "runoob"git config --global user.email test@runoob.com查看配置语句:git config --list拷贝一份近程仓库,也就是下载一个我的项目git clone http://gitlab.aa.com/aa/aa.git(我的项目地址)git add 命令可将该文件增加到暂存区git add filegit add . 增加当前目录下的所有文件到暂存区提交暂存区到本地仓库git commit -m [备注信息]将本地的 master 分支推送到 origin 主机的 master 分支git push origin mastergit add . 时正告:warning: adding embedded git repository: susu把文件从暂存区域移除:git rm --cached susu

August 4, 2021 · 1 min · jiezi

关于gitlab:gitlab备份

备份脚本: #!/bin/bashBackupDir=/data/docker/volumes/data_gitlab_data/_data/backupsBackupNum=(ls $BackupDir | wc -l) #backupdocker exec -i gitlab gitlab-rake gitlab:backup:create #clear backup if[ $BackupNum -gt 3 ];thenrm -f `find $BackupDir -name "gitlab_backup.tar" -mtime +3`fi迁徙和备份docker save -o gitlab.tar gitlab/gitlab-ce:latest导入镜像docker load -i gitlab.tar批改备份包的权限chmod 777 1578900099_2020_01_13_12.6.0-ee_gitlab_backup.tar进入容器,执行命令,进行相干服务:gitlab-ctl stop unicorn #进行相干数据连贯服务gitlab-ctl stop sidekiq执行复原指令:依据提醒输出两次yesgitlab-rake gitlab:backup:restore BACKUP=1578900099_2020_01_13_12.6.0重新启动gitlab:gitlab-ctl startGitlab迁徙和复原必须要留神一点,新的gitlab服务器版本号必须和之前的gitlab版本号统一

August 2, 2021 · 1 min · jiezi

关于gitlab:关于gitlab上传文件大小限制的修改

背景:线上kubernetes集群跑了gitlab的利用(有好几个版本,最老的一个是8.5.8太老了不行降级了,还有一个10的版本,还一个13.7的版本?)。没有开启ssh的形式就应用了http的形式。程序上传大文件常常就上传不了(也都是应用办法的问题,一个maven我的项目外面有5个我的项目吧?打的每个jar包都有70-90m。跟他们聊过我能够在服务器下面maven打包。他们毕竟喜爱集体打包。当然了要害还是这maven打包打的太大了。没有进行进一步的优化)。上传大文件常常就失败了。看了一下还是批改一下gitlab的配置吧! 过程:1.web批改登陆root用户。点击右边面板设置(英文就是Settings)批改最大文件大小(我是间接设置了一个250m). 而后点击最上面的保留按钮。当然了你的页面也可能是如下的界面:这是13.7的gitlab吧我感觉这三个值都能够设置一下! 2. gitlab容器中的批改[root@k8s-master-01 data]# kubectl get pods -n gitlabNAME READY STATUS RESTARTS AGEgitlab-77d7878db-zknvb 1/1 Running 0 44hpostgresql-6c4b6594d7-nxm4v 1/1 Running 0 44hredis-7469c66666-bhmh9 1/1 Running 0 44h[root@k8s-master-01 data]# kubectl exec -it gitlab-77d7878db-zknvb bash -n gitlabroot@gitlab-77d7878db-zknvb:/# cd /etc/gitlab/root@gitlab-77d7878db-zknvb:/# vi gitlab.rb 关上这几个的限度,当然了client_max_body_size还是看集体需要了,我就搞了一个250m。而后保留 root@gitlab-77d7878db-zknvb:/# gitlab-ctl reconfigureroot@gitlab-77d7878db-zknvb:/# gitlab-ctl restart退出容器进行验证上传大文件(还是要小于你的nginx配置的client_max_body_size和web中的设置两个参数的最小值吧?)

July 30, 2021 · 1 min · jiezi

关于gitlab:通过拉取-gitlab代码报错的解决方案

错误信息如下xxx@MacBook-Pro xxx-code % git cl git@gitlab.xxxxxx-inc.com:xxx_fe_organization/xxx-erp-data.gitCloning into 'xxx-erp-data'...@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ WARNING: POSSIBLE DNS SPOOFING DETECTED! @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@The ECDSA host key for gitlab.xxxxxx-inc.com has changed,and the key for the corresponding IP address 8.xxx.xxx.xxxis unknown. This could either mean thatDNS SPOOFING is happening or the IP address for the hostand its host key have changed at the same time.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!Someone could be eavesdropping on you right now (man-in-the-middle attack)!It is also possible that a host key has just been changed.The fingerprint for the ECDSA key sent by the remote host isSHA256:XX4mhCdJN2p5x4naUlqf8sVAW5i7ffekWFu83QM3bN0.Please contact your system administrator.Add correct host key in /Users/xx/.ssh/known_hosts to get rid of this message.Offending ECDSA key in /Users/xx/.ssh/known_hosts:7ECDSA host key for gitlab.xxxxxx-inc.com has changed and you have requested strict checking.Host key verification failed.fatal: Could not read from remote repository.Please make sure you have the correct access rightsand the repository exists.xxx@MacBook-Pro xxx-code % 重现步骤:登陆公司的VPN (代码在公司内网)从新生成sshkey: 执行命令 ssh-keygengitlab上增加新的sshkey: 执行 open ~/.ssh/id_rsa.pub 获取git cl xxxx 拉代码 // 报错了依据报错信息尝试的解决办法:一、WARNING: POSSIBLE DNS SPOOFING DETECTED!dns应用的google 8.8.8.8, 8.8.4.4,排除DNS问题 ...

July 26, 2021 · 1 min · jiezi

关于gitlab:mac配置Gitlab

一、应用docker装置Gitlab1、装置docker https://download.docker.com/m... 2、装置后设置加速器器:{ "builder": { "gc": { "defaultKeepStorage": "20GB", "enabled": true}}, "experimental": false, "features": { "buildkit": true}, "registry-mirrors": [ "https://pt3p0cvc.mirror.aliyuncs.com"]} 3、拉取gitlab(测试sso指定对应版本)docker pull gitlab/gitlab-ee:10.8.4-ee.0 4、在docker内启动gitlab项⽬sudo docker run --detach \ --hostname localhost \--publish 443:443 --publish 80:80 --publish 22:22 \--name gitlab \--restart always \--volume /Users/yufu/gitlab/config:/etc/gitlab \--volume /Users/yufu/gitlab/logs:/var/log/gitlab \--volume /Users/yufu/gitlab/data:/var/opt/gitlab \gitlab/gitlab-ee:10.8.4-ee.0注:须要将容器目录映射到本机目录,":"前为本机目录。":"后为docker映射目录,零碎会主动创立也能够本人创立,并且将目录绑定到docker容器中,实现资源文件共享。5、装置胜利后,域名输出:localhost,能够进行拜访。

July 22, 2021 · 1 min · jiezi

关于gitlab:填坑记GitLab-服务器迁移和升级

因为之前采纳的是 Docker 部署的 GitLab,所以在降级时,遇见了一些问题,在此记录一下。 1. 旧服务器上 GitLabDocker Compose: version: '2'services: gitlab: image: 'twang2218/gitlab-ce-zh' restart: unless-stopped hostname: 'git.xxx.com' environment: TZ: 'Asia/Shanghai' GITLAB_OMNIBUS_CONFIG: | external_url 'http://git.xxx.com' gitlab_rails['time_zone'] = 'Asia/Shanghai' ports: - '80:80' - '443:443' volumes: - /home/gitlab/config:/etc/gitlab - /home/gitlab/data:/var/opt/gitlab - /home/gitlab/log:/var/log/gitlab2. 降级遇见的坑之前旧版的版本号是 11.0.5 ,当初官网的最新版本是 11.7.0-ce.0 , 因为之前采纳的是汉化后的GitLab的批改版本,官网并没有 11.0.5 这个版本号能够下载。然而间接应用新版本的话,会呈现各种问题,比方权限问题,版本问题等。 不能将 gitlab 文件夹间接打包进行转移,会遇见各种权限问题。不能间接将 汉化修改版 间接改成 官网新版,会遇见版本不统一问题。3. 正确服务器迁徙的姿态在原来的服务器上运行如下命令: # 进入到容器中docker exec -it home_gitlab_1 bash# 在容器中执行# 进行数据连贯服务> gitlab-ctl stop unicorn> gitlab-ctl stop sidekiq# 备份数据> gitlab-rake gitlab:backup:create执行以上命令后,会在宿主机上的 /home/gitlab/data/backups 产生一个 tar 文件,例如: 1548223311_2019_01_23_11.0.5_gitlab_backup.tar ...

July 16, 2021 · 3 min · jiezi

关于gitlab:GitLabissue使用

创立issue ,填写问题形容,打上标签,(bug 、feature) 在提交代码 的时候,能够关联 issue git commit -m "批改代码 #1"一个commit 能够关联多个 issue git commit -m "批改 #3 #4 #5 #6 #7"

July 16, 2021 · 1 min · jiezi

关于gitlab:使用-Gitlab-快速搭建CICD

另一种系列- 另一种 CI/CD 形式过往最常应用的是 jenkins 来进行 CICD, 从最开始接触 CICD, 经验过大部分我的项目都是应用的 jenkins。 最近尝试一种新的 CICD 形式————应用 Gitlab CICD Gitlab CICDGitlab Runner在应用 jenkins时, 咱们是在一台机器上装置 jenkins,而后这台机器帮咱们干一些打包的脏活杂活。在 Gitlab CICD 这个上下文外面, 咱们应用 runner 做这部分的工作。runner相对值得独自花大篇幅去聊它, 但作为入门,咱们须要晓得如何配置并应用根本就能够了。 Gitlab Runner 配置runner 实质还是一个机器上的服务, 首先你须要有一台机器, 能够是不同操作系统,甚至是虚拟机都 ok。 装置的具体过程能够参考文档, 我是找的一台 linux 机器,大抵过程如下其中 token 相干信息,能够在你的我的项目信息中找到。 配置实现后,刷新页面,你就能够看到对应 runner 了 Gitlab Runner 应用在 应用 jenkins时, 咱们组织整个流水线是利用 jenkinsfile, 在 gitlab CICD 中有一个相似的文件,叫做.gitlab-ci.yml。 gitlab 实际上有提供一些共享的 runner, 你也能够用本人指定的 private 的runner, 指定的规定能够基于 tag。我的 yml 文件大略如下 stages: - maven-test - maven-build - docker-buildbefore_script: - export IMAGE_TAG=$(echo -en $CI_COMMIT_REF_NAME | tr -c '[:alnum:]_.-' '-')maven-test: image: maven:3.3-jdk-8 stage: maven-test script: "mvn clean pmd:check" tags: - aliyunmaven-build: image: maven:3.3-jdk-8 stage: maven-build script: ' mvn package -B' artifacts: paths: - target/*.jar tags: - aliyun only: - beta - release - tagsdocker-build: stage: docker-build script: - docker build -t registry.cn-shanghai.aliyuncs.com/yycao/demo:${IMAGE_TAG} . - docker login -u $CI_BUILD_USER -p $CI_BUILD_TOKEN registry.cn-shanghai.aliyuncs.com - docker push registry.cn-shanghai.aliyuncs.com/yycao/demo:${IMAGE_TAG} only: - beta - release - tags其中有些波及我的项目平安的字段,也能够在cicd 内设置 ...

June 29, 2021 · 1 min · jiezi

关于gitlab:史上最全Gitlab部署

一、前言1、本文次要内容GitLab社区版部署GitLab配置禁用创立组权限GitLab配置邮件(SMTP)Gitlab备份配置GitLab常用命令阐明 2、GitLab介绍GitLab一个开源的git仓库治理平台,不便团队合作开发、治理。在GitLab上能够实现残缺的CI(继续集成)、CD(继续公布)流程。而且还提供了收费应用的Plan,以及收费的能够独立部署的社区版本(https://gitlab.com/gitlab-org/gitlab-ce )。官网:https://about.gitlab.com/ 二、筹备工作1、安准根底依赖(这一步根本都能够跳过,很多服务器默认装置)#装置技术依赖sudo yum install -y curl policycoreutils-python openssh-server#启动ssh服务&设置为开机启动sudo systemctl enable sshdsudo systemctl start sshd2、装置PostfixPostfix是一个邮件服务器,GitLab发送邮件须要用到 #装置postfixsudo yum install -y postfix#启动postfix并设置为开机启动sudo systemctl enable postfixsudo systemctl start postfix3、凋谢ssh以及http服务依据理论状况执行,公司外部服务器初始时,防火墙就没关上 #凋谢ssh、http服务sudo firewall-cmd --add-service=ssh --permanentsudo firewall-cmd --add-service=http --permanent#重载防火墙规定sudo firewall-cmd --reload三、部署过程本次咱们部署的是社区版:gitlab-ce,如果要部署商业版能够把关键字替换为:gitlab-ee 1、Yum装置GitLab增加GitLab社区版Package curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash 装置GitLab社区版 sudo yum install -y gitlab-ce 装置胜利后会看到gitlab-ce打印了以下图形 异样解决:呈现“policycoreutils-python is needed by问题”,应该是在装置gitlab时,gitlab的版本是centos7的,如果你确定你的centos版本是centos7 解决办法: sudo yum installpolicycoreutils-python如果这个办法有效,你的centos版本肯定不是centos7如果你的centos版本是centos8.那么换一个gitlab版本,也就是从新下载一个,这里是最新地址 https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el8/下载命令: wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el8/gitlab-ce-12.10.1-ce.0.el8.x86_64.rpm装置: sudo rpm -i gitlab-ce-12.10.1-ce.0.el8.x86_64.rpm若呈现谬误“policycoreutils-python-utils is needed by gitlab-ce-12.10.1-ce.0.el8.x86_64”解决办法: sudo yum install policycoreutils-python-utils而后重新安装。 ...

June 22, 2021 · 1 min · jiezi

关于gitlab:GitlabJenkinsSonarQube计算增量覆盖率-IDCF

当要求品质内建、测试左移、继续集成、DevOps,代码的增量覆盖率简直是必定会被提出来的话题。 这个计划明确了"谁的代码谁负责"的准则,和当年“小岗村包产到户”一样,开发人员只须要为本人的提交/合并申请来提供代码覆盖率数据,而不再须要为整个团队的代码库和历史旧账掉头发了。团队负责人也乐于施行这样的“最佳实际”,建立一个带电的“品质门禁”,没有达标的,一律回绝签入或者合并。 然而始终以来,对于增量覆盖率的计算始终是一个守口如瓶的技术。谈起这个话题,大厂的同学们会悠悠地说一句,咱们是自研的工具。而对于这几个工具的集成,网络上有有数篇教程。但简直所有的教程,无论宣称是做PR/MR触发的流水线,还是做Jacoco覆盖率,都只是介绍了如何将这几个工具进行集成,也就是文章的起点停在了SonarQube上能产生覆盖率报告甚至只是Jenkins能触发构建上。 本文将介绍如何应用上述工具实现残缺的MR/Push闭环,并真正实现增量覆盖率的计算。 首先假如您曾经可能把握GitLab+Jenkins+Jacoco+SonarQube的流水线的搭建,可能实现MR/Push触发Jenkins构建和Sonar扫描。 也就是以下的一个过程: 1)Gitlab通过push event或者merge request event来触发webhook (webhook url指向某个Jenkins工作,也波及到token配置)。 2)该webhook将调用Jenkins 的指定流水线工作,能够是传统的freeStyle或者是pipeline的,也可能是团队自研的DevOps 平台的。 3)流水线工作触发单元测试、集成测试等事后定义好的测试,并生成覆盖率测试报告(maven/gradle +jacoco)。很多自研的计划其实是在这个阶段通过git diff+jacoco报告解析来实现增量剖析。 4)流水线工作触发Sonar Scanner扫描,并由scanner将扫描后果发送给SonarQube进行剖析并产生报告。 以上是参考网络上大部分教程能够实现的内容。在理论的我的项目中,可能还须要以下的过程。 5)Jenkins获取SonarQube扫描后果,如覆盖率等指标未达到“品质门禁”的要求,则Jenkins流水线工作失败。 6)Gitlab获取到上述后果,并依据后果承受或者回绝 push。如果是merge request,则标注本次扫描的后果,供合并评审人员参考,当然这样的merege request个别会被评审人员回绝。 至此,一个残缺的由代码提交所触发的工作流程闭环就造成了,如下图所示: 如本文开篇所说,个别介绍三者集成的文章到第三步就完结了,也就是Gitlab 能通过webhook触发Jenkins构建工作,并且能在sonarqube上查看到扫描后果。而一个残缺的MR/Push触发CI的流程应该要将上述后果回馈到Gitlab当中。这当中就须要实现4和5的步骤了。 SonarQube Webhook通过给SonarQube上的某个我的项目指定WebHook, 就能在该我的项目被触发并实现扫描后果剖析后,调用该Webhook来实现将后果推送给消费者,如Jenkins。 具体的介绍能够参见SonarQube提供的官网阐明:https://docs.sonarqube.org/la...以下是该Webhook的内容案例: { "serverUrl": "http://localhost:9000", "taskId": "AVh21JS2JepAEhwQ-b3u", "status": "SUCCESS", "analysedAt": "2016-11-18T10:46:28+0100", "revision": "c739069ec7105e01303e8b3065a81141aad9f129", "project": { "key": "myproject", "name": "My Project", "url": "https://mycompany.com/sonarqube/dashboard?id=myproject" }, "properties": { }, "qualityGate": { "conditions": [ { "errorThreshold": "80", "metric": "new_coverage", "onLeakPeriod": true, "operator": "LESS_THAN", "status": "NO_VALUE" } ], "name": "SonarQube way", "status": "OK" } }以上案例中,SonarQube将上述内容post给指定的url。其中应用了一个最为简略的品质门禁,增量代码覆盖率80%。 ...

March 1, 2021 · 1 min · jiezi

关于gitlab:GitLab-CICD-的使用

GitLab CI/CD 应用前置条件: 在 GitLab 中创立一个可用于继续继承的我的项目;领有我的项目“维护者”或“拥有者”权限;有可用的 GitLab Runner 用于运行工作;在仓库的根目录创立一个 .gitlab-ci.yml 文件,用于定义工作内容;查看可用的 GitLab Runner在 GitLab 中,Runner 是运行继续集成工作内容的代理。 查看可用的 GitLab Runner:Settings > CI/CD > Runners 有绿色圆圈的 Runner 即为处于激活状态。 install GitLab Runner register a runner 创立 .gitlab-ci.yml 文件.gitlab-ci.yml 文件用于配置具体的工作内容。 在文件中能够定义以下内容: Runner 应该执行的工作构造和程序;遇到特定条件时,Runner 应做出的决策。创立步骤: Project overview > Details;抉择提交的分支,点击+号,抉择New file;文件名 .gitlab-ci.yml ,填入示例代码;点击 Commit changes。build-job: stage: build script: - echo "Hello, $GITLAB_USER_LOGIN!"test-job1: stage: test script: - echo "This job tests something"test-job2: stage: test script: - echo "This job tests something, but takes more time than test-job1." - echo "After the echo commands complete, it runs the sleep command for 20 seconds" - echo "which simulates a test that runs 20 seconds longer than test-job1" - sleep 20deploy-prod: stage: deploy script: - echo "This job deploys something from the $CI_COMMIT_BRANCH branch."$GITLAB_USER_LOGIN 和 $CI_COMMIT_BRANCH 均为运行时变量。.gitlab-ci.yml 文件提醒Runner 能够应用 docker 容器去运行工作内容。参考:https://docs.gitlab.com/ee/ci...;能够应用 CI Lint tool 验证该文件,工具在所有我的项目中可用;能够应用 CI/CD configuration visualization 以图表模式展现文件内容;残缺的语法能够参考:https://docs.gitlab.com/ee/ci...。查看 pipeline 和工作内容的状态在提交批改后,一个 pipeline 将会被启动。 ...

February 22, 2021 · 1 min · jiezi

关于gitlab:GitLab-CICD-简介

CI/CDContinuous Integration (CI):继续集成Continuous Delivery (CD):继续交付Continuous Deployment (CD):继续部署继续集成(CI)监听代码推送主动构建自动测试继续交付(CD)继续集成手动部署继续部署(CD)继续集成主动部署GitLab CI/CDGitLab 内置了 GitLab CI/CD,能够用于继续集成、继续交付、继续部署。 GitLab CI/CD 工作流程推送提交到 GitLab 近程仓库中;触发我的项目的 CI/CD pipeline;运行自动化脚本; 构建和测试利用;预览更改内容;代码审查和批准合并分支;合并性能分支;触发我的项目的 CI/CD 主动部署到生产环境。 参考:https://docs.gitlab.com/ee/ci...

February 22, 2021 · 1 min · jiezi

关于gitlab:gitlab与钉钉默契配合code-review

钉钉群汇总git代码各种变更,岂不快哉背景:在研发过程中,当一个团队成员数量较多,会存在代码标准,设计形式等百花齐放的状态,好的代码标准是根本要求,然而难免会有研发没有留神,所以,控制不了集体研发阶段,那就从代码合并上来check,就此呈现了gitlab的merge request模式。第一步:我的项目设置登陆git,点开我的项目模块,进入我的项目,设置相干权限。 第二步:设置爱护分支很多人都能够在终端用命令或者界面辅助工具间接提交代码到dev(咱们dev是爱护分支),所以要阻止,步骤为: 点击我的项目下的分支,如上图,而后在【概览】的下方点击【我的项目设置】 branch:抉择你要爱护的分支(咱们是dev)。Allowed to merge:抉择这个分支的合并权限,就是谁能够合并研发分支代码到爱护分支。我抉择“Maintainers”维护者,就是有这个权限的人。Allowed to push:就是能够命令或者辅助工具间接push分支到爱护分支的权限,本人选。最初点击【protect】,完结权限的收敛。 第三步:收敛权限点击左侧菜单的【设置】-【成员】,找到【现有的成员和群组】,而后抉择对应权限即可。Maintainer:维护者developer:开发者(个别设置为这个) 第四步:绑定钉钉点击一个【钉钉群】,而后点击右上角【…】,抉择【群智能助手】,【增加机器人】,选git。 而后点击【增加】即可。 第五步:设置钉钉 进入设置页,可看到webhook地址,点击复制,复制该机器人的webhook地址。【复制】,而后去gitlab我的项目。 第六步:集成Gitlab我的项目主页进入 Settings -> Integrations, 将后面复制的webhook地址填入URL中,Trigger 局部抉择“Merge request events”(不要勾太多,不然揭示太多就有点骚扰了),而后点击“Add webhook”就实现了。如下图: 上述完结后,有人提交代码或者merge request就会即时到钉钉群。间接点击git提交的hash即主动跳转到代码变更处,开始CR吧。

February 9, 2021 · 1 min · jiezi

关于gitlab:git-命令相关笔记

新建branch并push切换到根底分支如master或者其余改变过的分支git checkout master git checkout $OTHER_BRANCH_NAME2.创立并切换到新分支 git checkout -b $NEW_BRANCH_NAME能够应用git branch或者git status查看是否在new branch上。 3.更新分支代码并提交 git add .git commit -m "init NEW_BRANCH_NAME"git push origin $NEW_BRANCH_NAME查看remote host的所有branches:git branch -a待续。。

February 5, 2021 · 1 min · jiezi

关于gitlab:Error-failed-to-push-some-refs-to-while-run-git-push

Bug问题:Gitlab提交branch遇到: 1.git add .2.git commit -m "commit"显示无误: On branch rem_useless_requirenothing to commit, working tree clean3.git push origin rem_useless_require却显示: To gitlab.**** ! [rejected] rem_useless_require -> rem_useless_require (non-fast-forward)error: failed to push some refs to '****'hint: Updates were rejected because the tip of your current branch is behindhint: its remote counterpart. Integrate the remote changes (e.g.hint: 'git pull ...') before pushing again.hint: See the 'Note about fast-forwards' in 'git push --help' for details.解决办法:第三步执行git push -u origin rem_useless_require -f用来强制笼罩已有的分支。胜利解决 ...

December 2, 2020 · 1 min · jiezi

关于gitlab:如何使用GitlabJenkins实现多分支自动独立部署

开发免不了要测试,同一个我的项目一两个人开发的时候,开发、测试、部署一个分支就行,但当我的项目变大,开发人员变多时,如果还是这样操作,你可能就会常常遇到不同需要的代码同时测试时的互相烦扰问题。比方,1、合并代码时常常发生冲突;2、一人代码写错,影响所有人等。 那么如何解决这个问题呢? 这里我介绍一个多分支同时部署测试的计划。具体就是每一个开发者的分支代码都能够独立部署到测试服务器(比方,不同的根目录,不同的容器),而后,各开发者能够在各自的测试分支独立调试。 上面以PHP我的项目为例来具体阐明。 首先列一下咱们可能用到的工具清单: Linux:这是所有操作的根底,本文中次要用到的Linux版本为Centos8Gitlab:负责管理源代码Jenkins:负责继续集成部署,Docker:负责搭建Gitlab、Jenkins、Web利用。Nginx:Web应用服务器、反向代理PHP:解析PHP代码GIT:治理源代码须要阐明的是,咱们装置这些工具次要应用yum命令,因而在执行前面步骤前,请先确保你的Linux零碎曾经装置了yum命令。具体步骤如下: 1、装置Dockeryum install docker2、装置Gitlab下载Gitlab镜像: docker pull gitlab-ce创立Gitlab容器了: docker run --name gitlab -p 443:443 -p 80:80 -p 22:22 -v /data/www/gitlab/config:/etc/gitlab -v /data/www/gitlab/logs:/var/log/gitlab -v /data/www/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce /bin/bash拜访localhost,查看成果: 3、装置Jenkins制作Jenkins镜像 咱们的仓库代码是不蕴含vendor目录的,须要git checkout 后,应用composer install命令主动生成。因为官网Jenkins镜像不蕴含Composer、PHP、Git等咱们的PHP我的项目须要用到的命令,因而,在理论应用时,咱们以官网镜像为根底制作了本人的Jenkins镜像。下载Centos镜像,如下: docker pull centos:latest 以Centos镜像为根底镜像,创立Jenkins容器: docker run -idt --name jenkins docker.io/centos /bin/bash进入jenkins容器外部: docker exec -it jenkins /bin/bash应用yum命令装置java、php、composer、git: yum -y php git javaphp -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"php -r "if (hash_file('sha384', 'composer-setup.php') === 'c31c1e292ad7be5f49291169c0ac8f683499edddcfd4e42232982d0fd193004208a58ff6f353fde0012d35fdd72bc394') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"php composer-setup.phpphp -r "unlink('composer-setup.php');"mv composer.phar /usr/bin/composer如果提醒PHP拓展缺失,请应用yum命令装置相干拓展。应用yum命令,装置官网jenkins: ...

December 1, 2020 · 1 min · jiezi

关于gitlab:带你深入了解-GitLab-CICD-原理及流程

GitLab CI/CD 是一个内置在GitLab中的工具,用于通过继续办法进行软件开发: Continuous Integration (CI)  继续集成Continuous Delivery (CD)     继续交付Continuous Deployment (CD)   继续部署继续集成的工作原理是将小的代码块推送到Git仓库中托管的利用程序代码库中,并且每次推送时,都要运行一系列脚本来构建、测试和验证代码更改,而后再将其合并到主分支中。 继续交付和部署相当于更进一步的CI,能够在每次推送到仓库默认分支的同时将应用程序部署到生产环境。 这些办法使得能够在开发周期的晚期发现bugs和errors,从而确保部署到生产环境的所有代码都合乎为应用程序建设的代码规范。 GitLab CI/CD 由一个名为 .gitlab-ci.yml 的文件进行配置,改文件位于仓库的根目录下。文件中指定的脚本由GitLab Runner执行。 1. GitLab CI/CD 介绍软件开发的继续办法基于主动执行脚本,以最大水平地缩小在开发应用程序时引入谬误的机会。从开发新代码到部署新代码,他们简直不须要人工干预,甚至基本不须要干涉。 它波及到在每次小的迭代中就一直地构建、测试和部署代码更改,从而缩小了基于曾经存在bug或失败的先前版本开发新代码的机会。 Continuous Integration(继续集成) 假如一个应用程序,其代码存储在GitLab的Git仓库中。开发人员每天都要屡次推送代码更改。对于每次向仓库的推送,你都能够创立一组脚本来主动构建和测试你的应用程序,从而缩小了向应用程序引入谬误的机会。这种做法称为继续集成,对于提交给应用程序(甚至是开发分支)的每项更改,它都会主动间断进行构建和测试,以确保所引入的更改通过你为应用程序建设的所有测试,准则和代码合规性规范。 Continuous Delivery(继续交付) 继续交付是超过继续集成的更进一步的操作。应用程序不仅会在推送到代码库的每次代码更改时进行构建和测试,而且,只管部署是手动触发的,但作为一个附加步骤,它也能够间断部署。此办法可确保主动查看代码,但须要人工干预能力从策略上手动触发以必输此次变更。 Continuous Deployment(继续部署) 与继续交付相似,但不同之处在于,你无需将其手动部署,而是将其设置为主动部署。齐全不须要人工干预即可部署你的应用程序。 1.1. GitLab CI/CD 是如何工作的 为了应用GitLab CI/CD,你须要一个托管在GitLab上的利用程序代码库,并且在根目录中的.gitlab-ci.yml文件中指定构建、测试和部署的脚本。 在这个文件中,你能够定义要运行的脚本,定义蕴含的依赖项,抉择要按程序运行的命令和要并行运行的命令,定义要在何处部署应用程序,以及指定是否 要主动运行脚本或手动触发脚本。 为了可视化处理过程,假如增加到配置文件中的所有脚本与在计算机的终端上运行的命令雷同。 一旦你曾经增加了.gitlab-ci.yml到仓库中,GitLab将检测到该文件,并应用名为GitLab Runner的工具运行你的脚本。该工具的操作与终端相似。 这些脚本被分组到jobs,它们独特组成一个pipeline。一个最简略的.gitlab-ci.yml文件可能是这样的: before_script:   - apt-get install rubygems ruby-dev -y run-test:   script:     - ruby --version 6before_script属性将在运行任何内容之前为你的利用装置依赖,一个名为run-test的job(作业)将打印以后零碎的Ruby版本。二者独特形成了在每次推送到仓库的任何分支时都会被触发的pipeline(管道)。 GitLab CI/CD不仅能够执行你设置的job,还能够显示执行期间产生的状况,正如你在终端看到的那样:为你的利用创立策略,GitLab会依据你的定义来运行pipeline。你的管道状态也会由GitLab显示:最初,如果呈现任何问题,能够轻松地回滚所有更改: 1.2. 根本 CI/CD 工作流程 一旦你将提交推送到近程仓库的分支上,那么你为该我的项目设置的CI/CD管道将会被触发。GitLab CI/CD 通过这样做: 运行自动化脚本(串行或并行) 代码Review并取得批准构建并测试你的利用就像在你本机中看到的那样,应用Review Apps预览每个合并申请的更改代码Review并取得批准合并feature分支到默认分支,同时主动将此次更改部署到生产环境如果呈现问题,能够轻松回滚通过GitLab UI所有的步骤都是可视化的1.3. 深刻理解CI/CD根本工作流程 ...

November 6, 2020 · 2 min · jiezi

关于gitlab:Gitlab-利用-Webhookjenkins-实现自动构建与部署

之前部署了Gitlab的代码托管平台和Jenkins的代码公布平台。通常是开发后的代码先推到Gitlab上治理,而后在Jenkins里通过脚本构建代码公布。 这种形式每次在发版的时候,须要人工去执行jenkins上的构建动作,有时显得过于繁琐。于是就想到了Gitlab的Webhook性能,通过Webhook的相干设置,能够实现代码Push后,主动去触发jenkins上的构建动作,这样就不须要人工干预去执行发版操作了。设置如下: 1)Jenkins上的操作通常,jenkins在我的项目配置时是能够配置近程构建触发器,设置好jenkins的回调url后就能够让jenkins进行主动构建。这就须要先下载Gitlab Hook Plugin 插件。登陆Jenkins,别离点击"系统管理"->"插件治理"->"可选插件",抉择Gitlab Hook Plugin而后构建相应的我的项目工程,比方上面的test-wx(上面最要害的是第2步中查看url,而后用这个url回调地址去Gitlab的webhook上增加) a)先设置代码的git下载门路,这里通过ssh形式(须要提前将Jenkins本机的key增加到Gitlab上)b)查看jenkin生成回调地址。在工作重构建触发器下获取回调URL。上面的URL那一行只有Gitlab Hook Plugin插件下载胜利后能力显示。c)而后设置代码公布的推送脚本 2)Gitlab上的操作登陆Gitlab上的testwx3我的项目中,增加webhook(用下面Jenkins中生成的回调url)而后点击这个我的项目的"Settings"增加胜利后,点击此webhook前面的test进行测试 如果返回Hook successfully executed.示意配置胜利。这样,下次push代码后,就会主动触发jenkins上相干的构建工程进行主动公布了!无需人工干预~如上设置后,比方在gitlab的testwx3我的项目代码库中push一个test.txt文件,而后测试下是否主动公布了 而后去Jenkins上查看,如下发现曾经主动公布了! 最初去指标机器192.168.1.19的/tmp/testwx目录下发现test.txt文件曾经公布过去了~ https://www.cnblogs.com/kevin...

November 5, 2020 · 1 min · jiezi

关于gitlab:如何把本地新项目推送到gitlab仓库

在本地已有我的项目,gitlab没有的状况下,如何把本地新我的项目推送到近程仓库上一、gitlab新建一个空白我的项目二、本地 git init //初始化本地仓库git add . //将本地我的项目的所有文件增加到暂存区git commit -m "阐明信息" 三、终端1、首先,建设本地仓库和远端GitLab仓库的关联关系 git remote add origin https://gitlab*********************.git在这一步时如果呈现谬误:fatal:remote origin already exists,先革除一下关联关系在进行上一步动作: git remote rm origin2、查看关联是否已建设且正确: git remote -v3、获取近程库与本地同步合并: git pull --rebase origin mastergit push -u origin master如果推送不胜利,先pull一下,如果报错fatal: refusing to merge unrelated histories,阐明本地和远端的git库是两个 基本不相干的 git 库, 而后本地要去推送到远端, 远端感觉这个本地库跟本人不相干, 所以告知无奈合并。解决办法:强制合并: git pull origin master --allow-unrelated-histories前面加上 --allow-unrelated-histories ,意思是把两段不相干的分支进行强行合并。而后再将代码推送到远端。 至此,操作胜利。

October 19, 2020 · 1 min · jiezi

关于gitlab:使用-GitLab-CI-和-Docker-自动部署-Spring-Boot-应用

Docker和Spring Boot是十分风行的组合,咱们将利用GitLab CI的劣势,并在应用程序服务器上主动构建,推送和运行Docker镜像。 GitLab CIGitlab CI/CD服务是GitLab的一部分,每当开发人员将代码推送到GitLab存储库时,它都会在所需的环境中构建,测试和存储最新的更改。 抉择GitLab CI的一些次要起因: 易于学习,应用和可扩大保护容易整合容易CI齐全属于GitLab存储库的一部分良好的Docker集成镜像托管(Container registry)-基本上是你本人的公有Docker Hub从老本上来说,GitLab CI是一个很好的解决方案。每个月你有2000分钟的收费构建工夫,对于某些我的项目来说,这是入不敷出的我把 Docker 的教程和文章整顿成了 PDF,关注微信关注号 Java后端,回复 666 就能下载了。 为什么GitLab CI超过Jenkins这无疑是一个宽泛探讨的话题,然而在本文中,咱们将不深入探讨该话题。GitLab CI和Jenkins都有长处和毛病,它们都是性能十分弱小的工具。 那为什么抉择GitLab? 如前所述,CI齐全是GitLab存储库的一部分,这意味着不须要装置它,并且保护起码。yml脚本实现后,你便或多或少地实现了所有工作。 对于小型我的项目应用Jenkins,你就必须本人设置和配置所有内容。通常,你还须要一台专用的Jenkins服务器,这也须要额定的老本和保护。 应用GitLab CI 前提条件 如果须要与这些前提条件无关的任何帮忙,我已提供相应指南的链接。 你曾经在GitLab上推送了Spring Boot我的项目你已在应用程序服务器上安装了Docker(指南)你具备Docker镜像的镜像托管(在本指南中将应用Docker Hub)你曾经在服务器上生成了SSH RSA密钥(指南)你要创立什么 你将创立Dockerfile 和.gitlab-ci.yml, 它们将主动用于: 构建应用程序Jar文件构建Docker镜像将镜像推送到Docker存储库在应用程序服务器上运行镜像根本我的项目信息 本文的Spring Boot应用程序是通过Spring Initializr生成的。这是一个基于Java 8或Java11构建的Maven我的项目。前面,咱们将介绍Java 8和Java 11对Docker镜像有什么影响。 Docker文件让咱们从Dockerfile开始。 FROM maven:3.6.3-jdk-11-slim AS MAVEN_BUILD#FROM maven:3.5.2-jdk-8-alpine AS MAVEN_BUILD FOR JAVA 8ARG SPRING_ACTIVE_PROFILEMAINTAINER JasminCOPY pom.xml /build/COPY src /build/src/WORKDIR /build/RUN mvn clean install -Dspring.profiles.active=$SPRING_ACTIVE_PROFILE && mvn package -B -e -Dspring.profiles.active=$SPRING_ACTIVE_PROFILEFROM openjdk:11-slim#FROM openjdk:8-alpine FOR JAVA 8WORKDIR /appCOPY --from=MAVEN_BUILD /build/target/appdemo-*.jar /app/appdemo.jarENTRYPOINT ["java", "-jar", "appdemo.jar"]与该Dockerfile相干的常识很少。 ...

October 7, 2020 · 3 min · jiezi

GitLab-内置了一个强大的-CICD-系统

起源: https://www.cnblogs.com/cjsbl...GitLab CI/CD 是一个内置在GitLab中的工具,用于通过继续办法进行软件开发: Continuous Integration (CI)  继续集成Continuous Delivery (CD)     继续交付Continuous Deployment (CD)   继续部署继续集成的工作原理是将小的代码块推送到Git仓库中托管的利用程序代码库中,并且每次推送时,都要运行一系列脚本来构建、测试和验证代码更改,而后再将其合并到主分支中。 继续交付和部署相当于更进一步的CI,能够在每次推送到仓库默认分支的同时将应用程序部署到生产环境。 这些办法使得能够在开发周期的晚期发现bugs和errors,从而确保部署到生产环境的所有代码都合乎为应用程序建设的代码规范。 GitLab CI/CD 由一个名为 .gitlab-ci.yml 的文件进行配置,改文件位于仓库的根目录下。文件中指定的脚本由GitLab Runner执行。 1. GitLab CI/CD 介绍软件开发的继续办法基于主动执行脚本,以最大水平地缩小在开发应用程序时引入谬误的机会。从开发新代码到部署新代码,他们简直不须要人工干预,甚至基本不须要干涉。 它波及到在每次小的迭代中就一直地构建、测试和部署代码更改,从而缩小了基于曾经存在bug或失败的先前版本开发新代码的机会。 Continuous Integration(继续集成) 假如一个应用程序,其代码存储在GitLab的Git仓库中。开发人员每天都要屡次推送代码更改。对于每次向仓库的推送,你都能够创立一组脚本来主动构建和测试你的应用程序,从而缩小了向应用程序引入谬误的机会。这种做法称为继续集成,对于提交给应用程序(甚至是开发分支)的每项更改,它都会主动间断进行构建和测试,以确保所引入的更改通过你为应用程序建设的所有测试,准则和代码合规性规范。 Continuous Delivery(继续交付) 继续交付是超过继续集成的更进一步的操作。应用程序不仅会在推送到代码库的每次代码更改时进行构建和测试,而且,只管部署是手动触发的,但作为一个附加步骤,它也能够间断部署。此办法可确保主动查看代码,但须要人工干预能力从策略上手动触发以必输此次变更。 Continuous Deployment(继续部署) 与继续交付相似,但不同之处在于,你无需将其手动部署,而是将其设置为主动部署。齐全不须要人工干预即可部署你的应用程序。 1.1. GitLab CI/CD 是如何工作的 为了应用GitLab CI/CD,你须要一个托管在GitLab上的利用程序代码库,并且在根目录中的.gitlab-ci.yml文件中指定构建、测试和部署的脚本。 在这个文件中,你能够定义要运行的脚本,定义蕴含的依赖项,抉择要按程序运行的命令和要并行运行的命令,定义要在何处部署应用程序,以及指定是否 要主动运行脚本或手动触发脚本。 为了可视化处理过程,假如增加到配置文件中的所有脚本与在计算机的终端上运行的命令雷同。 一旦你曾经增加了.gitlab-ci.yml到仓库中,GitLab将检测到该文件,并应用名为GitLab Runner的工具运行你的脚本。该工具的操作与终端相似。 这些脚本被分组到jobs,它们独特组成一个pipeline。一个最简略的.gitlab-ci.yml文件可能是这样的: before_script:   - apt-get install rubygems ruby-dev -y run-test:   script:     - ruby --version 6 before_script属性将在运行任何内容之前为你的利用装置依赖,一个名为run-test的job(作业)将打印以后零碎的Ruby版本。二者独特形成了在每次推送到仓库的任何分支时都会被触发的pipeline(管道)。 GitLab CI/CD不仅能够执行你设置的job,还能够显示执行期间产生的状况,正如你在终端看到的那样: 为你的利用创立策略,GitLab会依据你的定义来运行pipeline。你的管道状态也会由GitLab显示: 最初,如果呈现任何问题,能够轻松地回滚所有更改: 1.2. 根本 CI/CD 工作流程 ...

July 15, 2020 · 2 min · jiezi

GitLab-公开拒收中国-俄国人现有员工不受影响但将区别对待

近日,美国代码托管网站 GitLab 在其官网上发表了一篇声明,称他们将启用一份「职位国家封锁」令,停止招聘居住在中国和俄罗斯的人担任网络可靠性工程师及支持职位,并禁止担任这两个职位的员工移居中国或俄罗斯。该公司称,在当前的地缘政治环境下,「因为没有办法通过技术手段处理相关问题,所以这是最为人道的解决方案」。 这份声明的内容翻译如下: 《Support Engineer Job family country block》 在 2019 年 10 月 15 日星期一的 e-Group 中,我们做了一个决定,针对能够得到用户信息的团队成员启用「职位国家封锁」。数家企业用户已对此表达了担忧,这也是我们行业在地缘政治环境下的普遍做法。 涉及的国家是: 中国俄国这个 issue 是为了跟踪向支持手册中添加流程的过程,以及需要更新的任何招聘流程以确保: 我们不向居住在这些国家/地区的个人提供 offer;当前的团队成员被阻止前往这些国家,并继续担任禁止其职务的角色。今天,我们没有基于权限来处理此问题的技术方法。这样做还将迫使我们面对在某些无法履行其100%职责的团队中创建“第二类公民”的可能性,这是我们中的一些人在其他公司经历过的动态,并被高度否定。因此,我们认为国家/地区封锁目前是最人道的解决方案 - 尤其是因为它不会影响到在岗员工。 我们应该研究基于权限的工作。因此,每个人都清楚会付出多少努力,以及大概需要多长时间。 声明一经推出引起了部分企业内部员工与外界开发者强烈的反响,「不理解」、「不客观」、「如果相关员工要和中国人结婚怎么办?」、「要是他们和中国人结婚若干年之后打算搬回中国照顾年迈的父母怎么办?」。 可能迫于舆论压力,代表 GitLab 官方的公司副总裁 Eric Johnson 在讨论回复中更新了相关声明: 目前 GitLab 在中国地区的员工就业不会受影响,未来也将继续在中国招聘员工,作为开源社区,也将继续接受这些地区的开源。但中国和俄罗斯地区的员工,岗位将不涉及客户敏感数据访问。GitLab 推出于 2011 年,是一家总部位于旧金山的代码托管公司,产品 GitLab 是一个用于仓库管理系统的开源项目,使用 Git 作为代码管理工具,并在此基础上搭建起来的 web 服务。作为 GitHub 有力的竞争对手,其用户包括 IBM、索尼、NASA、阿里巴巴、Oracle、波音等大型科技公司和机构。截至今年 6 月份,GitLab 的员工数量已达 878 人。 据平台官网信息显示,GitLab 预计将于 2020 年 11 月 18 日上市。

November 4, 2019 · 1 min · jiezi

使用Gitlab搭建Composer-私有化仓库

在Gitlab 中新建私有化仓库选择一个仓库名称 mkdir prirepos进入目录 cd prirepos使用 composer init 初始化私有化仓库 composer init一路回车,或者填写你想要的参数或者组件包 { "name": "chenghuiyong/prirepos", "authors": [ { "name": "会勇禾口王", "email": "chenghuiyong1987@gmail.com" } ], "require": {}}这里,参考Laravel 框架组件化实现,举例实际应用场景:如果你的项目正在使用migration 管理数据迁移和模型文件,当项目越大,数据迁移和模型文件就会变得越来越多,突然一天,另外一个项目也想使用该项目中的模型文件,本办法就是复制粘贴。如果有1000个文件,那么你复制1000次... 下面推荐使用私有化仓库的方法,既做到共用,也保障安全,然后通过composer 引入到新的项目中。 此时,我们私有仓库就会变成这样的结构设计 - .git- database - migrations - 2014_10_12_100000_create_users_table- src - Models - User.php - ServiceProvider.php- vendor- composer.json- composer.lock于是,你的composer.json可能就会这样 { "name": "prirepos/model", "description": "The Prirepos Laravel Models", "type": "library", "require": { "illuminate/database": "^6.0|^7.0", "illuminate/support": "^6.0|^7.0", "illuminate/console": "^6.0|^7.0", }, "license": "MIT", "authors": [ { "name": "会勇禾口王", "email": "chenghuiyong1987@gmail.com" } ], "autoload": { "psr-4": { "Prirepos\\Model\\": "src/" } }, "extra": { "laravel": { "providers": [ "Prirepos\\Model\\ServiceProvider" ] } }, "config": { "sort-packages": true }, "minimum-stability": "dev", "prefer-stable": true, "repositories": { "packagist": { "type": "composer", "url": "https://mirrors.aliyun.com/composer/" } }}重要的ServiceProvider.php包含 ...

November 2, 2019 · 2 min · jiezi

docker安装gitlab

docker安装gitlabGitLab 分为 社区版(Community Edition,缩写为 CE)和 企业版(Enterprise Edition,缩写为 EE)。社区版是免费的,而企业版包含一些收费服务,一般来说个人开发者用社区版就足够了。 下载镜像首先需要先下载 GitLab CE 的镜像,使用下面的命令进行下载,因为文件较大,所以可能需要一点时间,耐心等待即可。# 不加 tag 则默认为最新版本 latest$ docker pull gitlab/gitlab-ce创建目录通常会将 GitLab 的配置 (etc) 、 日志 (log) 、数据 (data) 放到容器之外, 便于日后升级, 因此请先准备这三个目录。mkdir -p /srv/gitlab/configmkdir -p /srv/gitlab/logs mkdir -p /srv/gitlab/data启动运行$ docker run --detach \ --hostname gitlab.example.com \ --publish 8443:443 --publish 8880:80 --publish 8222:22 \ --name gitlab \ --restart always \ --volume /srv/gitlab/config:/etc/gitlab \ --volume /srv/gitlab/logs:/var/log/gitlab \ --volume /srv/gitlab/data:/var/opt/gitlab \ --privileged=true \ gitlab/gitlab-ce:latest说明: ...

July 16, 2019 · 2 min · jiezi

一套基础自动化部署搭建过程

问题背景公司初创技术团队,没有任何基础设施的情况下,需要搭建一系列code管理以及自动化部署等工具....所以引发了下面一系列的部署过程,历时两天,中间也是碰到各种问题,但最终把基本工具全部搭建成功,耶~,下面带大家一起看下此次搭建过程。 资源服务器一台,CentOS的,公司就给了一台配置较低的服务器当临时服务器,没办法了,就这么搞吧。 思考:如果我用传统的yum来安装,肯定会被我装乱七八糟,还不方便自己管理维护,左右为难的情况下我选择了Dokcer,可能有些小伙伴问Docker是啥怎么用,不要慌这里有传送门:Linux docker-compose 实战、 [进阶篇]docker编排PHP开发坏境测试环境搭建 为了快速搭建一套PHP测试环境我决定用laradock了,虽然文件很多,但是里面封装的东西也是比较全的,后期开发不知道会用到什么技术,就决定先用这个,随时可以启动用得到的服务。 laradock官方文档给的介绍也很全面,我这里采用的方式是部署多套项目方式目录结构如下: + laradock+ project-1+ project-2开始使用:git clone https://github.com/laradock/l...cp env-example .env env 里面的配置可以修改的,可以根据自己情况进行调整docker-compose up -d nginx php-fpm mysql redis 后面可以加上你要启动的程序,像rabbitmq、mongo等等,需要的时候追加在尾部就可以启动,首次启动时间有点长docker-compose exec --user=laradock workspace bash 像laravel等项目肯定少不了composer,执行这个命令进入工作区,就可以执行composer了docker-compose exec nginx nginx -s reload 肯定有人会问我更改了nginx配置是不是每次都要进入nginx容器去重启,或者把整个容器都重启了呀,不用的,执行这个命令就可以重启nginx了。nginx站点配置文件在哪里呢:./laradock/nginx/sites/先运行下试试吧。 GitLab现在运行环境已经搭建好了,我代码应该怎么存放呢,其实有很多的选择,要根据自己的实际情况出发,如:GitHub、码云、GitLab等等,我选择的是GitLab,刚开始没有发现laradock其实提供了GitLab服务。。只能自己折腾了,其实很简单。 docker \run -d \-p 443:443 \-p 8080:80 \-p 222:22 \--name gitlab \--restart always \-v /home/gitlab/config:/etc/gitlab \-v /home/gitlab/logs:/var/log/gitlab \-v /home/gitlab/data:/var/opt/gitlab \gitlab/gitlab-ce#参数解释:#-d:让容器后台运行#-p:暴露端口,把容器的443端口指向到宿主机443端口,宿主机8080->容器80,宿主机222->容器22#宿主机端口可以根据自己的情况自己定制#-name 给你的容器起个名,只要不和现有的重复就可以#--restart 当容器退出时docker是否重启#-v 这就是挂载磁盘了,把宿主机的目录挂载到容器中,这么做哪怕是容器坏了我的内容也不会丢失。#宿主机/home/gitlab/config目录挂载到容器中/etc/gitlab目录,宿主机目录根据自己情况定#gitlab/gitlab-ce 这个就是要启动的镜像,如果镜像不存在,docker会自动下载最新版容器启动成功之后会有一段时间来启动GitLab,看到启动成功立马访问是访问不到的,稍微等一下就可以了,配置文件都在你指定的宿主机目录下可以修改,需要修改的内容如下: gitlab_rails['gitlab_ssh_host'] = '宿主机IP'#宿主机的IP地址 gitlab_rails['gitlab_shell_ssh_port'] = 222#暴露给宿主机的ssh端口 external_url '域名'#分配给gitlab的域名,可以用nginx做反向代理到8080端口Jenkins实现自动化部署有很多种方式如:webhook、Jenkins、Travis CI等等,我的选择是Jenkins,因为之前部署用过所以这里依旧用了这个,laradock依旧提供了Jenkins服务,又是因为没发现自己搭建了一个。。。看来下次要先多看看在动手了。 ...

July 11, 2019 · 1 min · jiezi

从零到一实现前后端分离项目的gitlabci流程

?通过一周的尝试, 终于从0到1把gitlab-ci弄好了, 彻底抛弃travis-ci, 最大的坑还是墙外的东西太慢了, 总是timeout 整个过程分为如下几步: 如何在一个1核2G的云服务器上搭建gitlab: 十分钟搭建Gitlab使用gitlab-runner, 并选择正确的executor如何构建前端镜像如何构建后端镜像编写gitlab-ci.yml, 实现一个完整的前端后分离项目的构建部署1. 使用gitlab-runnergitlab-runner跟gitlab-ci是连体婴, 主要为gitlab-ci打工, 使用镜像的安装方式如下: docker run -d --name gitlab-runner --restart always \ -v /srv/gitlab-runner/config:/etc/gitlab-runner \ -v /var/run/docker.sock:/var/run/docker.sock \ gitlab/gitlab-runner:latest其中挂载卷/srv/gitlab-runner/config/config.toml包含了所有runner的配置信息. 通过挂载/var/run/docker.sock:/var/run/docker.sock,使得容器中的进程可以通过它与Docker守护进程通信 1.1 选择Docker作为runner的executor在启动了gitlab-runner容器后, 执行如下命令进入容器, 注册runner docker exec -it gitlab-runner /bin/bashroot@492ce6ab72f9:/# gitlab-runner register接下来需要填写的信息如下: Please enter the gitlab-ci coordinator URL:你的Gitlab地址: http(s)://gitlab.xxx.comPlease enter the gitlab-ci token for this runner:你的Gitlab admin/runners页面中的tokenPlease enter the gitlab-ci description for this runner:填写描述, 无关紧要Please enter the gitlab-ci tags for this runner (comma separated):填写标签, 没有标签谁都可以用, 是shared-runner, 有标签需要声明才可用, 回车就对了Please enter the executor: docker-ssh, ssh, docker+machine, kubernetes, docker-ssh+machine, docker, parallels, shell, virtualbox:选择你的executor: Docker应该是我观察到最常用的吧Please enter the default Docker image (e.g. ruby:2.6):选择一个默认镜像: 例如 docker:stable-alpine不出意外, 就能在gitlab中看到了 ...

July 11, 2019 · 3 min · jiezi

使用Docker安装Gitlab及相关配置

最近在学习自动化部署的一些内容,自动化部署,涉及到的内容有Docker、Jenkins、Gitlab等内容,今天通过docker玩了一遍gitlab,下面是一些心得 安装GitlabDocker安装服务实在是太方便,我们通过docker来安装Gitlab,运行如下命令查看Gitlab的镜像文件 搜索镜像 sudo docker search gitlab看到镜像有很多,如果OFFICIAL这一项下面是[OK] 表示为官方的镜像,我这里使用第四个,因为这是中文版的,鄙人英语不好,还是看中文版的比较舒服。其实,中文版也就是安装了一个语言包而已,有兴趣可以自己安装第一个,然后再手动配置中文包 下载镜像 sudo docker pull twang2218/gitlab-ce-zh启动服务 docker run -d -p 8443:443 -p 8090:80 -p 8022:22 --restart always --name gitlab -v /usr/local/gitlab/etc:/etc/gitlab -v /usr/local/gitlab/log:/var/log/gitlab -v /usr/local/gitlab/data:/var/opt/gitlab --privileged=true twang2218/gitlab-ce-zh查看启动情况 // 添加-a 参数,把启动的,没有启动的都列出来sudo docker ps 配置Gitlab配置的时候,我们需要进入容器当中配置,如果直接修改我们映射到容器外部的配置文件,总会出现一些奇怪的问题,为了避免出现问题,尽量按照如下操作流程进行相关的配置和测试 第一步:进入容器 sudo docker exec -it gitlab bash第二步:修改gitlab.rb文件 sudo cd /etc/gitlabsudo vim gitlab.rb第三步:修改IP和端口 该部分内容的修改是为了解决,我们再gitlab创建项目的时候,项目访问地址是容器id的问题 // 可以使用/ 来查找关键字,找到指定的内容,然后通过n来下一个查找// 在gitlab创建项目时候http地址的host(不用添加端口)external_url 'http://xx.xx.xx.xx'// 在gitlab创建项目时候ssh地址的hostgitlab_rails['gitlab_ssh_host'] = 'xx.xx.xx.xx'(不用添加端口)# docker run 的时候我们把22端口映射为外部的8022了,这里修改下gitlab_rails['gitlab_shell_ssh_port'] = 8022第四步:修改邮箱 ...

July 10, 2019 · 1 min · jiezi

借助URLOS快速安装Gogs

简介Gogs 是一款极易搭建的自助 Git 服务。 今天我们介绍一种更快速的安装方法,那就是通过URLOS一键安装Gogs。urlos是什么? URLOS是一个云主机管理软件,基于Docker容器技术打包和运行应用,包含负载均衡和故障转移等高级功能,可自动识别机器和云应用的故障并将云应用转移至可用的机器上,单机故障并不影响业务开展。 你可以使用以下命令安装URLOS: curl -LO www.urlos.com/iu && sh iu在此不讨论URLOS的使用方法,感兴趣的朋友请自行搜索,我们直接来看URLOS如何快速安装Gogs: 安装流程1.登录URLOS系统后台,在应用市场中搜索“Gogs”,找到之后,直接点击安装按钮 2.填写服务名称、选择运行节点、服务端口、选择智能部署 3.填写域名:www.aaa.com(这里填写自己的域名) 然后点击“提交”按钮,等待部署完成; 4.创建数据库应用市场中搜索“mysql”,安装mysql-5.6: 填写如下: 点击“提交”后等待mysql-5.6部署完成; 在服务列表里找到刚刚安装成功的mysql,选择”管理数据库“ 点击右上角的添加数据库 填写如下: 5. Gogs初始化向导访问在第3步中填写的域名:www.aaa.com。 点击“立即安装”。 安装成功后,注册一个帐户并登录:

July 10, 2019 · 1 min · jiezi

windows命令行获取gitlab私有包

golang私有包导入github上的公有包导入比较常见,私有包导入方面的教程不多,这里记录一下自己遇到的问题没钱买Mac,开发环境是Windows设置gitlab的public key配置本地的git,username,email等。根据自己实际情况调整下边的参数。注意!操作都是在git bash上边!除非特殊说明 $ git config --global user.name "your name"$ git config --global user.email "your email@address"//下边这条的含义是用ssh的时候用git而不是https$ git config --global url."git@address:".insteadOf "https://address.com"然后就是在gitlab上边添加自己生成的public key。操作步骤。gitlab的文档说得很清楚。设置代理去墙外边取包正常来说,添加key之后,就可以把gitlab的项目拉到本地。但是golang项目比较特殊,我们希望用go get命令,把依赖的包也取过来。这就意味着,需要在git bash中设置代理。注意,千万不要像我这么傻,用CMD的set 去设置http_proxy。 $ export ALL_PROXY="socks5://127.0.0.1:1080"直接像上边,按照Linux系统的习惯去设置代理。我用的是ssr。遇到的一个报错上边的步骤基本完整,最后go get自己的私有包就行。但是,因为我的项目是用module做依赖管理的,所以还需要在go.mod那级目录下执行go mod tidy。报错信息:go modules disabled inside gopath/src by go111module=auto我的解决办法。从报错信息来看就是变量go111module的值没设置对。改一下就OK了。 $ export GO111MODULE=on

July 8, 2019 · 1 min · jiezi

git-rebase使用020

git rebase 使用rebase:顾名思义 ==变基== 假设现在从master 分支上,切出一个本地开发分支mydev git checkout -b mydev这时候master上的git记录是这样子的 A-->B-->C-->D这个时候另外一个开发人员把ta的dev分支合并到master分支了tadev A-->B-->C-->D |-->E-->F-->G查看git记录git lg or git log实际上现在master上的分支的git 提交记录已经是这样子的了: A-->B-->C-->D-->E-->F-->G但是你本地上的分支还是这样的,你分别了提交了 3个 commit记录。 |—->M-->N-->OA-->B-->C-->D这时,你的代码开发完成了,需要合并代码。这时候有两种选择: 直接 git merge 或者 经过 git rebase 再提交 git merge git merge如果直接git merge,假设你提交commit的时间和刚才合并进去的其他人的dev分支是有重合的: A-->B-->C-->D |-->E |-->F-->G |-->M-->N |-->O这样的提交的记录就比较乱,假设现在需要回退代码什么的,就有点小麻烦了,就需要一个文件去回退。对于多人协作的话 就比较需要git rebase git rebase先对mydev分支进行 git rebase 操作 这时候分支的提交记录就会变为如下所示: A-->B-->C-->D-->E-->F-->G |-->M-->N-->O会把mydev分支新增的commit记录新增在master分支最新的后面,这个时候push分支,就需要强制更新你的分支。再提交merge。 git push -f 变基的作用就是修整历史,将分支历史并入主线。 git rebase 注意事项确保没有其它分支同时更改同一个文件git rebase前需要确保master分支为最新。变基会修整历史,然后将分支历史并入主线,可以理解成美化过的历史,而合并则可以不修改历史,让分支历史依然独立存在,可以看作原始的历史。永远不要对已经推到主干分支服务器或者团队其他成员的提交进行变基,我们选择变基还是合并的范围应该在自己当前工作范围内。如果git rebase之后提示冲突的话,需要解决冲突: 解决冲突后 add 更改的文件git add 无需 commit, 继续 rebasegit rebase --continuegit rebase还有一些其他的操作, ...

June 25, 2019 · 1 min · jiezi

推荐12个实用的gitbook插件

➢ 安装和使用插件方法在根目录下创建book.json 在该文件中按照指定格式插入以下插件对应的代码。 安装插件有两种方式 : 一种是在book.json写入相应插件和配置后, 使用gitbook install安装插件。 一种是使用npm install pluginName安装,然后写入配置 ➢ hide-element 隐藏元素主要用来隐藏不想看到的元素。 如: 默认的gitbook左侧提示:Published with GitBook 使用方式:在book.json中写入以下内容 { "plugins": [ "hide-element" ], "pluginsConfig": { "hide-element": { "elements": [".gitbook-link"] } }}➢ back-to-top-button 回到顶部当文章篇幅较长时,页面底部会显示按钮,一键点击自动回到顶部。 使用方式: 在book.json中写入以下内容 { "plugins": [ "back-to-top-button" ]}➢ chapter-fold 导航目录折叠gitbook默认目录没有折叠效果。 使用方式:在book.json中写入以下内容 { "plugins": ["chapter-fold"]}➢ code 复制代码在代码域的右上角添加一个复制按钮,点击一键复制代码。 使用方式: 在book.json中写入以下内容 { "plugins" : [ "code" ]}➢ splitter 侧边栏宽度可调节左侧目录和右侧文章可以拖动调节宽度。 使用方式: 在book.json中写入以下内容 ...

June 13, 2019 · 2 min · jiezi

使用阿里云极速型NAS构建高可用的GitLab

GitLab简介GitLab是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。Ruby on Rails 是一个可以使你开发、部署、维护 web 应用程序变得简单的框架。GitLab拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。由于Git的分布式特性,即使Gitlab不可用,开发人员仍然可以在本地提交代码。但是,某些Gitlab功能,比如CI,问题跟踪和持续集成会不可用,也会严重影响线上使用。因此高可用架构还是不可缺少的。GitLab软件架构如下图所示: GitLab高可用设计主备模式:启动2个实例,只有一个工作提供服务,数据通过分布式存储保持一致 主主模式(scales):Rails server启动多个,同时提供服务,数据库保持独立,数据通过NAS文件存储共享 GitLab高可用方案水平扩展 这种架构适用于许多Gitlab客户访问的使用场景,解决高API使用率,大量排队的Sidekiq作业的问题。 3 PostgreSQL nodes2 Redis nodes3 Consul/Sentinel nodes2 or more GitLab application nodes (Unicorn, Workhorse, Sidekiq, PGBouncer)1 NFS/Gitaly server 混合扩展 这种架构通过组件在专用节点上分离,提供高资源使各组件不会相互干扰,解决服务争用/高负载的问题。 3 PostgreSQL nodes1 PgBouncer node2 Redis nodes3 Consul/Sentinel nodes2 or more Sidekiq nodes2 or more GitLab application nodes (Unicorn, Workhorse)1 or more NFS/Gitaly servers1 Monitoring node (Prometheus, Grafana) ...

June 11, 2019 · 1 min · jiezi

gitLab-用户名修改后git本地仓库和远程仓库断了连接

于是进入“控制面板”——“用户账户”-凭据管理器——windows凭据(搜索凭据管理器) 找到了git的用户名密码。修改正确后ok

May 28, 2019 · 1 min · jiezi

git

安装git三个工作区域概念以及文件状态三个工作区域概念:工作目录(Working Directory)、暂存区(Staging Area)、git仓库(.git Direactory Repository);文件状态:划分一:未修改 已修改 已暂存 已提交划分二:未跟踪 已跟踪 注:已跟踪的文件是指那些被纳入了版本控制的文件,在上一次快照中有它们的记录,在工作一段时间后,它们的状态可能处于未修改,已修改或已放入暂存区。 工作目录中除已跟踪文件以外的所有其它文件都属于未跟踪文件,它们既不存在于上次快照的记录中,也没有放入暂存区。 建立git仓库两种场景:1)在现有目录中初始化仓库把已有的项目纳入git管理$cd 项目代码所在的文件夹$git init新建的项目直接用git管理$cd 某个文件夹$git init ‘your_project_name’ // 会在当前目录下创建your_project_name文件夹(含有.git)注:通过git init 初始化的项目,工作目录中的所有文件都属于未跟踪的文件,可通过git add 将其变成已跟踪文件2)从服务器克隆一个git仓库$git clone <url> [your_project_name]注:初次克隆某个仓库的时候,工作目录中的所有文件都属于已跟踪文件,并处于未修改状态。 配置信息添加配置$git config [--local | --global | --system] user.name 'Your name'$git config [--local | --global | --system] user.email 'Your email' 查看配置$git config --list [--local | --global | --system]$git config [[--local | --global | --system] user.name 区别local:区域为本仓库global: 当前用户的所有仓库system: 本系统的所有用户

May 27, 2019 · 1 min · jiezi

Docker搭建GitLab

官方中文教程:https://www.gitlab.com.cn/ins... 官方安装链接:https://about.gitlab.com/install 普通方式安装请见:https://segmentfault.com/a/11...环境要求:内存至少4G,GitLab是很耗内存滴 一、安装一般会将 GitLab 的配置 (etc) 、 日志 (log) 、数据 (data) 放到容器之外, 便于日后升级 docker pull gitlab/gitlab-ce:11.6.4-ce.0# 通过docker run中加入环境变量,取名为gitlabdocker run --detach \ # 后台运行 -d # --hostname song.local \ # 指定容器域名,未知功能:创建镜像仓库的时候使用到 -p 8443:443 \ # 将容器内443端口映射到主机8443,提供https服务 -p 80:80 \ # 将容器内80端口映射到主机8080,提供http服务 -p 10022:22 \ # 将容器内22端口映射到主机1002,提供ssh服务 --name gitlab \ # 指定容器名称 --restart=unless-stopped \ # 容器运行中退出时(不是手动退出),自动重启 --volume /var/lib/docker/volumes/gitlab-data/etc:/etc/gitlab \ # 将本地/var/lib/docker/volumes/gitlab-data/etc挂载到容器内/etc/gitlab --volume /var/lib/docker/volumes/gitlab-data/log:/var/log/gitlab \ # 将本地将本地/var/lib/docker/volumes/gitlab-data/log挂载到容器内/var/log/gitlab --volume /var/lib/docker/volumes/gitlab-data/data:/var/opt/gitlab \ # 将本地将本地/var/lib/docker/volumes/gitlab-data/data挂载到容器内/var/opt/gitlab gitlab/gitlab-ce:11.6.4-ce.0 # 镜像名称:版本为了方便日后启动,创建一个启动脚本:gitlab-docker-restart.sh,代码如下:#!/bin/bashserverName="gitlab"imageName="gitlab/gitlab-ce:11.6.4-ce.0"function runServer(){ docker run --detach \ -p 8443:443 \ -p 80:80 \ -p 10022:22 \ --name ${serverName} \ --volume /var/lib/docker/volumes/gitlab-data/etc:/etc/gitlab \ --volume /var/lib/docker/volumes/gitlab-data/log:/var/log/gitlab \ --volume /var/lib/docker/volumes/gitlab-data/data:/var/opt/gitlab \ -v /etc/localtime:/etc/localtime \ --restart=unless-stopped \ ${imageName}}runningCount=`docker ps -f status=running -f status=restarting | grep -w ${serverName} |wc -l`;if [[ ${runningCount} > 0 ]];then echo "docker restart 重启项目:${serverName}" docker restart ${serverName} exit 0fiserverCount=`docker ps -f status=exited -f status=created | grep -w ${serverName} |wc -l`;# 判断是否已经启动过,且端口为默认端口if [[ ${serverCount} > 0 ]];then if [[ ${serverCount} > 1 ]]; then echo "Error : 查找到多个 ${serverName} 容器,请手动启动" exit 1 else echo "docker start 启动项目:${serverName}" docker start ${serverName} fielse name=${imageName%%:*} tag=${imageName##*:} # 判断是否有该镜像 imageCount=`docker images | grep -w ${name} | wc -l`; if [[ ${imageCount} > 0 ]];then echo "docker run 第一次启动项目: ${imageName}" runServer else echo "Error : 还没有该镜像" exit 1 fifi将 gitlab-docker-restart.sh赋予执行权限: ...

April 28, 2019 · 2 min · jiezi

CentOS7搭建GitLab

官方中文教程https://www.gitlab.com.cn/ins... 环境要求:内存至少4G 一、 安装并配置必要的依赖关系在 CentOS 系统上,下面的命令将会打开系统防火墙 HTTP 和 SSH 的访问。 $ sudo yum install -y curl policycoreutils-python openssh-server$ sudo systemctl enable sshd$ sudo systemctl start sshd$ sudo firewall-cmd --permanent --add-service=http$ sudo systemctl reload firewalld安装 Postfix ,用来发送邮件,在安装 Postfix 的过程中选择 'Internet Site'。 $ sudo yum install postfix$ sudo systemctl enable postfix$ sudo systemctl start postfix也可以配置自定义的 SMTP 服务器。 二、 添加 GitLab 镜像仓库并安装gitlab-ce 是社区版,免费 gitlab-ee 是企业版,收费 2.1 使用官方镜像安装$ curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash$ sudo EXTERNAL_URL="http://gitlab.example.com" yum install -y gitlab-ce # 安装 GitLab2.2 使用国内镜像安装(推荐)如果提示连接超时,可以使用 清华大学开源软件镜像站:https://mirror.tuna.tsinghua....。进入该网站后,有详细的安装步骤,跟着安装即可。 ...

April 28, 2019 · 2 min · jiezi

浅谈 Gitflow

本文翻译自:https://www.infoq.com/article…原文作者:Victor Grazi , Bryan Gardner前言过去开发者花上几周或几个月开发完一个应用功能之后,他们需要进行合并代码的工作。这时候需要有专人,也许是版本管理员,把所有的新功能集成起来,解决代码冲突、然后准备发布新的版本。代码的合并总是让人担惊受怕,毕竟会伴随着不可预见的错误,这可能让我们一个挺好的应用变成了「集成地狱」。在 2000 年的时候,Kent Beck 发布了具有开创性的著作《Extreme Programming Explained》,其中提出了「持续集成」的概念,即开发人员需要每几个小时或最多一天内进行编译然后合并代码到主分支最后再运行自动化测试。说明:本文的项目是使用 Java 和 Maven,使用 GitLab CI 来执行脚本(Jenkins 和 GitHub CI plugin 也同样支持)。使用 Jira 来跟踪问题单,IntelliJ IDEA 作为 IDE,Nexus 作为仓库管理,Ansible 作为自动化部署工具。谈谈 GitflowGitflow 提倡使用 feature branches 模式来开发各个相互独立的功能,同时分成不同的分支以便进行集成和发布,如下图:作为 Git 使用者,我们应该对 master 分支已经不陌生了,它是 Git 初始化项目的时候默认创建的分支,是项目的主干。在使用 Gitflow 模式之前,你很可能会直接提交代码到 master 分支上。开始 Gitflow开始使用 Gitflow 之前,需要做一步一次性的初始化动作,就是从 master 分支上创建一个 develop 分支。自此,develop 分支将变成一个类似全能的分支,用来存放、测试所有的代码,同时也是主要是用来合并代码、集成功能的分支。作为一个开发人员,在这是不允许直接提交代码到 develop 分支上的,更更更不允许直接提交到 master 分支。master 分支代表的是一个「stable」的分支,包含的是已投产或即将投产的代码。如果一段代码在 master 分支上,即代表它已经投产或即将投产发布。develop 分支代表着「unstable」,它包含了需要编译并且需要测试通过的代码,甚至是没有完成的代码,所以称之为「unstable」。接下来将介绍我们是如何开展工作的:比如,当你被派到了一个 Jira 问题单,你需要立即从 delevop 分支上创建一个 feature 分支。在 feature 分支的命名规则上,我们约定以 「feat-」开头,后面跟上问题单编号。如「feat-SDLC-123-add-name-field」。以「feat-」开头,可以让 CI 服务器识别出这是一个 feature 分支,「SDLC-123」是我们 Jira 问题单的编号,可以链接到问题单,剩下的部分则是对该功能的简短的说明。这样,我们的开发工作就可以并行地开展,每个人都可以同时在各自的 feature 分支上开发,当我们持续的将功能 merge 到 develop 分支上后,我们可以大大减少变成「集成地狱」的可能。GitLab CI现在我们让团队更频繁的提交代码,那么,我们是怎么避免冲突呢?答案是使用 GitLab CI 来进行 build,我们将 GitLab CI 绑定到以「feat-」开头命名的分支即 feature 分支,在 feature 分支上执行 Maven verify (本地编译以及运行 tests),但不发布到 Nexus 仓库。GitLab CI 是通过项目根目录里的 .gitlab-ci.yml 文件进行配置,包含了 CI/CD 的各个步骤。这个功能的绝妙之处是它可以将运行脚本和代码提交进行绑定。如下是 GitLab CI 的配置例子,其中我们通过正则表达式来绑定了 feature 分支:feature-build: stage: build script: - mvn clean verify sonar:sonar only: - /^feat-\w+$/团队提倡频繁地提交代码,每次提交代码都会独立的运行 tests,以保证当前提交的代码不会影响到项目原有的任何其它功能。测试覆盖率接下来我们该讨论测试覆盖率,IntelliJ idea 自带 coverage 运行模式,允许运行测试代码检查测试覆盖率,会通过侧边栏粉色或绿色来标记是否被测试代码覆盖到。同时建议在 Maven 里添加测试覆盖率插件,如 jacoco,它可以在 GitLab CI 运行集成编译的时候生成报告。Maven 的 test 阶段执行单元测试,verify 阶段执行集成测试。建议安装 SonarQube 和 Maven SonarQube 插件来进行静态代码的分析和测试。这样,每一个 feature 分支的每一次提交都会执行上述所有的 test。集成工作回到 Gitflow,现在我们已经开发完了新功能,同时将代码提交到了 feature 分支,根据「持续集成」到思想,我们要求开发团队需要频繁地把代码从 feature 分支 merge 到 develop 分支上,要求频率最晚不超过一天。同时 GitLab 里内置了一个代码复查的机制,即发起一个 merge 请求后,我们必须复查完代码才可以将代码 merge 到 develop 分支上。根据不同的 SDLC(软件开发生命周期)要求,比如我们强制不同的且具有相关职责的开发人员进行代码复查,或者可以更简单点,开发人员自己复查自己的代码,这样起码鼓励了开发人员可以至少复查一下自己的代码,当然也很明显的增加了很多不靠谱的风险。最终,经过几天的努力,项目功能已经开发完毕,而且已经全部 merge 到 develop 分支上,并验证完毕,同时,其它几个功能也开发完毕也准备发布。记住此时我们只是在每一次的提交时进行了验证,并没有进行部署,如发布 SNAPSHOT 版本到 Nexus 仓库上,这是我们下一步将要做的。此时,我们在 develop 分支上新建一个 release 分支,然而与传统的 Gitflow 不同,新建的 release 分支是以版本号来命名,版本号命名规则可参考这里。如果 SNAPSHOT 版本的版本号是 1.2.1-SNAPSHOT,那么此次的 release 分支应该命名为 1.2.1。配置 GitLab CI配置 GitLab CI 使用正则表达式来识别一个 release 分支,同时执行相关的脚本。release-build: stage: build script: - mvn versions:set -DnewVersion=${CI_COMMIT_REF_NAME}-SNAPSHOT # now commit the version to the release branch - git add . - git commit -m “create snapshot [ci skip]” - git push # Deploy the binary to Nexus: - mvn deploy only: - /^\d+.\d+.\d+$/ except: - tags主要特别注意的是提交的时候需要加上 [ciskip] 防止新的提交再次触发 GitLab CI,从而进入死循环。Bugs在测试中,难免发现 bug,我们可以直接在 release 分支上修改,修改完后再 merge 到 develop 分支上(develop 分支包含的是已发布或者即将发布的代码)。发布最后, release 分支被验证通过,我们将会把它 merge 到 master 分支中。合并时,release 分支中的版本号还是 SNAPSHOT 版本,GitLab runner 会通过 Maven 版本插件将版本号后缀 SNAPSHOT 去掉,同时生成下一个 SNAPSHOT 版本号并发布到 Nexus。此时还会将其部署到 UAT 环境中进行测试,测试无问题后再部署到生产环境。相关的 CI 配置如下:master-branch-build: stage: build script: # Remove the -SNAPSHOT from the POM version - mvn versions:set -DremoveSnapshot # use the Maven help plugin to determine the version. Note the grep -v at the end, to prune out unwanted log lines. - export FINAL_VERSION=$(mvn –non-recursive help:evaluate -Dexpression=project.version | grep -v ‘[.’) # Stage and commit the binaries (again using [ci skip] in the comment to avoid cycles) - git add . - git commit -m “Create release version [ci skip]” # Tag the release - git tag -a ${FINAL_VERSION} -m “Create release version” - git push - mvn sonar:sonar deploy artifacts: paths: # list our binaries here for Ansible deployment in the master-branch-deploy stage - target/my-binaries-.jar only: - master master-branch-deploy: stage: deploy dependencies: - master-branch-build script: # “We would deploy artifacts (target/my-binaries-*.jar) here, using ansible only: - masterHotfixes还有一个必须说明的分支是 hotfixes 分支。这个分支是负责在生产环境上发现的问题,如 bug 或者性能问题等。 hotfixes 分支和 release 分支类似,都以 release 版本号命名,唯一的区别就是 hotfixes 是新建于 master 分支,release 分支则是从 develop 分支而来。hotfix 就是这样,和 release 一样,都会触发 Nexus SNAPSHOT 发布,然后部署到 UAT 环境。当一切都没问题验证通过后,需要再将它 merge 回 develop 分支,然后再 merge 到 master 以进行投产发布。Summary总结图表如下:以上就是 Gitflow 的特点,我们建议大家积极尝试文中所说的各种方法,可以带来如下一些优势:功能相互隔离。开发人员可以独立的变更功能,使得团队集成工作更加轻松,或者代码的合并加频繁。功能相互独立,在每个发布的新版本中可以挑选想要发布的功能,同时可以支持我们持续发布新的功能。更多、更合规的代码复查工作。自动化测试、部署和交付到各个环境。后记现在互联网公司都在讨论「持续交付」,如果你的团队每天都会发布很多版本,本文的方法估计不太适合你,如果你所在的是一个传统企业,如一些金融机构,在版本发布方面更加谨慎,那本文所介绍的分支管理、持续集成、自动化测试以及自动化部署等方面内容也许对你有所帮助。原文篇幅较长,只把主要部分翻译了过来,就当作抛砖引玉,要是感兴趣可以深入研究,如果发现译文存在错误或其他需要改进的地方,欢迎斧正。 ...

March 1, 2019 · 3 min · jiezi

GitLab 简易指引(三):备份与恢复

本文为[原创]文章,转载请标明出处。原文链接:https://weyunx.com/2019/01/30…原文出自微云的技术博客GitLab 的备份工作主要包含配置文件备份和应用备份。配置文件备份配置文件备份需要备份/etc/gitlab目录。# 压缩文件夹sudo sh -c ‘umask 0077; tar -cf $(date “+etc-gitlab-%s.tar”) -C / etc/gitlab’在crontab中创建定时任务sudo crontab -e -u root新增一条:# 每天1点执行0 1 * * * umask 0077; tar cfz /secret/gitlab/backups/$(date “+etc-gitlab-%s.tgz”) -C / etc/gitlab也可以将语句写成脚本,通过脚本执行,比如备份的共享目录里。强烈建议配置文件备份目录和应用备份目录分开!应用备份GitLab 的备份命令如下:# 本文的操作步骤仅适用于 Omnibus 一键安装方式安装的 GitLab,下同。sudo gitlab-rake gitlab:backup:create# 样例结果Dumping database tables:- Dumping table events… [DONE]- Dumping table issues… [DONE]- Dumping table keys… [DONE]- Dumping table merge_requests… [DONE]- Dumping table milestones… [DONE]- Dumping table namespaces… [DONE]- Dumping table notes… [DONE]- Dumping table projects… [DONE]- Dumping table protected_branches… [DONE]- Dumping table schema_migrations… [DONE]- Dumping table services… [DONE]- Dumping table snippets… [DONE]- Dumping table taggings… [DONE]- Dumping table tags… [DONE]- Dumping table users… [DONE]- Dumping table users_projects… [DONE]- Dumping table web_hooks… [DONE]- Dumping table wikis… [DONE]Dumping repositories:- Dumping repository abcd… [DONE]Creating backup archive: $TIMESTAMP_gitlab_backup.tar [DONE]Deleting tmp directories…[DONE]Deleting old backups… [SKIPPING]执行后,备份的tar包放置在默认的备份目录/var/opt/gitlab/backups 下。同样,我们可以编辑/etc/gitlab/gitlab.rb来修改默认的备份目录。# 默认的备份路径gitlab_rails[‘backup_path’] = ‘/mnt/backups’同样这里我们强烈建议双机备份,官网提供了将备份上传到云以及上传到 mount 共享文件夹下,这里介绍一下上传到共享文件夹下的配置。 比如我在本地 windows 环境下创建了一个共享文件夹gitlab_backups ,然后将文件夹挂载到服务器上:# 在根目录下创建文件夹mkdir gitlab_backups# 挂载mount -t cifs -o uid=996,gid=993,username=user,password=pass //22.189.30.101/gitlab_backups /gitlab_backups其中uid和gid是服务器上git用户的uid和gid,如果不加上很可能会报权限异常。user和pass就是你本地的用户名密码,后面的 ip 和目录就是本地的共享目录。挂载成功后修改配置: # 自动将备份文件上传 gitlab_rails[‘backup_upload_connection’] = { :provider => ‘Local’, :local_root => ‘/gitlab_backups’ } # 配置备份文件放至在挂载文件夹里的子目录名称,如果备份文件直接放至在挂载目录里,使用 ‘.’ gitlab_rails[‘backup_upload_remote_directory’] = ‘.‘修改完成后执行sudo gitlab-ctl reconfigure使配置生效,此时再执行备份命令则会自动将备份文件复制到挂载的共享目录里。同样,我们可以加到定时任务中:# 每天2点执行0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:createGitLab 恢复配置文件的恢复很简单,直接将备份文件替换,然后执行sudo gitlab-ctl reconfigure即可。下面说一下应用备份的恢复:首先是确认工作:You have installed the exact same version and type (CE/EE) of GitLab Omnibus with which the backup was created.You have run sudo gitlab-ctl reconfigure at least once.GitLab is running. If not, start it using sudo gitlab-ctl start.开始恢复:# 复制备份文件sudo cp 11493107454_2018_04_25_10.6.4-ce_gitlab_backup.tar /var/opt/gitlab/backups/# 权限变更sudo chown git.git /var/opt/gitlab/backups/11493107454_2018_04_25_10.6.4-ce_gitlab_backup.tar# 停止服务sudo gitlab-ctl stop unicornsudo gitlab-ctl stop sidekiq# 确认服务停止sudo gitlab-ctl status# 恢复sudo gitlab-rake gitlab:backup:restore BACKUP=1493107454_2018_04_25_10.6.4-ce# 重启和检查sudo gitlab-ctl restartsudo gitlab-rake gitlab:check SANITIZE=true(完)参考https://docs.gitlab.com.cn/ ...

February 27, 2019 · 2 min · jiezi

GitLab 简易指引(二):GitLab Runner 安装与配置

本文为[原创]文章,转载请标明出处。原文链接:https://weyunx.com/2019/01/23…原文出自微云的技术博客准备工作下载安装包# Linux x86-64sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64# Linux x86sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-386# Linux armsudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-arm如果是离线安装的话,可以手工联网下载,然后放到内网中,放到/usr/local/bin目录下,并命名为gitlab-runner# 赋予可执行权限sudo chmod +x /usr/local/bin/gitlab-runner# 创建 GitLab CI 用户sudo useradd –comment ‘GitLab Runner’ –create-home gitlab-runner –shell /bin/bash # 安装sudo gitlab-runner install –user=gitlab-runner –working-directory=/home/gitlab-runner# 运行sudo gitlab-runner start注册 Runner首先需要准备URL和Token,可以在 GitLab 项目的 settings->CI/CD->Runners settings 中找到# 注册sudo gitlab-runner register# 输入本地的 gitlab URLPlease enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )https://gitlab.com# 输入 TokenPlease enter the gitlab-ci token for this runnerxxx# 输入 tag, 注意要跟 job 的 tag 一致,后续详细说明Please enter the gitlab-ci tags for this runner (comma separated):my-tag,another-tag# 选择 executor, Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:docker使用 tagsRunner 默认只会在配置了和自身 tags 一致的项目上运行,是为了防止 Runner 运行在大量项目上出现问题。同时可以在 Runner 中取消该设置,允许 Runner 运行在无 tags 的项目上,配置如下Visit your project’s Settings ➔ CI/CDFind the Runner you wish and make sure it’s enabledClick the pencil buttonCheck the Run untagged jobs optionClick Save changes for the changes to take effectExecutor 比较ExecutorSSHShellVirtualBoxParallelsDockerKubernetesClean build environment for every build✗✗✓✓✓✓Migrate runner machine✗✗partialpartial✓✓Zero-configuration support for concurrent builds✗✗ (1)✓✓✓✓Complicated build environments✗✗ (2)✓ (3)✓ (3)✓✓Debugging build problemseasyeasyhardhardmediummediumIt’s possible, but in most cases it is problematic if the build uses services installed on the build machineIt requires to install all dependencies by handFor example using Vagrant具体详细可参考这里GitLab 中配置 Runner在 GitLab 项目中新增.gitlab-ci.yml ,可以选择预先设置好的模版。未完待续… ...

February 27, 2019 · 1 min · jiezi

gitlab命令行使用(基础篇)

git 是分布式代码管理工具,越来越多的企业使用它。所以掌握git的使用至关重要。它的远端管理是基于ssh,所以在使用远端git的时候需要进行ssh配置。 ssh是一种免密登录,使用的rsa非对称加密来进行服务器认证;一、git 的ssh配置如下首先你需要拥有gitlab或是github的一套账号,然后设置git的user name 和 user email:1、全局配置账号# git 全局设置账号git config –global user.name “your name"git config –global user.email “your e-mail"2、根据 user name 和 user email 生成自己的ssh密钥cd $USER cd .ssh #如果存在,需要备份可以备份下,如果不需要可以直接覆盖ssh-keygen -t rsa -C “your e-mail” #生成 ssh执行结果:最终得到 id_rsa 和 id_rsa.pub3、gitlab上面添加ssh密钥,使用文件 id_rsa.pub。打开https://gitlab.company.com/ ,使用自己账号登录,然后添加ssh密钥;主页头像 -> profile -> SSH Keys -> Add key将id_rsa.pub文件中的内容添加上去,然后点击Add key;4、测试 ssh 链接gitlab.company.comssh git@gitlab.company.com#会出现如下提示,说明链接成功The authenticity of host ‘gitlab.company.com (100.98.137.229)’ can’t be established.RSA key fingerprint is SHA256:WiQ1s8RKGjQpO0ICFY3NV2Hs0axwIbrv6j6q0XJsdsc.RSA key fingerprint is MD5:6c:8d:0f:09:31:c9:08:9b:67:48:09:7c:d9:46:65:3e.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added ‘gitlab.company.com,100.98.137.229’ (RSA) to the list of known hosts.PTY allocation request failed on channel 0Welcome to GitLab, your name!Connection to gitlab.company.com closed.二、git 的简单使用创建一个新的仓库git clone git@gitlab.company.com:yaoname/my-test-git-project.gitcd my-test-git-projecttouch README.mdgit add README.mdgit commit -m “add README"git push -u origin mastertouch .gitignorevi .gitignore #编辑git add .gitignoregit commit -m “add .gitignore"git push -u origin master本地仓库和远端仓库建立连接cd existing_foldergit initgit remote add origin git@gitlab.company.com:yourname/my-test-git-project.gitgit add .git commitgit push -u origin mastergit基本操作讲解The most commonly used git commands are: add Add file contents to the index bisect Find by binary search the change that introduced a bug branch List, create, or delete branches checkout Checkout a branch or paths to the working tree clone Clone a repository into a new directory commit Record changes to the repository diff Show changes between commits, commit and working tree, etc fetch Download objects and refs from another repository grep Print lines matching a pattern init Create an empty Git repository or reinitialize an existing one log Show commit logs merge Join two or more development histories together mv Move or rename a file, a directory, or a symlink pull Fetch from and merge with another repository or a local branch push Update remote refs along with associated objects rebase Forward-port local commits to the updated upstream head reset Reset current HEAD to the specified state rm Remove files from the working tree and from the index show Show various types of objects status Show the working tree status tag Create, list, delete or verify a tag object signed with GPG1、git 仓库初始化git init2、git 生成快照并且存入项目索引git add . #或 git add * 提交所有文件git add README.md #提交指定文件git add folder/ #提交某个文件夹下面的所有文件3、git 将项目多索引提交到本地仓库的当前分支下git commit -m ‘注解’ 4、git 将远端仓库信息更新到本地,并且merge到本地分支git pull origin master5、git 推送当前分支到远端分支git push origin master6、git 将远端仓库信息更新到本地,不合并到本地分支git fetch7、git 创建分支操作git branch -a #查看所有分支git branch –list #查看本地分支git branch feature/20181017.business.chao #创建分支git checkout feature/20181017.business.chao #切换分支#或直接创建并且切换git checkout -b feature/20181017.business01.chaogit push origin feature/20181017.business01.chao #推送到远端git pull origin feature/20181017.business01.chao #从远端拉取#删除git branch -d/-D feature/20181017.business01.chao #删除本地git push origin –delete feature/20181017.business01.chao #删除远端分8、git 查看当前分支的状态git status 9、git merge合并分支#当前分支 git checkout feature/20181017.business01.chaotouch 1.txtvi 1.txt # 编辑内容然后提交到远端git checkout git checkout feature/20181017.business.chaogit merge feature/20181017.business01.chao #合并本地分支10、git grep 查找当前分支文件中的内容git grep –text “test” #使用git grep -h 查看更多用法11、git diff 比较分支git diff master #比较两个分支的不同12、git log 查看commit记录git log -n 10 #查看最近10条提交记录13、git rm 删除文件以及索引touch 2.txtgit add 2.txtgit commit -m ‘add 2.txt’git rm 2.txt #删除已经提交到本地仓库的文件14、git tag 一般用来管理【里程碑】git checkout mastergit tag –list #查看所有标签git tag v1.0 #添加taggit tag –list ‘v1.*’ # 列出version为1的所有子版本15、git show 获取项目的详细信息git show #展示项目的各种类型commit eaa7f945204bed8f2b01d284d99fcf0b3ac3029eAuthor: chao <chao@yourcompany.com>Date: Wed Oct 17 06:16:26 2018 +0000 add READMEdiff –git a/README.md b/README.mdnew file mode 100644index 0000000..7088fed— /dev/null+++ b/README.md@@ -0,0 +1,5 @@++# this is repositry16、git rebase 重置当前的操作options,写的不错rebase详解git rebase branchName #消除本分支下面的commitgit rebase –continue #在rebase的过程中,也许会出现冲突(conflict). 在这种情况,Git会停止rebase并会让你去解决 冲突;在解决完冲突后,用"git-add"命令去更新这些内容的索引(index), 然后,你无需执行 git-commit,只要执行git rebase –abort #在任何时候,你可以用–abort参数来终止rebase的行动,并且"mywork” 分支会回到rebase开始前的状态17、git stash 储藏(临时保存到git栈中,独立于git分支管理之外。那个分支使用恢复到哪个分支就行了)#储藏使用名称和不使用名称保存未提交到仓库的(暂存和非暂存)git stash git stash save “stash-name-1”#变更统计git stash show#每次储藏git stash list#恢复到git版本管理中git stash pop #弹出栈#通过名字使用储藏git stash apply #删除git stash drop#清空git stash clear#直接使用stash创建分支git stash branch testbranch18、git revert 向前滚动的方式回滚,不会丢失源代码git revert commit_id 19、git reset 使用HEAD的状态的方式回滚,会丢失源代码git reset –hard HEAD^ #回退到上个版本git reset –hard HEAD~3 #回退到前3次提交之前,以此类推,回退到n次提交之前git reset –hard commit_id #退到/进到 指定commit的sha码git push origin HEAD –force #强推到远端,使用git push 推送推送失败20、git bisect 通过二进制搜索找到引入错误的更改git bisect start #开启查找git bisect good v2.6.18 git bisect bad master #查找报错的版本21、删除并忽略已经加入到git仓库的文件#查找到对应的文件find . -name .DS_Store -print0 | xargs -0 git rm -f –ignore-unmatch#加入git忽略echo .DS_Store >> ~/.gitignore#addgit add –all#提交忽略git commit -m ‘.DS_Store banished!’ ...

February 23, 2019 · 3 min · jiezi

The project you were looking for could not be found

gitlab remote: The project you were looking for could not be found. 错误git clone 新项目进行开发时一直报 remote: The project you were looking for could not be found. 原因就是 username的问题解决方案://把 username 更换为自己的 username????1:git clone http://username@rdc.nansongx.com/gitl.tttgit????2:git clone -b dev https://11XX6@rdc.nansongx.com/gitl.tttgit

February 21, 2019 · 1 min · jiezi

阿里云 ECS服务器(CentOS 7)安装和使用Gitlab教程

1、前言因本人创业需要,要建立一个Gitlab代码托管服务器方便团队人员使用,所以把相关过程记录下来分享给大家。2、准备工作我使用的是阿里云服务器ECS,系统是CentOS7.6,配置是 2核CPU 4GB内存,Gitlab官网推荐最低内存是4G。3、开始安装打开gitlab中文网安装地址,推荐Omnibus 包安装安装3.1 安装依赖包yum install -y curl policycoreutils-python openssh-serversystemctl enable sshdsystemctl start sshdfirewall-cmd –permanent –add-service=http(在aliyun ECS 安全规则组里面设置,这里可以不用设置)systemctl reload firewalld(同上)3.2 下载并执行安装gitlab的shell文件curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash3.3 设置自己的域名并且安装gitlab-eesudo EXTERNAL_URL=“http://gitlab.example.com” yum install -y gitlab-ee3.4 安装完成执行完上面几个步骤成功之后就可以访问gitlab了。如果你们发现80端口不能访问,就要看看是不是阿里云服务器的安全组规则有没有设置,如果没有设置一下就好,下面是我的安全组规则。3.5 免费申请阿里云SSL证书购买成功之后,配置好域名,我这里的域名是: gitlab.awbeci.com,设置好之后等待审核,审核成功之后选择nginx版本并下载证书下载完成之后是个.zip的压缩包,我们上传到服务器上,使用下面命令:scp your-cert.zip root@your-server-ip:/your-server-directory上传成功之后我们等待下一步操作。3.6 配置https打开官方文档配置https一节,执行下面命令编辑/etc/gitlab/gitlab.rb文件:vim /etc/gitlab/gitlab.rb把http域名换成https,如下:external_url “https://gitlab.example.com"编辑完成之后保存并退出,在/etc/gitlab下执行下面命令:# 创建ssl文件夹mkdir -p /etc/gitlab/ssl# 设置成可读chmod 700 /etc/gitlab/ssl# 把上一步的.zip证书解压并复制到ssl文件夹下unzip /root/your-cert-package.zip# 解压之后应该是两个文件.pem和.key(注意:要把.pem后缀文件改成.crt)cp your-cert.crt your-cert.key /etc/gitlab/ssl/设置好之后,重启gitlab,执行下面命令:gitlab-ctl reconfigure重启之后访问gitlab应该已经是https了。3.7、配置阿里云服务器邮件推送第一:新建域名,我新建的是system.awbeci.com第二:DNS解析第三:解析完成之后,验证通过。第四:新建发信地址第五:设置SMTP密码3.8 配置gitlab相关SMTP属性打开gitlab官方文档设置SMTP一节,还是编辑/etc/gitlab/gitlab.rb文件按照上面给出的设置设置成你自己刚才在阿里云邮件推送里面的配置,设置好之后重启gitlab:gitlab-ctl reconfigure刷新地址,然后我们注册一个用户,看看邮箱是否发送成功,我自己用新的邮箱注册了gitlab之后,到自己注册的邮箱下面看看确实发送成功了。这样我们安装gitlab就完美成功了,下面我们看看如果使用gitlab了4、使用搭建好的gitlab4.1 本地生成ssh密钥执行下面命令生成,如下:ssh-keygen -t rsa -C ‘your-register-gitlab-email’执行完成之后会出现两个文件:id_rsa_awbeci和id_rsa_awbeci.pub4.2 配置gitlab公钥把你生成好的id_rsa_awbeci.pub文件内容复制到上面并点击添加。4.3 测试是否添加正确因为我是多git用户,我使用了如github,gitee等等托管服务器,所以我要配置下.ssh文件夹下的config文件vim /Users/zhangwei/.ssh/config,如果你们不是多用户这步可省略。# gitlab.awbeci.comHost gitlab-awbeciHostName gitlab.awbeci.comUser your-nameIdentityFile /Users/zhangwei/.ssh/id_rsa_awbeci配置好之后,执行下面命令:ssh-add id_rsa_awbeci接着测试试试:☁ .ssh ssh -T git@gitlab.awbeci.comWelcome to GitLab, @zhangwei!☁ .ssh到此我们安装和配置gitlab ssh都成功完成,后面就是创建项目,添加代码了,这个就不做详细说明了,不明白的可以到网上百度看看如果使用git文章。5、总结:1)像我配置https和smtp都是参考官网的文档的,所以如果有问题及时到官网找找看2)我在成功安装好之后浏览gitlab.awbeci.com的时候不是跳转到登录页面而是到设置密码页面,刷新也不行,到现在都不知道怎么回事,是因为chrome的原因吗,我用firefox没这个问题3)如果你们有什么问题,可以加我QQ群:4646965506、参考GitLab Installation配置Https配置SMTP官方安装文档CentOS 7 下 GitLab安装部署教程如何将.pem转换为.crt和.key?阿里云GitLab的安装及使用 ...

January 17, 2019 · 1 min · jiezi

git常见问题解决

记录在开发过程中遇到的git问题,边解决问题边学习,常见的命令后续找时间再补充,尽量写一个完整的教程。git处理冲突当拉取下来的文件与本地修改的文件有冲突,先提交你的改变,或者先将你的改变暂时存储起来1、将本地修改存储起来git stash2、pull内容 git pull3、还原暂存的内容git stash pop stash@{0}也可以简写git stash pop参考:https://www.cnblogs.com/wteam…git另一个进程还在运行问题描述出现这种情况可能是git在执行的过程中,你中止之后异常,进程一直停留Another git process seems to be running in this repository, e.g.an editor opened by ‘git commit’. Please make sure all processesare terminated then try again. If it still fails, a git processmay have crashed in this repository earlier:remove the file manually to continue.问题原因因为进程的互斥,所以资源被上锁,但是由于进程突然崩溃,所以未来得及解锁,导致其他进程访问不了。问题解决打开隐藏文件夹选项,进入工作区文件目录的隐藏文件.git,把其中的index.lock问价删除掉

January 6, 2019 · 1 min · jiezi

gitlab 搭建

参考文档官方安装教程-ubuntugitlab 的组成nginx,内置 nginx web 服务器corns,版本控制的核心程序nginx 默认会监听 127.0.0.1:80 端口!corns 默认会监听 127.0.0.1:8081 端口!安装参考官网的下载教程,gitlab-ee 这个东西下载速度会很慢,请手动下载:百度/google搜索 gitlab-ee,或者请点击:gitlab-ee如果采用 gitlab-ee.deb 包,安装方法如下:dpkg -i gitlab-ee.deb外部访问地址external_url 这个应该是系统内使用的一个变量。如果不设置的话,可能会出现莫名其妙的错误。修改端口nginx 端口vim /etc/gitlab/gitlab.rb—-nginx[’listen_port’]=8081corns 端口vim /etc/gitlab/gitlab.rb—corns[‘port’] = 8081vim /var/opt/gitlab/gitlab-rails/etc/unicorn.rb—listen “127.0.0.1:8081” // 修改成其他的即可修改完成后,为了使配置文件生效,需要重新编译:gitlab-ctl reconfiguregitlab-ctl restart就可以查看效果了(编译较耗时,大概 3min)。扩展gitlab-ctl stop 停止gitlab-ctl restart 重启gitlab-ctl reconfigure 重新编译配置文件

December 26, 2018 · 1 min · jiezi