最近在搞gitlab 的环境以及 配套的自动化相关的一些尝试,记录一下。
为了进行最近的实验,我特意开了一台虚拟机,使用的是dell R720XD 服务器配合 exsi 虚拟化了一台 ubuntu 18.04 配置如下

0. 安装 gitlab

服务器的安装部分网上很多教程 就不去班门弄斧了,链接如下:

https://www.cnblogs.com/hgzero/p/14088215.html

1. 简单的登录测试一下服务器

从gitee 拉了一个项目做测试,随便挑了一个

然后使用 将工程克隆岛 新开的服务器上 然后是 使用vscode + remote-ssh 登录服务器 进行代码编辑。

jeason@jeason-virtual-machine:~$ ls
gitlab-ce_12.10.9-ce.0_amd64.deb  gitlab-runner-linux-amd64  snap  soem_-imx6ull  sonarqube-7.6  sonarqube-7.6.zip  test
jeason@jeason-virtual-machine:~$ cd test/spdlog_dyn/
jeason@jeason-virtual-machine:~/test/spdlog_dyn$ ls
1.sh  builds  cleanup.sh  CMakeLists.txt  help.txt  log.txt  main.cpp  prepare.sh  README.md  run.sh  spdlog
jeason@jeason-virtual-machine:~/test/spdlog_dyn$ pwd
/home/jeason/test/spdlog_dyn
jeason@jeason-virtual-machine:~/test/spdlog_dyn$

2. 配置 gitlab-runner

我一共使用过两种方案 一种是直接下载gitlab-runner 然后执行 运行的方法,另外的一种方法就是使用docker 然后去运行,这两种方法没什么本质的区别 docker 貌似更专业一些,但是指令上会稍微的复杂一点点。

2.1 获得工程的 runner 的 url 和 token


因为我只有工程的 owner 权限 不知道其他用户能不能看到 这个界面普通的 developer 权限应该是看不到的!

总之就是要拿到 项目的 url 和 token 这样就可以去配置服务器上的runner 了。
这里需要说明的一点就是 gitlab-runner 和 gitlab的服务器没必要在一个服务器上 理论上只要runner 能通过网络访问到 gitlab服务器就可以了

2.2 根据配置文件 启动 gitlab-runner

我这里就直接贴 我自己的地址和token了, 我是在自己的内网中搭建的环境并且 没有对外网开放,所以很安全。
下面的执行文件 gitlab-runner-linux-amd64 是我直接在gitlab 的官网下载的 地址是:

https://gitlab-runner-downloads.s3.amazonaws.com/latest/index.html

在下面的 文字中大量的引用了 以下文章的内容:

https://zhuanlan.zhihu.com/p/184936276

我的 runner 启动命令是:

sudo ~/gitlab-runner-linux-amd64  register -n \--url http://192.168.1.16/ \--registration-token iVmhZYWbZNyZkAoz_id3 \--executor shell \--description "bcm-executor"

对于命令的解释:

sudo                        # 给权限 好办事。。。  不给好像也能用
gitlab-runner-linux-amd64   # 下载下来的可执行文件原型
--url http://192.168.1.16/  # 这一对参数是指明你的git 工程是托管在哪一个服务器上的
--registration-token iVmhZYWbZNyZkAoz_id3 # 口令 证明你有这个工程的权限
--executor shell            # 指定你的 runner 的执行环境 shell 应该是最简单的
--description "bcm-executor"# 描述信息, 没啥大用处

关于executor

https://zhuanlan.zhihu.com/p/184936276
以下是我注册 我的 runner的过程,

