Ubuntu下Docker部署Gitlab CI

news2024/11/25 4:44:39

1. ubuntu gitlab安装步骤

1.1 更新系统软件包列表:

sudo apt update

1.2 安装必要的依赖项:

sudo apt install curl openssh-server ca-certificates tzdata perl

1.3 下载并安装 GitLab 包:

curl -LO https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh
sudo bash script.deb.sh
sudo apt install gitlab-ce

这将下载并安装 GitLab 社区版(GitLab CE)。

1.4 修改gitlab external_url

必须要修改,不然默认的是gitlab.example.com。到时候gitlab上项目的地址都是以这个域名开头的。
并且,如果拉去代码报错提示 “Could not resolve hostname gitlab.example.com: Name or service not known” 表示无法解析主机名 “gitlab.example.com”。这通常是由于 DNS 配置问题导致的。请修改gitlab配置文件的external_url。
查看ubuntu当前ip:

ifconfig

打开 GitLab 配置文件:
sudo vi /etc/gitlab/gitlab.rb
在文件中找到 external_url 行,可能以 # 开头注释掉了,您需要取消注释并修改该行。将 external_url 设置为您的本地 IP 地址,例如:
external_url ‘http://192.168.0.111’
保存文件并退出编辑器。
ip地址记得以http://开头 ,不然会报错:

GitLab external URL must include a schema and FQDN

1.5 配置 GitLab:

sudo gitlab-ctl reconfigure

这将运行 GitLab 的配置过程,并设置必要的参数。

1.6 访问 GitLab:

一旦配置完成,您可以在浏览器中访问您的 GitLab 实例。默认情况下,它将在 http:// 上运行。
如果您没有在 GitLab 配置文件中设置 external_url,则默认情况下 GitLab 使用的是 localhost(127.0.0.1)作为访问地址。这意味着您只能在 GitLab 所在的本地机器上访问它,无法通过其他计算机或浏览器访问。
注意:
如果您希望通过其他计算机或浏览器访问 GitLab,您需要将 external_url 设置为可被其他计算机访问的 IP 地址或域名。这样才能在其他计算机上通过浏览器打开 GitLab。

请注意,如果您使用的是云服务器或者在局域网中,您可能需要设置防火墙规则,确保 GitLab 所在的端口是开放的,允许来自其他计算机的访问。具体的操作会根据您的网络环境和安全需求有所不同。

如果您不进行配置更改,并且希望在本地浏览器中打开 GitLab,您可以尝试以下方法:

在 GitLab 所在的机器上打开浏览器,并访问 http://localhost 或 http://127.0.0.1。这样可以通过本地主机访问 GitLab。
如果您想从其他计算机上访问 GitLab,可以尝试使用 SSH 隧道或端口转发来将 GitLab 的端口映射到您的本地计算机。具体的方法会根据您的网络配置和需求有所不同,请参考相关文档或在线资源了解更多信息。
总之,为了能够从其他计算机或浏览器中访问 GitLab,您需要在 GitLab 配置文件中设置适当的 external_url,并确保网络配置和防火墙允许访问。

在第一次访问 GitLab 时,您需要设置管理员帐户的密码。完成后,您将能够使用管理员帐户登录到 GitLab。

默认情况下,管理员账号的用户名为 root。密码则在首次登录时由您自己设置。

到这里我就无语了,我的admin根本登录不上去。我第一次打开时,根本就没有说直接登录就是设置密码。没办法,只能新设置一个管理员账户了。

而我尝试过使用ChatGPT告诉我的重置管理员的账号密码的步骤,是说会给我的邮箱发送一个重置链接?扯淡!我都没有设置管理员邮箱呀。害,确实没有设置初始的管理员账号和密码,被ChatGPT玩了。不过没事,可以创建新的管理员账户。
不过除了给邮箱发送重置链接来重置密码:

sudo gitlab-rails console -e production

user = User.find_by_username('root')
user.send_reset_password_instructions

exit

(试过不行)
也可以试试重置管理员账号的方法:
打开终端,并以管理员权限运行以下命令

sudo gitlab-rails console

在控制台中,输入以下命令重置密码

user = User.where(id: 1).first
user.password = 'new_password'
user.password_confirmation = 'new_password'
user.save!

将 new_password 替换为您希望设置的新密码。

退出控制台:

exit

(没试过)

1.6.1 创建管理员账户

在终端中运行以下命令以获得 root 用户的特权

sudo gitlab-rails console -e production

