Gitlab gitlab-ce-zh:11.1.4 持续集成

第一章安装GItLab

1.1备注

GitLab CI 就已经集成在 GitLab 中,我们只要在项目中添加一个 .gitlab-ci.yml 文件,然后添加一个 Runner,即可进行持续集成。

(如果已经安装Gitlabb则不需要安装,尽量保证 GitLab 于GitRunner镜像版本号一致或接近)

1.2安装部署

创建文件夹

mkdir -p /usr/local/loit/soft/docker/gitlab

编辑

vi docker-compose.yml

如下代码

其中 39.100.100.120 需改为实际ip

version: '3'
services:
  web:
    image: 'twang2218/gitlab-ce-zh:11.1.4'
    restart: always
    hostname: '39.100.100.120'
    environment:
      TZ: 'Asia/Shanghai'
      GITLAB_OMNIBUS_CONFIG: |
        external_url  'http://39.100.100.120:12011'
        gitlab_rails['gitlab_shell_ssh_port'] = 12222
        unicorn['port'] = 12011
        nginx['listen_port'] = 80
    ports:
      - '12011:80'
      - '12443:443'
      - '12222:22'
    volumes:
      - /usr/local/loit/soft/docker/gitlab/config:/etc/gitlab
      - /usr/local/loit/soft/docker/gitlab/data:/var/opt/gitlab
      - /usr/local/loit/soft/docker/gitlab/logs:/var/log/gitlab

查看日志

docker ps

docker logs -f mmmmmm

1.3解决更改默认端口号后http协议不带端口号

docker exec -u root -it gitlab_web_1  bash

vim /etc/gitlab/gitlab.rb

修改external_url,直接增加端口号即可,比如我这里用8800端口:

external_url 'http://ipaddr:12011'

然后执行:

gitlab-ctl reconfigure

在这里插入图片描述

1.4免密登录

1.4.1生成 SSH KEY

使用 ssh-keygen 工具生成,位置在 Git 安装目录下,我的是 C:\Program Files\Git\usr\bin

输入命令:

ssh-keygen -t rsa -C "email@qq.com"

执行成功后的效果:

Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/nick/.ssh/id_rsa):
/c/Users/nick/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/nick/.ssh/id_rsa.
Your public key has been saved in /c/Users/nick/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:D4iujDj1OSzQD1wnIR8awwvQPyPwp1EfOpLB+yts2SM 512889371@qq.com
The key's randomart image is:
+---[RSA 3072]----+
|o+               |
|o O + .          |
| + & = .         |
|  X @.o.         |
| o O.*. S        |
|. *..    o       |
| + B.o    .      |
|ooE.X            |
|ooo+ o           |
+----[SHA256]-----+

1.4.2复制 SSH-KEY 信息到 GitHub

秘钥位置在:C:\Users\你的用户名.ssh 目录下,找到 id_rsa.pub 并使用编辑器打开并拷贝

第二章GItLab 持续集成

2.1概念

Pipeline

一次 Pipeline 其实相当于一次构建任务,里面可以包含多个流程,如安装依赖、运行测试、编译、部署测试服务器、部署生产服务器等流程。

任何提交或者 Merge Request 的合并都可以触发 Pipeline,如下图所示:

在这里插入图片描述

在这里插入图片描述

Stages

Stages 表示构建阶段,说白了就是上面提到的流程。我们可以在一次 Pipeline 中定义多个 Stages,这些 Stages 会有以下特点:

所有 Stages 会按照顺序运行,即当一个 Stage 完成后,下一个 Stage 才会开始
只有当所有 Stages 完成后,该构建任务 (Pipeline) 才会成功
如果任何一个 Stage 失败,那么后面的 Stages 不会执行,该构建任务 (Pipeline) 失败

在这里插入图片描述

Jobs
Jobs 表示构建工作,表示某个 Stage 里面执行的工作。我们可以在 Stages 里面定义多个 Jobs,这些 Jobs 会有以下特点:

相同 Stage 中的 Jobs 会并行执行
相同 Stage 中的 Jobs 都执行成功时,该 Stage 才会成功
如果任何一个 Job 失败,那么该 Stage 失败,即该构建任务 (Pipeline) 失败
所以,Jobs 和 Stage 的关系图就是:

在这里插入图片描述

2.2JitLab Runner 介绍

一般来说,构建任务都会占用很多的系统资源 (譬如编译代码),而 GitLab CI 又是 GitLab 的一部分,如果由 GitLab CI 来运行构建任务的话,在执行构建任务的时候,GitLab 的性能会大幅下降。

GitLab CI 最大的作用是管理各个项目的构建状态,因此,运行构建任务这种浪费资源的事情就交给 GitLab Runner 来做拉!

因为 GitLab Runner 可以安装到不同的机器上,所以在构建任务运行期间并不会影响到 GitLab 的性能

2.3JitLab Runner 安装

环境准备

创建工作目录 /usr/local/loit/soft/docker/gitlab-runner
创建配置目录 /usr/local/loit/soft/docker/gitlab-runner/config

