Installl
mkdir -p /data/gitlab/config
mkdir -p /data/gitlab/logs
mkdir -p /data/gitlab/data
docker run -d \
-h <host> \
-p 443:443 -p <port>:80 -p 2222:22 \
-e TZ=Asia/Shanghai \
--shm-size 256m \
--name gitlab \
--restart always \
-v /data/gitlab/config:/etc/gitlab \
-v /data/gitlab/logs:/var/log/gitlab \
-v /data/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
配置
修改配置文件
vi /data/gitlab/config/gitlab.rb
基本配置
external_url 'http://192.168.0.152'
gitlab_rails['gitlab_ssh_host'] = '192.168.0.152'
gitlab_rails['gitlab_shell_ssh_port'] = 2222
修改HTTP端口
如果单独设置了端口,非80端
修改gitlab配置
vi /data/gitlab/config/gitlab.rb
external_url 'http://192.168.0.152:PROT'
nginx['listen_port'] = PROT
修改docker配置
如果Docker容器已经启动80端口,则更改Docker容器配置 参考 [[修改容器端口]]
把80端口改成你自己端口
修改nginx配置
此方法为临时方法,gitlab重新读取配置文件后失效
将gitlab.yml文件的port改成你想设置的端口
vi /data/gitlab/data/gitlab-rails/etc/gitlab.yml
配置邮箱服务
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
//不行就尝试 gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "xiconz@qq.com"
gitlab_rails['smtp_password'] = "cbkdgrnopljpjdichc" // 授权码
gitlab_rails['smtp_domain'] = "qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['smtp_pool'] = true
gitlab_rails['gitlab_email_from'] = 'xiconz@qq.com'
user['git_user_email'] ="xiconz@qq.com"
测试邮件发送
语法:
Notify.test_email('exam@163.com','邮件标题','邮件内容').deliver_now
进入控制台发送测试邮件
gitlab-rails console
Notify.test_email('exam@163.com','邮件标题','邮件内容').deliver_now
配置SSH密钥
检查密钥是否存在
ls -alh ~/.ssh
不存在生成密钥:
ssh-keygen -t rsa -C "gitlab" -f ~/.ssh/gitlab_rsa
添加私钥到本机SSH
添加私钥,指向私钥文件
ssh-add ~/.ssh/gitlab_rsa
失败使用:
ssh-agent bash
检查添加成功
ssh-add -l
验证是否可以连接
ssh -T git@192.168.0.152 -p 2222
大写-T 指向主机 小写-p指向端口 选择-i指向密钥文件 -i ~/.ssh/gitlabpullweb_rsa
成功提示: Welcome to GitLab, @wangbin!
查看密码
如果忘记密码或者非手动修改密码时这个密码才有效
账号: root
sudo docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password
常用指令
需要进入gitlab容器执行操作
- gitlab-ctl diff-config: 比较配置
- gitlab-ctl reconfigure: 加载配置
- gitlab-ctl restart: 重启
- gitlab-ctl status: 查看状态
[可选]Gitlab-Runner
- 安装gitlab-runner 参考
mkdir -p /data/gitlab-runner5/config
docker run \
-d \
--name gitlab-runner \
--restart always \
-v /data/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner:latest
- 注册CICD通道
参考
/data/gitlab-runner/confi替换为你的gitlab-runner/config配置文件路径
docker run \
-it \
-v /data/gitlab-runner/config:/etc/gitlab-runner \
gitlab/gitlab-runner:latest register
或者:
gitlab-runner register \
--non-interactive \
--executor "docker" \
--docker-image "golang:alpine" \
--url "http://192.168.8.10/" \
--registration-token "bTYW9wdU_M9nv1Kx_4Vi" \
--description "node-runner" \
--tag-list "docker,golang" \
--run-untagged="true" \
--locked="false" \
--access-level="not_protected"
注册分为8步骤:
- Enter your GitLab instance URL (also known as the
gitlab-ci coordinator URL). - Enter the token you obtained to register the runner.
- Enter a description for the runner. You can change this value later in the GitLab user interface.
- Enter the tags associated with the runner, separated by commas. You can change this value later in the GitLab user interface.
- Enter any optional maintenance note for the runner.
- Provide the runner executor. For most use cases, enter
docker. - If you entered
dockeras your executor, you are asked for the default image to be used for projects that do not define one in.gitlab-ci.yml
注册参考以下通用输入 ![[Pasted image 20230223195837.png]]
- 查看是否生成配置文件
cat /data/gitlab-runner/config/config.toml
- 重启读取配置文件
docker restart gitlab-runner
- 查看运行状态
docker logs gitlab-runner
遇到登录问题需要修改配置文件
image: docker:stable
stage: build
script:
# 这里的变量会自动获取你当前推送代码的gitlab用户和密码以及仓库地址
- docker login --username $CI_REGISTRY_USER --password $CI_REGISTRY_PASSWORD $CI_REGISTRY
# 这里的变量就是我们全局配置定义的了
- docker build -t $IMAGE_FULL_NAME .
- docker push $IMAGE_FULL_NAME
- rm -rf target
- docker rmi $IMAGE_FULL_NAME
only:
- master
tags:
- test
gitlab界面查看是否有这个CICD通道. 项目 -> 设置 -> CI/CD-> Runner -> 分配项目的 runner 是否与你注册时输入的步骤相关 ![[Pasted image 20230223154159.png]]
.gitlab-ci.yml 文档
命令修改root密码
#执行命令
gitlab-rails console -e production
显示内容
--------------------------------------------------------------------------------
Ruby: ruby 2.7.5p203 (2021-11-24 revision f69aeb8314) [x86_64-linux]
GitLab: 14.6.1 (661d663ab2b) FOSS
GitLab Shell: 13.22.1
PostgreSQL: 12.7
--------------------------------------------------------------------------------
Loading production environment (Rails 6.1.4.1)
# gitlab-rails console -e production # 然后以此执行下面命令(需要提前查询用户的id号)
...> user = User.where(id: 1).first
...> user.password = 'root123*'
...> user.password_confirmation = 'root123*'
...> user.save!
例如,重置root用户密码为root123*,root用户id为1。
# gitlab-rails console -e production
irb(main):001:0> user = User.where(id: 1).first
=> #<User id:1 @root>
irb(main):002:0> user.password = 'root123*'
=> "root123*"
irb(main):003:0> user.password_confirmation = 'root123*'
=> "root123*"
irb(main):004:0> user.save!
Enqueued ActionMailer::DeliveryJob (Job ID: e562694d-2a1b-4bad-843b-d8567ac51077) to Sidekiq(mailers) with arguments: "DeviseMailer", "password_change", "deliver_now", #<GlobalID:0x00007fae7e55bcc8 @uri=#<URI::GID gid://gitlab/User/1>>
=> true
irb(main):005:0> quit