【gitlab-runner/docker部署runner/CICD】

介绍docker-compose 部署方式

docker-compose文件

  ###runner
  gitlab-runner:
    image: gitlab-runner
    build:
      context: ./gitlab-runner
    #image: gitlab/gitlab-runner:latest
    container_name: gitlab-runner
    #environment:
      #- CI_SERVER_URL=${GITLAB_CI_SERVER_URL}
      #- REGISTRATION_TOKEN=${GITLAB_RUNNER_REGISTRATION_TOKEN}
      #- RUNNER_NAME=${GITLAB_RUNNER_NAME}-runner
      #- REGISTER_NON_INTERACTIVE=${GITLAB_REGISTER_NON_INTERACTIVE}
      #- RUNNER_EXECUTOR=shell
    volumes:
      - ./gitlab-runner/deploy/publish.sh:/var/www/gitlab-runner/deploy/publish.sh:rw
      - ${DATA_PATH_HOST}/gitlab/runner:/etc/gitlab-runner
      - /var/run/docker.sock:/var/run/docker.sock:rw
    restart: always

 dockerfile文件内容

FROM gitlab/gitlab-runner:latest

LABEL maintainer="peng "


RUN set -xe; \
    apt-get update -yqq && \
    apt-get install -yqq \
      git \
      vim \
      wget \
      supervisor

RUN mkdir -p /var/www; \
    chmod -R 777 /var/www

准备一个shell脚本

#!/bin/bash
DEPLOY_PATH=项目地址(docker方式的话就是docker内映射的地址)
GIT_URL=ssh://*********/gitlab-instance-3b876bb8/aa.git
NOW_BRANCH=dev
if [ ! -e $DEPLOY_PATH ];then
  mkdir -p $DEPLOY_PATH
  chown -hR gitlab-runner:gitlab-runner $DEPLOY_PATH
  echo "OK"
fi
cd $DEPLOY_PATH
if [ -d "$DEPLOY_PATH/.git" ];then
        echo --- Clean Workspace ---
        git clean -f
        git reset --hard
        git remote update origin -p
        git checkout $NOW_BRANCH
        echo --- 拉取 $NOW_BRANCH 分支 ---
        git pull origin $NOW_BRANCH
        echo --- OK ---
else
        git init
        git remote add origin $GIT_URL
        git fetch
        git remote update origin -p
        git checkout $NOW_BRANCH
        echo --- OK ---
fi

 docker-compose up -d gitlab-runner启动runner

注册runner


gitlab-runner register

url和token从gitlab项目中获取
tags要项目yml文件中保持一致
执行方式选择shell

配置git密钥

在docker容器中生成git密钥

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

一直回车人后吧id_rsa.pub在gitlab的ssh配置好

注意:最好创建一个发布群组和发布账号,把在密钥在发布账号中配置

项目yml配置示例

stages:
  - deploy

dev_api:
  stage: deploy
  tags:
    - dev-test
  only:
    - dev
  script:
    - whoami
    - bash /var/www/gitlab-runner/deploy/publish.sh

product_api:
  stage: deploy
  tags:
    - product_api
  only:
    - master
  script:
    - whoami
    - bash /var/www/gitlab-runner/deploy/publish.sh

可以发布测试了

你可能感兴趣的:(Git/GitLab,docker,容器,运维)