jeason@jeason-virtual-machine:~/test/spdlog_dyn$ sudo ~/gitlab-runner-linux-amd64  register -n \
>     --url http://192.168.1.16/ \
>     --registration-token iVmhZYWbZNyZkAoz_id3 \
>     --executor shell \
>     --description "bcm-executor"
[sudo] password for jeason:
Runtime platform                                    arch=amd64 os=linux pid=33628 revision=c6e7e194 version=14.8.2
Running in system-mode.Registering runner... succeeded                     runner=iVmhZYWb
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
jeason@jeason-virtual-machine:~/test/spdlog_dyn$ sudo ~/gitlab-runner-linux-amd64  verify &
[3] 33795
jeason@jeason-virtual-machine:~/test/spdlog_dyn$ Runtime platform                                    arch=amd64 os=linux pid=33796 revision=c6e7e194 version=14.8.2
Running in system-mode.ERROR: Verifying runner... is removed               runner=KtyorMWG
ERROR: Verifying runner... is removed               runner=UE5zdh7N
Verifying runner... is alive                        runner=Af6ryCUd
Verifying runner... is alive                        runner=u6iirFBV
FATAL: Failed to verify runners[3]   Exit 1                  sudo ~/gitlab-runner-linux-amd64 verify
jeason@jeason-virtual-machine:~/test/spdlog_dyn$
jeason@jeason-virtual-machine:~/test/spdlog_dyn$
jeason@jeason-virtual-machine:~/test/spdlog_dyn$

操作完之后可以看到 我的runner 已经被gitlab 发现了。

2.3 编写yml 文件 简单测试runner的功能

stages: # 分段# - install#- eslint- build- deploy# cache: # 缓存
#   paths:
#     - node_modules
#     - build# install-job:
#   tags:
#     - sss
#   stage: install
#   script:
#     - npm install# eslint-job:
#   tags:
#     - sss
#   stage: eslint
#   script:
#     - npm run eslintbuild-job:tags:- sssstage: buildscript:- echo "$(date) build" >> /home/jeason/test/spdlog_dyn/log.txtdeploy-job:tags:- sssstage: deployscript:- echo "$(date) deploy" >> /home/jeason/test/spdlog_dyn/log.txt

上述的内容命名为 .gitlab-ci.yml 并且上传到gitlab 然后就可以发现 我本地的 log.txt被写入了信息

更多的功能还待解锁。 我大致能想到的就是 可以实现一个自动发布的功能 ,每次提交之后,编译并且打包 然后自动推送到公司内部的共享盘。

后续有想法给代码进行一些简单的测试,例如 打包完之后 运行docker 然后运行qemu 仿真我们的产品运行,进而 快速的连续的测试一些接口,但是这部分的工作量可能会很大!
最近部分老大搞定了 qemu虚拟我们自己的产品,这个我也很感兴趣,等我玩会了 也要整理一下!

参考资料:
《Gitlab的安装及使用》
https://www.cnblogs.com/hgzero/p/14088215.html
《Gitlab-ci:从零开始的前端自动化部署》
https://www.cnblogs.com/hgzero/p/14088215.html
《基于 GitLab CI/CD 的自动化构建、发布实践》
https://blog.csdn.net/qq_36737839/article/details/113694367
《Install GitLab Runner manually on GNU/Linux》
https://docs.gitlab.com/runner/install/linux-manually.html今天其实还看了一个 代码的自动审查工具,但是没了解多少东西,改天整理一下,以下的暂时没用到
《SonarQube下载、安装、使用》
https://www.jianshu.com/p/4d9d2534c0d3