cd /usr/local/loit/soft/docker/gitlab-runner

vi docker-compose.yml

version: '3'
services:
    runner:
      image: 'gitlab/gitlab-runner:v11.4.2'
      container_name: gitlab-runner
      restart: always
      networks:
        - gitlab_default
      volumes:
        - ./config:/etc/gitlab-runner
        - /var/run/docker.sock:/var/run/docker.sock
networks:
  gitlab_default:
external: true

docker-compose up -d

2.3.1安装JAVA

安装java

linux 64 jdk1.8 jdk-8u161-linux-x64.tar.gz

百度云盘下载链接:https://pan.baidu.com/s/18IicPYf7W0j-sHBXvfKyyg

下载好后拷贝到

cd /usr/local/soft

将安装包copy到jenkins中的root路径下

docker cp jdk-8u161-linux-x64.tar.gz gitlab-runner:/root/

进入docker容器中,切换到root路径下

docker exec -u root -it gitlab-runner bash

cd /root/

对maven压缩包进行解压,并移动到/var/local/路径下

tar -zxvf jdk-8u161-linux-x64.tar.gz

mv jdk1.8.0_161 /var/local/java

2.3.2安装maven

安装maven

cd  /usr/local/soft

wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz

将安装包copy到jenkins中的root路径下

docker cp apache-maven-3.6.3-bin.tar.gz gitlab-runner:/root/

进入docker容器中,切换到root路径下

docker exec -u root -it gitlab-runner bash

cd /root/

对maven压缩包进行解压,并移动到/var/local/路径下

tar -zxvf apache-maven-3.6.3-bin.tar.gz

mv apache-maven-3.6.3 /var/local/

2.3.3 配置环境变量

开始配置环境变量,编辑文件/etc/profile

在最下面添加以下内容(MAVEN_HOME是刚才解压maven的路径)

export JAVA_HOME=/var/local/java
export MAVEN_HOME=/var/local/apache-maven-3.6.3

export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin

运行source /etc/profile,刷新环境变量

查看maven版本,安装成功后,退出docker

mvn -v

java -version

exit

2.3.4安装NodeJs

下载 NodeJS

https://cdn.npm.taobao.org/dist/node/v12.18.3/node-v12.18.3-linux-x64.tar.gz

上传到路径 /usr/local/soft

cd /usr/local/soft
docker cp node-v12.18.3-linux-x64.tar.gz gitlab-runner:/root/
docker exec -u root -it gitlab-runner bash

在jenkins容器内执行以下步骤

cd /root/
tar -zxvf node-v12.18.3-linux-x64.tar.gz
mv node-v12.18.3-linux-x64 /usr/local/
cd /usr/local/node-v12.18.3-linux-x64/bin
 ./node  -v
ln -s /usr/local/node-v12.18.3-linux-x64/bin/node /usr/local/bin
ln -s /usr/local/node-v12.18.3-linux-x64/bin/npm /usr/local/bin

2.4注册 Runner

具体项目->设置->CI/CD->获取GitLab CI 地址与令牌参数 (每个需要持续集成的项目都需要设置一次)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

docker exec -it gitlab-runner gitlab-runner register

# 输入 GitLab 地址 (参照上图获取 URL)
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
http://39.100.100.120:12011/

# 输入 GitLab Token(参照上图GitLoabToken 获取)
Please enter the gitlab-ci token for this runner:
1Lxq_f1NRfCfeNbE5WRh 

# 输入 Runner 的说明
Please enter the gitlab-ci description for this runner:
可以为空

# 设置 Tag,可以用于指定在构建规定的 tag 时触发 ci
Please enter the gitlab-ci tags for this runner (comma separated):
设置具体tag, 空为都触发

# 选择 runner 执行器,这里我们选择的是 shell
Please enter the executor: virtualbox, docker+machine, parallels, shell, ssh, docker-ssh+machine, kubernetes, docker, docker-ssh:
shell

其中 runner 中的构建大概路径为

/home/gitlab-runner/builds/ba74daa3/0/spring-timeloit/portalSystem

2.5SCP免密传输文件及SSH免密执行命令

docker exec -u root -it gitlab-runner bash

su gitlab-runner
cd ~

然后从root用户切换到gitlab-runner用户,并且进入用户主目录。因为需要使用ssh scp发布网站,所以需要设置好ssh的证书。

ssh-keygen -t ed25519 -C "chensy@teimloit.com"

完成了上一步之后用户主目录应该已经生成了.ssh文件夹,进入该文件夹。

cd .ssh
ssh-copy-id -i ./id_ed25519.pub root@114.100.100.140

使用此命令复制公钥到目标服务器之上,此操作过程之中需要输入目标服务器的用户登录密码。

示例命令一:

scp -r dist root@114.100.100.140:/root/temp

示例命令二:

ssh root@114.100.100.140 "
cd /root/temp &&
sh deploy-xxx.sh"

2.5.gitlab-ci.yml

在项目工程下编写 .gitlab-ci.yml 配置文件:

stages:
  - install_deps
  - build
  - deploy_test

cache:
  key: ${CI_BUILD_REF_NAME}
  paths:
    - node_modules/
    - dist/

install_deps:
  stage: install_deps
  only:
    - master
  script:
    # - npm install node-sass -save
    - npm install node-sass -save --sass_binary_site=https://npm.taobao.org/mirrors/node-sass/
    - npm install --registry=https://registry.npm.taobao.org

# 编译
build:
  stage: build
  only:
    - master
  script:
    - npm run build:prod

# 部署测试服务器
deploy_test:
  stage: deploy_test
  only:
    - master
  script:
    - tar -zcvf dist.tar.gz dist
    - tar -zcvf static.tar.gz static
    - scp -r dist.tar.gz root@114.100.100.140:/root/temp
    - scp -r static.tar.gz root@114.100.100.140:/root/temp  
    - ssh root@114.100.100.140 "
        cd /root/temp &&
        sh deploy-xxx.sh"
    - echo "部署完成"

上面的配置把一次 Pipeline 分成阶段:

  • 安装依赖(install_deps)
  • 运行测试(test) (暂缺)
  • 编译(build)
  • 部署测试服务器(deploy_test)(暂缺)
  • 部署生产服务器(deploy_production)(暂缺)

注意: 设置 Job.only 后,只有当master 分支有提交的时候才会触发相关的 Jobs。

节点说明:

  • stages:定义构建阶段,这里只有一个阶段 deploy
  • deploy:构建阶段 deploy 的详细配置也就是任务配置
  • script:需要执行的 shell 脚本
  • only:这里的 master 指在提交到 master 时执行
  • tags:与注册 runner 时的 tag 匹配

2.6测试验证效果

所有操作完成后 push 代码到服务器,查看是否成功:

在这里插入图片描述

其它命令

  • 删除注册信息
gitlab-ci-multi-runner unregister --name "名称"
  • 查看注册列表
gitlab-ci-multi-runner list

2.8将docker 容器保存为新镜像

查看docker,显示正在运行的容器

docker ps

根据containerId,创建新镜像

docker commit db1634fc5235 gitlab/gitlab-runner:v11.4.2.1

2.9修改docker-compose

切换到/usr/local/loit/soft/docker/gitlab-runner路径下,修改docker-compose.yml

cd /usr/local/loit/soft/docker/gitlab-runner

vi docker-compose.yml
version: '3'
services:
    runner:
      image: 'gitlab/gitlab-runner:v11.4.2.1'
      container_name: gitlab-runner
      restart: always
      networks:
        - gitlab_default
      volumes:
        - ./config:/etc/gitlab-runner
        - /var/run/docker.sock:/var/run/docker.sock
networks:
  gitlab_default:
external: true

删除之前的容器

docker-compose down

重启

docker-compose up -d
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在服务器上安装GitLab,你可以按照以下步骤进行操作: 1. 首先,使用SSH登录到你的服务器。你可以使用命令`ssh username@服务器IP地址`来进行登录,其中`username`是你的用户名,`服务器IP地址`是你的服务器的IP地址。 [2-02] 2. 接下来,创建一个文件夹来存储GitLab的配置文件和数据。你可以使用命令`mkdir /opt/docker_gitlab`来创建一个名为`/opt/docker_gitlab`的文件夹。 [2-03] 3. 然后,创建一个`docker-compose.yml`文件,并将以下内容复制到文件中: ```yaml version: '3.1' services: gitlab: image: 'twang2218/gitlab-ce-zh:11.1.4' container_name: "gitlab" restart: always privileged: true hostname: 'gitlab' environment: TZ: 'Asia/Shanghai' GITLAB_OMNIBUS_CONFIG: | external_url 'http://服务器IP地址' gitlab_rails['time_zone'] = 'Asia/Shanghai' gitlab_rails['smtp_enable'] = true gitlab_rails['gitlab_shell_ssh_port'] = 22 ports: - '80:80' - '443:443' - '22:22' volumes: - /opt/docker_gitlab/config:/etc/gitlab - /opt/docker_gitlab/data:/var/opt/gitlab - /opt/docker_gitlab/logs:/var/log/gitlab ``` 请确保将`服务器IP地址`替换为你的服务器的实际IP地址。这个`docker-compose.yml`文件使用了Docker Compose来定义GitLab容器的配置。它指定了使用的镜像版本,容器的名称和其他配置选项,包括端口映射和卷挂载。 4. 保存并关闭`docker-compose.yml`文件。 5. 现在,使用命令`docker-compose up -d`来启动GitLab容器。这将下载所需的镜像并启动容器。 `-d`选项将容器设置为在后台运行。 [2-06] 6. 一旦容器启动完成,你可以访问`http://服务器IP地址`来访问GitLab的Web界面。在首次访问时,你需要设置管理员账号和密码。 恭喜!你已经成功在服务器上安装了GitLab。现在你可以使用GitLab来进行代码托管和团队协作了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值