在 Rails 控制台中,输入以下命令以创建一个新的管理员账户:

user = User.new(name: 'Administrator', username: 'admin', email: 'admin@example.com', password: 'your_password', password_confirmation: 'your_password', admin: true, skip_confirmation: true)
user.save!

请确保将 ‘your_password’ 替换为您想要设置的实际密码。
如果user输出nil,代表改用户不存在。

您可以尝试通过以下命令来查找所有的管理员账户及其用户名:

admins = User.where(admin: true)
admins.each do |admin|
  puts admin.username
end

输入以下命令来获取所有用户的列表:

users = User.all
users.each do |user|
  puts "Username: #{user.username}, Name: #{user.name}, Email: #{user.email}"
end

在 Rails 控制台中,输入以下命令来获取 root 账户的信息,包括注册邮箱:

user = User.find_by_username('root')
user.email

可以使用以下命令修改 admin 账户的邮箱

user.email = 'new_email@example.com'
user.save

退出 Rails 控制台,输入以下命令退出:

exit

现在,您应该能够使用刚创建的管理员账户登录到 GitLab。

要删除 GitLab 中的普通用户账户,请按照以下步骤进行操作:

sudo gitlab-rails console -e production
user = User.find_by(username: 'username')
user.destroy
exit

有管理员或具有适当权限的用户才能删除其他用户账户。

2. 安装Docker

2.1 更新软件包列表。打开终端并运行以下命令

sudo apt update

2.2 安装 Docker 的依赖包,以及使用 HTTPS 传输的软件包。运行以下命令

sudo apt install apt-transport-https ca-certificates curl software-properties-common

2.3 添加 Docker 的官方 GPG 密钥。运行以下命令

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

2.4 添加 Docker 的软件包仓库

根据您的 Ubuntu 版本选择以下命令之一运行:
对于 Ubuntu 20.04:

echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu focal stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

对于 Ubuntu 18.04:

echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu bionic stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

2.5 更新软件包列表。运行以下命令

sudo apt update

2.6 安装 Docker

运行以下命令

sudo apt install docker-ce docker-ce-cli containerd.io

2.7 验证 Docker 安装是否成功

sudo docker run hello-world

如果 Docker 正确安装并运行,将输出 “Hello from Docker!” 相关的消息。
现在,您已经在 Ubuntu 中成功安装了 Docker。您可以使用 Docker 命令管理和运行容器化应用程序。请注意,执行 Docker 命令可能需要使用 sudo 或将当前用户添加到 docker 用户组中,以便以非管理员权限运行 Docker 命令。

3. 使用Docker部署Gitlab CI Runner

安装 GitLab Runner 是在 Ubuntu 中运行 CI/CD 作业的一种方式。

runner要正常跑起来,是需要在android 项目根目录下创建 .gitlab-ci.yml 配置文件,开始我傻傻的发现 runner 怎么也跑不急来。后来才记起来公司项目是有这么个玩意的。(公司没有给我配置admin权限,没发学runner相关的东西,所以自己搞一套玩玩)

3.1 拉去镜像

docker pull gitlab/gitlab-runner:latest

3.2 启动gitlab-runner容器

docker run -d --name gitlab-runner --restart always  -v /var/run/docker.sock:/var/run/docker.sock  -v /srv/gitlab-runner/config:/etc/gitlab-runner  gitlab/gitlab-runner:latest

3.3 为项目注册runner

在Gitlab中打开项目->setting->CI/CD->找到Runners点击Expand,找到runner ,复制其中的token:
在这里插入图片描述

执行注册命令:

docker exec -it gitlab-runner gitlab-ci-multi-runner register
  1. GitLab URL: 您需要提供 GitLab 的 URL 地址。例如,https://gitlab.example.com
  2. token输入第一步中Runners查看到的信息
  3. description输入runner的描述,自己看着输
    4 tags输入runner的标签(这个在构建文件中要用到)
  4. Docker image当executor为docker时需要指定docker使用的镜像名称: docker:latest
  5. Executor Type: 您需要选择 GitLab Runner 的执行器类型。常用的选项有 “shell” 和 “docker”。我们选择 “docker”。
    如果选择 “docker”,GitLab Runner 将在 Docker 容器中执行作业。
    请根据您的需求选择适当的执行器类型。

注册成功后在Runners下面会显示刚刚注册成功的runner信息,在这里也可以禁用和删除runner 。

