8. 持续集成Gitlab-Runner

安装runner

创建工作目录:

/usr/local/docker/runner

创建构建目录

/usr/local/docker/runner/environment

复制jdk到environmet

cp /downloads/jdk-8u152-linux-x64.tar.gz  .

在environment下创建Dockerfile文件

FROM gitlab/gitlab-runner:v11.0.2
MAINTAINER Lusifer <[email protected]>


# 修改软件源
RUN echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse' > /etc/apt/sources.list && \
    echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse' >> /etc/apt/sources.list && \
    echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse' >> /etc/apt/sources.list && \
    echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse' >> /etc/apt/sources.list && \
    apt-get update -y && \
    apt-get clean


# 安装 Docker
RUN apt-get -y install apt-transport-https ca-certificates curl software-properties-common && \
    curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | apt-key add - && \
    add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" && \
    apt-get update -y && \
    apt-get install -y docker-ce
COPY daemon.json /etc/docker/daemon.json


# 安装 Docker Compose
WORKDIR /usr/local/bin
RUN curl -L https://github.com/docker/compose/releases/download/1.25.4/docker-compose-Linux-x86_64 -o /usr/local/bin/docker-compose
# RUN wget https://raw.githubusercontent.com/topsale/resources/master/docker/docker-compose
RUN chmod +x docker-compose


# 安装 Java
RUN mkdir -p /usr/local/java
WORKDIR /usr/local/java
COPY jdk-8u152-linux-x64.tar.gz /usr/local/java
RUN tar -zxvf jdk-8u152-linux-x64.tar.gz && \
    rm -fr jdk-8u152-linux-x64.tar.gz


# 安装 Maven
RUN mkdir -p /usr/local/maven
WORKDIR /usr/local/maven
RUN wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
# RUN wget https://raw.githubusercontent.com/topsale/resources/master/maven/apache-maven-3.5.3-bin.tar.gz
# COPY apache-maven-3.5.3-bin.tar.gz /usr/local/maven
RUN tar -zxvf apache-maven-3.6.3-bin.tar.gz && \
    rm -fr apache-maven-3.6.3-bin.tar.gz
# COPY settings.xml /usr/local/maven/apache-maven-3.5.3/conf/settings.xml


# 配置环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_152
ENV MAVEN_HOME /usr/local/maven/apache-maven-3.6.3
ENV PATH $PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin


WORKD

创建daemon.json文件

{
    "registry-mirrors": [
        "https://m3dz4myl.mirror.aliyuncs.com"
    ],
    "insecure-registries": [
        "192.168.91.134:5000"
    ]
}

在/usr/local/docker/runner目录下新建docker-compose.yml文件

version: '3.1'
services:
  gitlab-runner:
    build: environment
    restart: always
    container_name: gitlab-runner
    privileged: true
    volumes:
      - /usr/local/docker/runner/config:/etc/gitlab-runner
      - /var/run/docker.sock:/var/run/docker.sock

执行docker-compose

docker-compose up -d

注册runner

docker exec -it gitlab-runner gitlab-runner register

进入gitlab网站中的项目

复制地址,粘贴

复制令牌,粘贴

enter,enter,输入shell

成功注册

查看注册信息

cat /config/config.toml

制作流水线

新建 .gitlab-ci.yml

stages:
  - test
# stage阶段名,要上下对应
test:
  stage: test
  script:
    - echo "Start Runner"

提交到gitlab

成功

编写maven package脚本

上传.gitlab-ci.yml如下:

stages:
  - package
# stage阶段名,要上下对应
test:
  stage: package
  script:
    - echo "Start Runner"
    - /usr/local/maven/apache-maven-3.6.3/bin/mvn clean package

下载完成后进入容器内部

docker exec -it docker-runner /bin/bash

查看target目录

cd /home/gitlab-runner/builds/2cded9a3/0/SpringCloudDemo/Common-Config
ll

编写Dockerfile脚本

在项目中新建docker目录以及Dockerfile文件

FROM openjdk:8-jre


MAINTAINER ZLJ <[email protected]>


ENV APP_VERSION 1.0.0-SNAPSHOT
#ENV DOCKERIZE_VERSION v0.6.1
#RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
#        && tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
#        && rm dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz


RUN mkdir /app


COPY Common-Config-$APP_VERSION.jar /app/app.jar
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app/app.jar", "--spring.profiles.active=prod"]
#ENTRYPOINT ["dockerize", "-timeout", "5m", "-wait", "tcp://192.168.91.130:8888", "java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app/app.jar", "--spring.profiles.active=prod"
]


EXPOSE 

build:镜像

在.gitlb-ci.ymlx修改内容

stages:
  - build
# stage阶段名,要上下对应
build:
  stage: build
  script:
    - /usr/local/maven/apache-maven-3.6.3/bin/mvn clean package
    - mv target/Common-Config-1.0.0-SNAPSHOT.jar docker
    - cd docker
    - docker build -t 192.168.91.134:5000/common-config .

上传,查看运行状态:

查看生成的镜像:

docker ps

push: 镜像

stages:
  - build
  - push
# stage阶段名,要上下对应
build:
  stage: build
  script:
    - /usr/local/maven/apache-maven-3.6.3/bin/mvn clean package
    - mv target/Common-Config-1.0.0-SNAPSHOT.jar docker
    - cd docker
    - docker build -t 192.168.91.134:5000/common-config .


push:
  stage: push
  script:
    - docker push 192.168.91.134:5000/common-config

上传到gitlab

查看Docker registry

run:创建容器

在项目中新建docker-compose.yml

version: '3.1'
services:
  common-config:
    restart: always
    image: 192.168.91.134:5000/common-config
    container_name: common-config
    ports:
      - 8888:8888
    networks:
      - eureka_network
networks:
  eureka_network:

修改.gitlab-ci.yml

stages:
  - build
  - push
  - run
# stage阶段名,要上下对应
build:
  stage: build
  script:
    - /usr/local/maven/apache-maven-3.6.3/bin/mvn clean package
    - mv target/Common-Config-1.0.0-SNAPSHOT.jar docker
    - cd docker
    - docker build -t 192.168.91.134:5000/common-config .


push:
  stage: push
  script:
    - docker push 192.168.91.134:5000/common-config


run:
  stage: run
  script:
    - cd docker
    - docker-compose down
    - docker-compose up -

上传,查看容器运行状态

clean:清除虚悬镜像

stages:
  - build
  - push
  - run
  - clean
# stage阶段名,要上下对应
build:
  stage: build
  script:
    - /usr/local/maven/apache-maven-3.6.3/bin/mvn clean package
    - mv target/Common-Config-1.0.0-SNAPSHOT.jar docker
    - cd docker
    - docker build -t 192.168.91.134:5000/common-config .


push:
  stage: push
  script:
    - docker push 192.168.91.134:5000/common-config


run:
  stage: run
  script:
    - cd docker
    - docker-compose down
    - docker-compose up -d


