当前位置:首页 > 编程相关 > Git > 正文内容

gitlab+gitlab-runner同步代码并使用docker执行

martinsun5个月前 (01-22)Git1.39 K

说明

用于代码托管在gitlab,提交后通过gitlab-runner实现自动部署,基于docker运行代码

在宿主机安装

  • 安装Git
    查看是否已经安装,建议版本安装2.x,因为低版本会在gitlab-runner中报错

      # 查看安装的版本
      git --version
    
      # 如果版本低于2.x,则移除重新安装
      yum remove git
    
      # 安装镜像源
      yum install http://opensource.wandisco.com/centos/7/git/x86_64/wandisco-git-release-7-1.noarch.rpm
      yum install git -y
      # 更新确保是新版本
      yum update git
    
      # 查看安装的版本
      git --version
  • 安装gitlab

    gitlab-runner不建议在docker运行,因为权限和一些不必要的内存限制使用问题,安装教程查看 Centos 7安装gitlab

  • 安装gitlab-runner

    查看 Install GitLab Runner manually on GNU/Linux

  • 安装docker

    查看 Linux Centos7.9安装docker

  • 安装docker-compose

    查看 Linux Centos7.9安装docker-compose

配置gitlab-runner用户免密登录

  1. 切换至 gitlab-runner 用户

    su gitlab-runner
    cd ~
  2. 生成密钥

    ssh-keygen -t rsa # 后面一直按回车即可

    完成后会在/home/gitlab-runner/.ssh 目录生成id_rsa 和 id_rsa.pub 两个文件

  3. 导入密钥

    # 回到root用户
    exit 
    # 导入 gitlab-runner 用户密钥
    cat /home/gitlab-runner/.ssh/id_rsa.pub >>/root/.ssh/authorized_keys
    # 重启
    systemctl restart sshd
  4. 测试

    su gitlab-runner
    ssh root@服务器ip # 输入完成后回车,会直接以root身份登录服务器

注册runner

在如下位置获取项目的注册信息

然后执行下面的命令注册runner

[root@localhost ~]# gitlab-ci-multi-runner register
Runtime platform                                    arch=amd64 os=linux pid=4387 revision=98daeee0 version=14.7.0
Running in system-mode.                            

Enter the GitLab instance URL (for example, https://gitlab.com/):
输入注册地址
Enter the registration token:
输入注册令牌
Enter a description for the runner:
[localhost.localdomain]: 描述,可以随便写
Enter tags for the runner (comma-separated):
标签 与 .gitlab-ci.yml文件中的tags对应
Registering runner... succeeded                     runner=2aZHpdoN
Enter an executor: kubernetes, custom, ssh, virtualbox, docker+machine, docker-ssh+machine, docker, docker-ssh, parallels, shell:
shell # 这里选择shell
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded! 

验证注册信息

[root@localhost ~]# gitlab-ci-multi-runner list
Runtime platform                                    arch=amd64 os=linux pid=5062 revision=98daeee0 version=14.7.0
Listing configured runners                          ConfigFile=/etc/gitlab-runner/config.toml
node-build                                          Executor=shell Token=注册令牌 URL=注册地址

在服务器上拉取项目

因是基于http拉起的项目,需要先在服务器拉取项目,以便保存git的账号和密码,如果是使用的ssh方式拉取项目,则可以不做此步骤,在gitlab中配置服务器的部署密钥即可

# 配置git永久保存账号密码
git config --global credential.helper store
# 拉取代码
cd /home/project
git clone -b master 仓库地址
输入账号密码拉取代码

编写.gitlab-ci.yml

可以参考下面的配置

# usermod -aG docker gitlab-runner

stages:
  - deploy

variables:
  PROJECT_DIR: /home/project # 项目目录
  PROJECT_SAAS_NAME: 项目名称 # 如test

deploy_saas_test:
  stage: deploy
  before_script:
    - git --version # 检测是否安装git
    - docker -v # 检测是否安装docker
    - docker-compose -v # 检测是否安装docker-compose
  script:
    - ssh -tt root@172.18.26.69 << serverssh # 以root身份登录服务器
    - cd $PROJECT_DIR/$PROJECT_SAAS_NAME/ # 进入项目代码目录
    - git pull origin master # 更新代码
    - mkdir ./runtime # 创建缓存目录
    - chown -R 33:tape ./runtime ./public/storage # 修改权限
    - docker-compose -p v5-saas down && docker-compose -p v5-saas up -d # 使用docker-compose拉起项目
    - exit # 退出
    - serverssh
  only:
    - master # 仅对某个分支生效
  tags:
    - test # 需要执行的runner设置的tags名称

版权声明:本文由MartinSun发布,内容供学习参考使用。

图文说明:部分图文来源于网络,如侵权请联系删除。

本文链接:https://www.sunyonghong.com/?id=46

分享给朋友:

相关文章

迁移/修改gitlab代码仓存放位置

说明由于随着项目的逐渐增加,原储存磁盘已经不足以使用,于是对gitlab代码仓库进行了储存位置迁移 一、停止服务操作之前,需要停止服务,防止有新的数据写入 gitlab-ctl stop 二、修...

从SVN仓库迁移至Git仓库

一、安装工具在 Centos 系统中安装 git-svn工具 yum install git-svn -y在 Windows 系统上操作则安装 git-base 二、生成svn转git的账号对应关...

使用git subtree管理子仓库

说明最近在使用一个仓库统一管理其他子仓库的代码,降低在平时维护的成本,做了以下的梳理 介绍 与git gitmodule有一定区别,可以在网上查阅相关资料必须要学会使用git subtree的相关...

git 更新 fork 的项目到原项目的最新版本

说明fork 了一个项目之后,原仓库更新后,自己的fork项目想要同步更新原仓库,可以查看下面的操作步骤。 ps: 下文中提到的上游仓库,指的是原仓库 查看远程的版本库地址主要用于确定本地是否已经...