3.4 .gitlab-ci.yml Runner 配置文件

gitlab-runner配置文件:
.gitlab-ci.yml

https://about.gitlab.com/blog/2018/10/24/setting-up-gitlab-ci-for-android-projects/

CI/CD 示例,可以看看官网的。
如果要自己定制更详细的runner,需要看看配置文件应该怎么写才行。
一些关键字介绍

参考步骤:https://blog.csdn.net/qinjm8888/article/details/109355888

4. SSH Key

拉去代码需要往gitlab中添加开发者的 ssh 公钥的。
查看 ssh 公钥:

ls ~/.ssh
cat ~/.ssh/id_rsa.pub

查看私钥文件的内容

cat ~/.ssh/id_rsa

如果您没有 SSH 密钥文件,可以使用以下命令生成新的 SSH 密钥对:

在这里插入代码片

如果没有 SSH 的话,需要生成:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

5. 其他报错

5.1 gitlab runner报错: This job is stuck because the project doesn’t have any runners online assigned to it

我这里是因为没有配置 .gitlab_ci.yml 文件导致,按照上面的步骤新建一个配置文件就行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/571385.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Springboot2.5.x版本之自动创建(H2/DERBY/HSQL)数据源源码分析-yellowcong

场景:当我们没有配置mysql,postgresql等数据源的时候,pom.xml里面引入了H2/DERBY/HSQL jar包,也没有配置连接,却有数据源创建的情况。 springboot启动的第一步 1.DataSourceAutoConfiguration 配置类启动 2.DataSource…

DolphinScheduler远程启动任务

我本地有JAVA程序,需要调用DolphinScheduler的接口启动任务,动态去调用 1、DolphinScheduler的内容逻辑关系 先明确DolphinScheduler内部任务的逻辑关系 项目 |——工作流 |——任务(节点) 我起的是工作流,一个任务完…

Transformer仅有自注意力还不够?微软联合巴斯大学提出频域混合注意力SpectFormer

本文介绍一篇来自英国巴斯大学(University of Bath)与微软合作完成的工作,研究者从频率域角度入手探究视觉Transformer结构中的频域注意力和多头注意力在视觉任务中各自扮演的作用。 论文链接: https://arxiv.org/abs/2304.06446 …

为什么都说测试岗是巨坑,趁早跳出去?10年测试人告诉你千万别上当了...

每次都有人问我软件测试的前景是什么样的,每年也会有人很多人纷纷涌入测试的岗位上,希望自己能够进入阿里、华为等大厂。 但是测试岗位真的那么吃香吗?今天我结合从零基础小白到测试开发的成长经历,来说下这个行业的发展前景&…

vmware安装debian 11.7.0 配置LVM

vmware安装debian 11.7.0 配置LVM 1、下载镜像2、创建并安装debian 11虚拟机2.1、选择 Graphical install2.2、选择安装过程显示语言和系统语言2.3、选择地区2.4、键盘映射2.5、设置主机名-debian2.6、设置网络-直接跳过2.7、设置root密码2.8、创建普通账户2.9、为普通账户设置…

【论文阅读】Modeling of Bitcoin’s Blockchain Delivery Network

文章目录 摘要一、引言二、相关工作A. BTC 网络的测量报告B. 业务概况对 BTC 网络的影响C. 数据分布算法 三、节点连接性、RTT 和块大小A. 建模节点连接B. 建模往返时间 (RTT)C. 建模区块和交易传输时间 四、数据分发和传播五、交易费率和块费率六、分布式网络的排队模型A. 区块…

C++ 中 switch 的性能优化

问题 有这样一段代码&#xff0c;编译器会傻傻地做多次 compare 来找到对应分支吗&#xff1f; #include <stdio.h> #include <stdlib.h> int func(int i) {return (long)(&i) i rand(); }int test(int flag) {int i 0;switch (flag) {case 0:i func(i);…

软件设计师 试题六零基础做题方法分解

接口要实现implements&#xff0c;父类要继承extends 做题技巧&#xff1a;如果在接口下的代码可以不写public 接口后面有个代码&#xff0c;在下面代码中一定有implements对他实现&#xff0c;接口下面是抽象方法也就是函数的实现&#xff0c;具体的实现再类中&#xff0c; 就…

Spring的Bean的生命周期

Spring的Bean的生命周期 Spring的Bean的生命周期 Spring的Bean的生命周期 Spring的Bean的生命周期包括以下阶段&#xff1a; &#xff08;1&#xff09;实例化Instantiation&#xff08;2&#xff09;填充属性Populate properties&#xff08;3&#xff09;处理Aware接口的回调…