clean:
  stage: clean
  script:
    - docker rmi $(docker images -q -f dangling=tru

配置文件

 

config

Dockerfile

FROM openjdk:8-jre


MAINTAINER ZLJ <[email protected]>


ENV APP_VERSION 1.0.0-SNAPSHOT
#ENV DOCKERIZE_VERSION v0.6.1
#RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
#        && tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
#        && rm dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz


RUN mkdir /app


COPY Common-Config-$APP_VERSION.jar /app/app.jar
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app/app.jar", "--spring.profiles.active=prod"]
#ENTRYPOINT ["dockerize", "-timeout", "5m", "-wait", "tcp://192.168.91.130:8888", "java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app/app.jar", "--spring.profiles.active=prod"]


EXPOSE 

docker-compose.yml

version: '3.1'
services:
  common-config:
    restart: always
    image: 192.168.91.134:5000/common-config
    container_name: common-config
    ports:
      - 8888:8888
    networks:
      - config_network
networks:
  config_network:

.gitlab-ci.yml

stages:
  - build
  - push
  - run
  - clean
# stage阶段名,要上下对应
build:
  stage: build
  script:
    - /usr/local/maven/apache-maven-3.6.3/bin/mvn clean package
    - mv target/Common-Config-1.0.0-SNAPSHOT.jar docker
    - cd docker
    - docker build -t 192.168.91.134:5000/common-config .


push:
  stage: push
  script:
    - docker push 192.168.91.134:5000/common-config


run:
  stage: run
  script:
    - cd docker
    - docker-compose down
    - docker-compose up -d


clean:
  stage: clean
  script:
    - docker rmi $(docker images -q -f dangling=tru

 

eureka

Dockerfile

FROM openjdk:8-jre


MAINTAINER ZLJ <[email protected]>


ENV APP_VERSION 1.0.0-SNAPSHOT
ENV DOCKERIZE_VERSION v0.6.1
RUN wget https://github.com/jwilder/dockerize/releases/download/v0.6.1/dockerize-linux-amd64-v0.6.1.tar.gz \
        && tar -C /usr/local/bin -xzvf dockerize-linux-amd64-v0.6.1.tar.gz \
        && rm dockerize-linux-amd64-v0.6.1.tar.gz


RUN mkdir /app


COPY Master-Eureka-$APP_VERSION.jar /app/app.jar
#ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app/app.jar", "--spring.profiles.active=prod"]
ENTRYPOINT ["dockerize", "-timeout", "5m", "-wait", "http://192.168.91.130:8888/Master-Eureka/prod/master", "java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app/app.jar", "--spring.profiles.active=prod"]


EXPOSE 

docker-compose.yml

version: '3.1'
services:
  master-eureka-1:
    restart: always
    image: 192.168.91.134:5000/master-eureka
    container_name: master-eureka-1
    ports:
      - 8761:8761
    networks:
      - eureka_network_1


  master-eureka-2:
    restart: always
    image: 192.168.91.134:5000/master-eureka
    container_name: master-eureka-2
    ports:
      - 8861:8761
    networks:
      - eureka_network_2




  master-eureka-3:
    restart: always
    image: 192.168.91.134:5000/master-eureka
    container_name: master-eureka-3
    ports:
      - 8961:8761
    networks:
      - eureka_network_3




networks:
  eureka_network_1:
  eureka_network_2:
  eureka_network

.gitlab-ci,yml

stages:
  - build
  - push
  - run
  - clean
# stage阶段名,要上下对应
build:
  stage: build
  script:
    - /usr/local/maven/apache-maven-3.6.3/bin/mvn clean package
    - mv target/Master-Eureka-1.0.0-SNAPSHOT.jar docker
    - cd docker
    - docker build -t 192.168.91.134:5000/master-eureka .


push:
  stage: push
  script:
    - docker push 192.168.91.134:5000/master-eureka


run:
  stage: run
  script:
    - cd docker
    - docker-compose down
    - docker-compose up -d


clean:
  stage: clean
  script:
    - docker rmi $(docker images -q -f dangling=tru

 

dependencies

.gitlab-ci.yml

stages:
  - deploy
# stage阶段名,要上下对应
deploy:
  stage: deploy
  script:
    - /usr/local/maven/apache-maven-3.6.3/bin/mvn deploy

配置maven settings.xml

<server>
      <id>nexus-snapshots</id>
      <username>admin</username>
      <password>admin123</password>
    </server>
    <server>
      <id>nexus-releases</id>
      <username>admin</username>
      <password>admin123</password>
    </server>

 

zipkin

Dockerfile

FROM openjdk:8-jre


MAINTAINER ZLJ <[email protected]>


ENV APP_VERSION 1.0.0-SNAPSHOT
ENV DOCKERIZE_VERSION v0.6.1
RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
        && tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
        && rm dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz


RUN mkdir /app


COPY Master-Zipkin-$APP_VERSION.jar /app/app.jar
#ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app/app.jar", "--spring.profiles.active=prod"]
ENTRYPOINT ["dockerize", "-timeout", "5m", "-wait", "http://192.168.91.130:8888/Master-Zipkin/prod/master", "java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app/app.jar", "--spring.profiles.active=prod"]


EXPOSE 

docker-compose.yml

version: '3.1'
services:
  master-zipkin:
    restart: always
    image: 192.168.91.134:5000/master-zipkin
    container_name: master-zipkin
    ports:
      - 9411:9411
    networks:
      - zipkin_network
networks:
  zipkin_network:

.gitlab-ci.yml

stages:
  - build
  - push
  - run
  - clean
# stage阶段名,要上下对应
build:
  stage: build
  script:
    - /usr/local/maven/apache-maven-3.6.3/bin/mvn clean package
    - mv target/Master-Zipkin-1.0.0-SNAPSHOT.jar docker
    - cd docker
    - docker build -t 192.168.91.134:5000/master-zipkin .


push:
  stage: push
  script:
    - docker push 192.168.91.134:5000/master-zipkin


run:
  stage: run
  script:
    - cd docker
    - docker-compose down
    - docker-compose up -d


clean:
  stage: clean
  script:
    - docker rmi $(docker images -q -f dangling=tru

 

zuul

Dockerfile

FROM openjdk:8-jre


MAINTAINER ZLJ <[email protected]>


ENV APP_VERSION 1.0.0-SNAPSHOT
ENV DOCKERIZE_VERSION v0.6.1
RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
        && tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
        && rm dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz


RUN mkdir /app


COPY Master-Zuul-$APP_VERSION.jar /app/app.jar
#ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app/app.jar", "--spring.profiles.active=prod"]
ENTRYPOINT ["dockerize", "-timeout", "5m", "-wait", "http://192.168.91.130:8888/Master-Zuul/prod/master", "java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app/app.jar", "--spring.profiles.active=prod"]


EXPOSE 

docker-compose.yml

version: '3.1'
services:
  master-zuul:
    restart: always
    image: 192.168.91.134:5000/master-zuul
    container_name: master-zuul
    ports:
      - 8769:8769
    networks:
      - zuul_network
networks:
  zuul_network:

.gitlab-ci.yml

stages:
  - build
  - push
  - run
  - clean
# stage阶段名,要上下对应
build:
  stage: build
  script:
    - /usr/local/maven/apache-maven-3.6.3/bin/mvn clean package
    - mv target/Master-Zuul-1.0.0-SNAPSHOT.jar docker
    - cd docker
    - docker build -t 192.168.91.134:5000/master-zuul .


push:
  stage: push
  script:
    - docker push 192.168.91.134:5000/master-zuul


run:
  stage: run
  script:
    - cd docker
    - docker-compose down
    - docker-compose up -d


clean:
  stage: clean
  script:
    - docker rmi $(docker images -q -f dangling=tru

 

admin

Dockerfile

FROM openjdk:8-jre


MAINTAINER ZLJ <[email protected]>


ENV APP_VERSION 1.0.0-SNAPSHOT
ENV DOCKERIZE_VERSION v0.6.1
RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
        && tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
        && rm dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz


RUN mkdir /app


COPY Master-Admin-$APP_VERSION.jar /app/app.jar
#ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app/app.jar", "--spring.profiles.active=prod"]
ENTRYPOINT ["dockerize", "-timeout", "5m", "-wait", "http://192.168.91.130:8888/Master-Admin/prod/master", "java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app/app.jar", "--spring.profiles.active=prod"]


EXPOSE 

docker-compose.yml

version: '3.1'
services:
  master-admin:
    restart: always
    image: 192.168.91.134:5000/master-admin
    container_name: master-admin
    ports:
      - 8084:8084
    networks:
      - admin_network
networks:
  admin_network:

.gitlab-ci.yml

stages:
  - build
  - push
  - run
  - clean
# stage阶段名,要上下对应
build:
  stage: build
  script:
    - /usr/local/maven/apache-maven-3.6.3/bin/mvn clean package
    - mv target/Master-Admin-1.0.0-SNAPSHOT.jar docker
    - cd docker
    - docker build -t 192.168.91.134:5000/master-admin .


push:
  stage: push
  script:
    - docker push 192.168.91.134:5000/master-admin


run:
  stage: run
  script:
    - cd docker
    - docker-compose down
    - docker-compose up -d


clean:
  stage: clean
  script:
    - docker rmi $(docker images -q -f dangling=tr
发布了17 篇原创文章 · 获赞 0 · 访问量 72

猜你喜欢

转载自blog.csdn.net/qq_37106658/article/details/105596795