docker 部署gitlab 构建CI/CD流水线

拉取镜像 启动容器 暴露出来 9980和9922端口

docker pull gitlab/gitlab-ce:latest

mkdir -P /data/gitlab-test/etc /data/local/gitlab-test/log /data/local/gitlab-test/opt
docker run 
 -itd  
 -p 9980:80 
 -p 9922:22 
 -v /data/gitlab-test/etc:/etc/gitlab  
 -v /data/local/gitlab-test/log:/var/log/gitlab 
 -v /data/local/gitlab-test/opt:/var/opt/gitlab 
 --restart always 
 --privileged=true 
 --name gitlab-test 
 gitlab/gitlab-ce

进入容器修改基本配置 字面意思看描述修改

docker exec -it gitlab-test /bin/bash

production: &base

  gitlab:
    ## Web server settings (note: host is the FQDN, do not include http://)
    host: xx.xx.xx.xx  # 你的主机IP
    port: 9980
    https: false
    ssh_host: xx.xx.xx.xx  # 你的主机IP
    # If your ssh user differs from the system user, you need to specify it here
    # Set it to an empty string to omit the username from any ssh url altogether
    ssh_user:
  gitlab_shell:
    # If you use non-standard ssh port you need to specify it
    ssh_port: 9922

让配置生效

gitlab-ctl reconfigure
gitlab-ctl restart

# 同时修改密码
gitlab-rails console
user = User.where(id: 1).first
或者
user = User.find_by(email: 'admin@example.com')
user.password = '你的密码'
user.password_confirmation = '你的密码'
user.save

登录之后默认会有个Monitoring 项目 可以开始配置gitlab Runners,进行gitlab cicd 的自动构建

首先在设置里面找到注册runner的url 和 token:如下图所示

我选择的是在docker里面启动runnser服务 官方地址:https://docs.gitlab.com/runner/install/docker.html

可以有2种方式一种是使用本地的存储卷,一种是使用docker存储卷 我使用本地存储
https://docs.gitlab.com/runner/install/docker.html

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

### 在 macOS, 使用 /Users/Shared 替换 /srv
### 注册runner https://docs.gitlab.com/runner/register/index.html#docker
docker run --rm -it -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register

### 注册的时候会选择执行器,可以根据需要选择 我选择了shell 和 docker,一次注册只能选择一个执行器
### 根据选项一步一步注册就好了 tag 和 描述要写好,在后面的.git-ci.yam 配置里面会用到

配置 ci/cd 描述文件

default:
  tags: 
    - docker
  

before_script:
  - export PACKAGE_NAME=${CI_PROJECT_NAME}_${CI_COMMIT_SHA:0:8}.zip

stages:          # List of stages for jobs, and their order of execution
  - build
build-job:       # This job runs in the build stage, which runs first.
  stage: build
  script:
    - echo "Compiling the code..."
    - echo "Compile complete."
    - go build main.go
  artifacts:
    expire_in: 1 week
    when: on_success
    paths:
      - main

# archive_package:
#   stage: package
#   script:
#   - zip -r ${PACKAGE_NAME} main
#   artifacts:
#     expire_in: 1 week
#     when: on_success
#     untracked: true
#     paths:
#       - ${PACKAGE_NAME}
#   tags:
#     - docker
#   only:
#     - tags

在cd/cd Pipeline 菜单里面执行作业:

通过 artifacts 关键字可以生成构建物,在仓库的tag 里面可以进行下载

具体的 .gitlab-ci.yml 文件语法可以参考官方文档

https://docs.gitlab.com/ee/ci/yaml/

构建结果

注意事项

  1. gitlab 和 runner 的版本要一致,否则可能出现构建记录无法出现的错误
  2. 可以通过 docker logs id 查看具体的日志
落霞与孤鹜齐飞,秋水共长天一色。
原文地址:https://www.cnblogs.com/sening/p/15489387.html