前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >如何在MacBook上搭建GitLab

如何在MacBook上搭建GitLab

作者头像
用户11547645
发布2025-03-07 15:59:24
发布2025-03-07 15:59:24
5900
代码可运行
举报
文章被收录于专栏:萝卜要加油萝卜要加油
运行总次数:0
代码可运行

最近想要系统的学习一下基础设施方面的知识,所以准备搭建一个学习环境,我没有多余的机器使用,只有一个MacBook Pro 2021 ,所以选择在笔记本上使用 Docker 搭建一套环境,目前看来第一步还是顺利的。

安装 GitLab

Mac 的M1芯片使用的是ARM架构,所以我们去寻找 ARM架构的镜像, 我是用的是yrzr/gitlab-ce-arm64v8:latest

首先需要创建 gitlab-ce 的三个工作目录 etc、 log、 opt ,不然会报错。 将volumes里面的配置修改成你的工作目录就可以了。这里暴露了两个端口9922、9980 因为是在本地使用,所以就没开放https的443 端口,后面也不准备使用https。 docker-compose.yaml

代码语言:javascript
代码运行次数:0
复制
version: "3.8"
services:
  gitlab-ce:
    image: yrzr/gitlab-ce-arm64v8:latest
    container_name: gitlab-ce
    privileged: true
    restart: always
    ports:
      - "9922:22"
      - "9980:9980"
    volumes:
      - /Users/hxzhouh/tools/gitlab/etc:/etc/gitlab:z
      - /Users/hxzhouh/tools/gitlab/log:/var/log/gitlab:z
      - /Users/hxzhouh/tools/gitlab/opt:/var/opt/gitlab:z
    deploy:
      resources:
        limits:
          memory: 4096M
    tty: true
    stdin_open: true

这里需要注意的是,我们对外暴露的端口是9980,因为我们后面会配置 gitlab 的http 端口运行在9980 而不是 默认的80 ,这样做,是为了避免这个问题: https://stackoverflow.com/questions/66961517/gitlab-http-clone-url-is-wrong-port-8022-missing

等待docker 被拉起来,然后进入gitlab-ce 里面修改 配置 /etc/gitlab/gitlab.rb

代码语言:javascript
代码运行次数:0
复制
docker exec -it gitlab-ce /bin/bash
vi /etc/gitlab/gitlab.rb

在最后添加三行,保存退出。

代码语言:javascript
代码运行次数:0
复制
external_url 'http://127.0.0.1:9980'
gitlab_rails['gitlab_ssh_host'] = '127.0.0.1'
gitlab_rails['gitlab_shell_ssh_port'] = 9922

然后修改默认密码

代码语言:javascript
代码运行次数:0
复制
gitlab-rails console -e production
user = User.where(id: 1).first
user.password = 'AIl+mVN(:bk\#5%c'
user.save!

最后在执行reload 操作,然后重启

代码语言:javascript
代码运行次数:0
复制
gitlab-ctl reconfigure
gitlab-ctl restart

稍等片刻。 然后 浏览器输入127.0.0.1:9980 就可以打开gitlab-ce了,默认的root 账号密码就是我们刚刚修改的密码。

添加ssh

跟使用GitHub一样,我们先创建一个ssh 密钥对, 然后将公钥添加到 GitLab里面。在本地 ~/.ssh/config 里面添加配置

代码语言:javascript
代码运行次数:0
复制
Host 127.0.0.1
HostName 127.0.0.1
Port 9922
IdentityFile ~/.ssh/ssh
PreferredAuthentications publickey
User root

测试一下

代码语言:javascript
代码运行次数:0
复制
➜  .ssh ssh -T git@127.0.0.1
Welcome to GitLab, @root!

ssh 是没有问题的。

尝试新建一个项目

创建成功,在本地将代码拉下来。

代码语言:javascript
代码运行次数:0
复制
git clone ssh://git@127.0.0.1:9922/root/hello-world.git

ssh 推送也是没有问题的

代码语言:javascript
代码运行次数:0
复制
➜  hello-world git:(main) git push origin --force
To ssh://127.0.0.1:9922/root/hello-world.git
   b4dd724..e45f213  main -> main

Gitlab Runners 配置

在setting -> CI/CD -> Runners 点击 ...,然后 根据 ‘Show runner installation and registration instructions’ 文档 安装 runners

我这里输入的命令是:

代码语言:javascript
代码运行次数:0
复制
sudo curl --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-darwin-arm64
sudo chmod +x /usr/local/bin/gitlab-runner
gitlab-runner install
gitlab-runner start
gitlab-runner register --url http://127.0.0.1:9980 --registration-token GR13489416KQ-jitR3JhfMgr8f-9G

有几个关键点需要注意

  1. Enter tags for the runner (comma-separated):
    1. GitLab是用 tag来管理runner 的,最好是一个runner做一件事情,用tag 标记,写.gitlab.ci.yml 的时候需要指定tags
  2. Enter an executor
    1. executor 有很多种,我这里为了演示,选择了shell

更多关于GitLab Runner 的 的介绍可以参考官网的文章,这里就不做展开。 安装好了就可以在 http://127.0.0.1:9980/admin/runners 看到效果了

最后,在 刚才创建的工程中,添加一个 .gitlab-ci.yml 测试一下。

代码语言:javascript
代码运行次数:0
复制
stages:  
  - build  
build_job:  
  stage: build  
  tags:  
    - golang-local-shell  
  script:  
    - go build -o myapp  
  only:  
    - main  
    - tags  
  artifacts:  
    paths:  
      - myapp

将代码推送到gitlab,很快就能编译完了 http://127.0.0.1:9980/root/hello-world/-/pipelines

然后在 http://127.0.0.1:9980/root/hello-world/-/artifacts 可以找到 构建的产物。

至此,在本地搭建GitLab环境已经弄好,下一篇文章,在折腾在本地搭建k8s 集群,然后从GitLab自动打包成docker镜像推送到 k8s 集群,完成一个CI/CD的完整流水线。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-11-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 萝卜要加油 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装 GitLab
    • 添加ssh
  • Gitlab Runners 配置
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档