华为OD机试真题 Java 实现【查找充电设备组合】【2023Q1 100分】

一、题目描述 某个充电站&#xff0c;可提供n个充电设备&#xff0c;每个充电设备均有对应的输出功率。任意个充电设备组合的输出功率总和&#xff0c;均构成功率集合P的1个元素。功率集合P的最优元素&#xff0c;表示最接近充电站最大输出功率p_max的元素。 二、输入描述 输…

( 链表) 203. 移除链表元素 ——【Leetcode每日一题】

❓203. 移除链表元素 难度&#xff1a;简单 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,6,3,4,5,6], val 6 输出&#xff1a;[1…

探秘 | 如何分辨内网和外网?

目录 &#x1f4a1; 什么是外网IP、内网IP&#xff1f; &#x1f4a1; 对于自有路由器上网的用户&#xff0c;可以这样理解外网IP、内网IP &#x1f4a1; 几个大家经常会问的问题 什么是外网IP、内网IP&#xff1f;很多用户都有一个疑惑&#xff0c;如果不使用路由器拨号上网…

一则历史:为什么网络路径前加一个盘符还能正常工作

有一个比较知名的奇异特性&#xff1a;文件系统在解析 UNC(Universal Naming Convention) 路径时&#xff0c;会故意忽略掉最前面添加的盘符字母。 举个例子&#xff0c;假设服务器上有一个共享文件夹&#xff0c;其路径为&#xff1a;\\server\share\directory&#xff0c;如果…

【网络】HTTP

在上面的文章中&#xff0c;我们学习了网络的基础&#xff0c;和网络中一个伟大的标准 OSI 7层模型。通过上篇文章&#xff0c;我们可以知道网络模型最上层为应用层&#xff0c;那么这篇文章就让我们来一起看一下&#xff0c;我们开发过程中绕不开的一个非常著名的应用层协议&a…

FANUC机器人CC-Link总线通信相关配置的具体方法和步骤详解

FANUC机器人CC-Link总线通信相关配置的具体方法和步骤详解 1. 基本说明 2. 采用CC-Link通信的前提条件 机器人需要安装软件:CC-link Interface(Slave) A05B-*-J786 机器人需要安装硬件通信板卡:CC-Link Remote Device Station PCB A05B- * -J110 通信板卡的安装步骤:

第八章 模块

内容框架 8.1 模块介绍 引入模块 import 模块名 通过一句话&#xff0c;计算机就在指定的位置找到了模块文件&#xff0c;并准备好该文件拥有之后会用到的函数和属性。 引入模块本质上就是在一个python文件中引入另一个python文件 引入模块在文档中还可以设置别名&#xff1a;…

没有权限merge到源git仓库?一招教你如何解决。

在git上贡献项目的时候&#xff0c;一般步骤是&#xff0c;clone源项目到本地&#xff0c;切出一个新的分支&#xff0c;然后在新分支上开发&#xff0c;最后push到远程&#xff0c;然后提出mr。但是对于一些非开源的项目&#xff0c;可能会出现&#xff1a; 这就是说明没有权…

mp4是什么格式?如何录制mp4格式的视频?

案例&#xff1a;怎样录制mp4格式的视频&#xff1f; 【我发现网上大部分视频都是mp4格式&#xff0c;我也想在电脑上录制mp4格式的视频。有没有小伙伴知道录制的方法&#xff1f;】 日常生活中&#xff0c;mp4格式已经成为了我们最常用的视频格式之一。它具有高质量、高压缩…

chatgpt赋能python:Python主进程:一步步了解Python中最重要的进程

Python主进程: 一步步了解Python中最重要的进程 在Python编程中&#xff0c;进程是非常重要的一个概念。Python主进程是Python程序在启动的时候默认创建的一个进程&#xff0c;它是整个程序的核心。在使用Python进行开发的时候&#xff0c;了解Python主进程的概念和功能是非常…

gitlab搭建与认证登录

gitlab搭建与认证登录 gitlab的安装配置gitlab中Ldap认证配置 gitlab的安装配置 参考链接&#xff1a; Gitlab 仓库搭建&#xff08;详细版&#xff09; 以下4项注意点&#xff1a; gitlab安装包&#xff0c;直接访问在浏览器上下载速度很慢&#xff0c;可复制链接到迅雷中进…