嵌入式linux学习笔记--gitlab学习笔记-gitlab-runnner简单的使用介绍相关推荐

  1. 嵌入式Linux驱动开发【学习小结】

    文章目录 前言 一.嵌入式Linux驱动程序和单片机裸奔有啥区别? 二.为什么需要嵌入式Linux驱动开发 三.驱动程序框架大致演变过程 总结 前言 随着去嵌入式设备资源不断丰富,主频不断升高,搭载操 ...

  2. 【嵌入式linux】imx6ul中断学习笔记

    imx6ul中断处理过程 1.中断号 2.中断服务函数 3.注册中断函数 4.总结 1.中断号   当中断发生时,程序根据启动文件最前面的中断向量表跳转至相应的中断执行位置. _start:ldr p ...

  3. 嵌入式Linux——网卡驱动(2):网卡DM9000C传输层次介绍

    本文中是看过一些文章后所写,而且可能很多内容都是来自这几篇文章,下面我将我所参考的文章放在下面:     网卡 搭建新通道 DM9000芯片 ARP协议实现 DM9000网卡芯片驱动的预备知识:MAC ...

  4. Linux C 应用编程学习笔记——(1)应用编程概念

    <[正点原子]I.MX6U嵌入式Linux C应用编程指南>学习笔记 系统调用 由操作系统实现提供的所有系统调用所构成的集合即程序接口或应用编程接口(Application Program ...

  5. 嵌入式Linux学习入门

    大四毕业了,签了一份嵌入式开发的工作,现在准备入门了,搜集一些要学习的内容. 嵌入式开发学习路线 51单片机,arm,stm32在单片机上 在单片机上编程c语言和在嵌入式系统写c语言,有很大不同 gc ...

  6. 嵌入式linux学习步骤

    <一> 1.Linux 基础 安装Linux操作系统 Linux文件系统 Linux常用命令 Linux启动过程详解 熟悉Linux服务能够独立安装Linux操作系统 能够熟练使用Linu ...

  7. 【嵌入式Linux】嵌入式Linux驱动开发基础知识之设备树模型

    文章目录 前言 1.设备树的作用 2.设备树的语法 2.1.设备树的逻辑图和dts文件.dtb文件 2.1.1.1Devicetree格式 1DTS文件的格式 node的格式 properties的格 ...

  8. 嵌入式linux编译环境搭建,嵌入式Linux开发环境搭建

    整理下嵌入式Linux开发环境搭建过程笔记. 一.制作u-boot.bin文件: tar xjf u-boot-1.1.6.tar.bz2 cd u-boot-1.1.6 patch -p1 < ...

  9. 华清远见嵌入式Linux就业培训班

    ● 课程目标 4 招生简章     通过本课程的系统学习,可以使学员由浅入深地对嵌入式Linux系统全面学习,能够独立胜任嵌入式Linux应用开发.系统开发.驱动开发等多方面工作.课程目标包括:    ...

  10. 单片机转嵌入式Linux的思考

    一.你真的决定要转嵌入式Linux吗? 要不要从单片机转嵌入式Linux是一个影响到职业发展的严肃决策,火哥不能帮你拿主意,只能帮你列出利弊,你需要根据自身的各种环境(比如所在城市Linux嵌入式相关 ...

最新文章

  1. [JAVA EE]Spring Boot 控制层:参数传递方法
  2. 2020 年了,深度学习接下来到底该怎么走?
  3. Leetcode 347. 前K个高频元素 解题思路及C++实现
  4. Struts2_中文问题
  5. 二分类神经网络的特征光谱---1-2至1-9
  6. C语言中文件定位函数总结
  7. 思科VPP 20.05 dpdk node源码分析
  8. 如何在Outlook 2003和OWA中允许接受EXE附件
  9. 小顶堆时间复杂度_时间轮算法以及时间轮在Netty和Kafka中的应用的
  10. 基于stm32单片机外文文献_(强烈推荐)基于stm32的温度控制毕业论文设计
  11. python 图标字体_使用nerd-font/font-patcher为字体添加字体图标
  12. wifi修复记录(8个方法)
  13. C语言实现连接MySQL服务器CURD
  14. r语言赋值为na_R语言中特殊值NaN、Inf 、NA、NULL
  15. 防止PayPal帐号冻结和解冻的经验
  16. TIA博途_基于SCL语言制作模拟量输入输出全局库的具体方法
  17. 2012二级c语言上机,2012全国计算机等级考试-二级C语言-上机考试-填空题-分类总结...
  18. mysql更改密码后需要重启吗,mysql忘记密码真的需要重启服务吗?
  19. 用python爬取中国土地市场网上的土地出让公告所有标题
  20. jenkins内部分享ppt

热门文章

  1. 利用第三方服务平台实现简单的短信验证功能
  2. 仿雷电——飞机大战类游戏Ⅰ
  3. java通过调用鼠标模拟自动添加微信好友
  4. MatchNet: Unifying Feature and Metric Learning for Patch-Based Matching
  5. 大脑的终极秘密——从狮子也有意识谈起
  6. (详细思路)利用py批量下载某站的视频
  7. 电脑分屏没有声音_Win10笔记本增加双屏显示器及解决没有声音的问题
  8. android仿微信图片编辑库,Android仿微信图片选择器
  9. 178685-33-1,Azide-PEG3-Tos叠氮化物(N3)基团通过点击化学与炔烃、BCN、DBCO反应
  10. webshell、一句话木马的权限问题