想去放牛

导航

 

  首先准备好一台服务器,需要联网,我这里用的VMware搞的个centos7,因为要搭建gitlab,内存给的6g,小于4g时gitlab启动起来容易报错502。安装好虚拟机后固定虚拟机ip参考https://blog.csdn.net/mingiao/article/details/136537881

一、安装yum

  1.1 安装yum工具

yum install -y yum-utils \
           device-mapper-persistent-data \
           lvm2 --skip-broken

二、安装docker

  2.1 如果之前安装过docker的,先卸载之前的docker。

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine \
                  docker-ce

  2.2 设置docker镜像源

# 设置docker镜像源
yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

yum makecache fast

  2.3 安装docker社区版,docker-ee是企业版,收费的

yum install -y docker-ce

  2.3 安装docker-compose,需要等一会

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && chmod +x /usr/local/bin/docker-compose

  2.4 启停docker

systemctl start docker  # 启动docker服务

systemctl stop docker  # 停止docker服务

systemctl restart docker  # 重启docker服务

systemctl enable docker # 将docker设置为开机自启动

 

三、docker搭建gitlab

  3.1 下载gitlab社区版镜像,最新版的,有点大,要等会

docker pull gitlab/gitlab-ce:latest

  3.2 建立docker容器中gitlab数据持久化目录

# 创建一个用于存放gitlab数据的目录
mkdir -p /opt/gitlab/{config,logs,data}

  3.3 启动gitlab

docker run -d --name gitlab --restart=always --privileged=true \
-p 443:443 -p 6001:6001 -p 2222:22 \
-v /opt/gitlab/config:/etc/gitlab \
-v /opt/gitlab/logs:/var/log/gitlab \
-v /opt/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce

(-v /mnt/gitlab/config:/etc/gitlab说明:冒号前面的路径表示是容器外的,上面的端口也是如此)

 

#启动完之后还需要修改一下配置才可以访问

vim /mnt/gitlab/config/gitlab.rb

 

在gitlab.rb文件中添加

# git clone地址,不加端口号默认为80
external_url 'http://192.168.88.139:6001'
# 配置ssh协议所使用的访问地址和端口
gitlab_rails['gitlab_ssh_host'] = '192.168.88.139'

# 此端口是run时22端口映射的2222端口
gitlab_rails['gitlab_shell_ssh_port'] = 2222 

 

#重启gitlab

docker restart gitlab

 

#ip需要换成自己对应的

访问http://192.168.88.139:6001进入gitlab登录界面,报502时多刷新几遍,还不行就将虚拟机内存给大些,大于4g

 

#进入容器查看初始root密码

docker exec -it gitlab /bin/bash

cat /etc/gitlab/initial_root_password

 密码文件会在首次执行reconfigure24小时被删除,第一次登录gitlab后就可以把密码改了,如果忘记改了,一天后登录不了就百度其他方法来重置root密码,参考https://blog.csdn.net/HYZX_9987/article/details/119929043

  3.4 gitlab设置中文

      3.4.1 点击头像选择preferences

     3.4.2 点进去找到language,选择中文后点击下面save change,刷新即可

 

  3.5  报错记录

    3.5.1 端口占用问题,我的虚拟机上22端口已经被占用了,报了下面的错误

    修改一下映射的端口就好了

     3.5.2 如果出现docker网络连接问题,参考https://blog.csdn.net/GoCloudNative/article/details/135613826

   3.6 补充

    如果习惯使用ssh拉取代码,git生成秘钥命令 ssh-keygen -t rsa -C "gitLab注册时的邮箱",邮箱改成自己的然后一直enter就行,会在C盘下生成私钥和公钥文件,将公钥拷贝到gitlab中就好了。git秘钥生成详情参考https://blog.csdn.net/hhhlizhao/article/details/128891635。

四、搭建gitlab-runner

  4.1 下载gitlab-runner镜像

docker pull gitlab/gitlab-runner

  4.2 启动容器

  启动之前还是要先创建容器外部的挂在路径

docker run -d  --privileged=true  --name runner1 --restart always
-v /otp/gitlab-runner/config:/etc/gitlab-runner
-v /opt/gitlab-runner/run/docker.sock:/var/run/docker.sock
-v /opt/gitlab-runner/bin/docker:/usr/bin/docker gitlab/gitlab-runner

  4.3在gitlab中创建runner实例

   我这里值设置了一个标签,其他的什么都没动

   4.4 在gitlab-runner中注册

# docker exec -it是docker进入容器的命令,这里的runner是上面docker启动容器时的名字,然后使用bash进入
docker exec -it runner bash
# 注册gitlab-runner,输入命令开始注册
gitlab-runner register
# 按照下图将信息补充完整即可,这样gitlab-runner就注册完成了

    注册完返回gitlab页面呢查看runner状态

  4.5 在项目根目录下新建.gitlab-ci.yml文件

stages:
- test    
sast:    # 名字可以自定义
  stage: test    # 从stages中选择
  tags:    # 标签需要gitlab中标签名
    - test-runner
  script:    # 执行的脚本,可以是sh,except等等
   - echo "Test .gitlab-ci.yml!"

   4.6 gitlab-runner中命令

1、gitlab-runner run(运行一个runner服务)
2、gitlab-runner register	(注册一个新的runner)

3、gitlab-runner start(启动服务)
4、gitlab-runner stop(关闭服务)
5、gitlab-runner restart(重启服务)
6、gitlab-runner status(查看各个runner的状态)
7、gitlab-runner unregister(注销掉某个runner)
  栗子:
  #使用令牌注销   gitlab-runner unregister --url http://gitlab.example.com/ --token t0k3n
  #使用名称注销(同名删除第一个)   gitlab-runner unregister --name test-runner
  #注销所有   gitlab-runner unregister --all-runners

8、gitlab-runner list(显示所有运行着的runner)
9、gitlab-runner verify(检查已注册的运行程序是否可以连接到GitLab,但它不验证GitLab Runner服务是否正在使用运行程序)

五、docker安装maven

  5.1 下载maven安装包

   我这里在官网(https://maven.apache.org/)下的apache-maven-3.9.6-bin.tar

  5.2 解压配置

#解压到opt目录下去
sudo tar xzf apache-maven-3.9.6-bin.tar.gz -C /opt
#配置环境变量
export M2_HOME=/opt/apache-maven-3.9.6 export PATH=${M2_HOME}/bin:${PATH}
#让配置生效
source /etc/profile
#查看是否安装成功
mvn -version

centos上,环境变量配置文件是/etc/profile,可以vim /etc/profile查看


 

 

六、docker搭建nexus

  6.1 下载nexus镜像

docker pull sonatype/nexus3

  6.2 创建外部挂在文件

#挂载文件夹一定要放开权限,否则后面启动nexus时会无法启动
mkdir -p /opt/nexus/nexus-data && chmod 777 /opt/nexus/nexus-data

   6.3 启动容器

docker run -d -m 2G --name=nexus3 --restart always -p 8081:8081 -v /opt/nexus/nexus-data:/nexus-data sonatype/nexus3

#查看启动日志
docker logs nexus3

  6.4 启动完成访问,前提是放开了端口8081或者关闭了防火墙

   登录admin,密码可能是123456,如果不是,就到/opt/nexus/nexus-data下找admin.password文件,里面就是admin的密码了。第一次登录进去之后会让重新设置密码

   至此,nexus搭建已完成。

  6.5 测试

    6.5.1 修改maven的settings.xml文件

<!--l加入server配置,用于后续发布包权限验证-->
	<server>
        <id>nexus-releases</id>
        <username>admin</username>  #账号密码就是nexus的账号密码
        <password>*****</password>
    </server>
    <server>
        <id>nexus-snapshots</id>
        <username>admin</username>
        <password>*****</password>
    </server>

==============================================================================

<!--l加入mirror配置-->

<!--中央仓库镜像已经加了的就不用加了-->
<mirror> <id>nexus-aliyun</id> <mirrorOf>central</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror>
<mirror> <!--该镜像的唯一标识符。id用来区分不同的mirror元素。 --> <id>maven-public</id> <!--镜像名称 --> <name>maven-public</name> <!--*指的是访问任何仓库都使用我们的私服--> <mirrorOf>*</mirrorOf> <!--该镜像的URL。构建系统会优先考虑使用该URL,而非使用默认的服务器URL。 --> <url>http://192.168.88.139:8081/repository/maven-public/</url> </mirror>

    6.5.2 修改pom文件

    <!--配置私服发布地址,repository里的id需要和maven配置setting.xml里的server id名称保持一致-->
    <distributionManagement>
        <repository>
            <id>nexus-releases</id>
            <name>Releases</name>
            <url>http://192.168.88.139:8081/repository/maven-releases/</url>
        </repository>
        <snapshotRepository>
            <id>nexus-snapshots</id>
            <name>Snapshot</name>
            <url>http://192.168.88.139:8081/repository/maven-snapshots/</url>
        </snapshotRepository>
    </distributionManagement>

 

      配置完成后,可使用mvn deploy将会将公共模块发布到maven私仓。

    注:如果项目版本号末尾带有 -SNAPSHOT,则会发布到snapshots快照版本仓库

    如果项目版本号末尾带有 -RELEASES 或什么都不带,则会发布到releases正式版本仓

    6.5.3 打包一个项目到nexus私服并引用

 查看nexus上,已经有相应的jar包了

 在另外一个模块引用也是能引用到

   6.6 页面介绍 

默认仓库说明: 

maven-central:maven中央库,默认从Central Repository:拉取jar,可以改成阿里仓库

maven-releases:私库发行版jar,初次安装完后,将Deployment policy设置为Allow redeploy

maven-snapshots:私库快照(调试版本)jar

maven-public:仓库分组,把上面三个仓库组合在一起对外提供服务,在本地maven基础配置settings.xml或项目pom.xml中使用

仓库类型:

Group:这是一个仓库聚合的概念,用户仓库地址选择Group的地址,即可访问Group中配置的,用于方便开发人员自己设定的仓库。maven-public就是一个Group类型的仓库,内部设置了多个仓库,访问顺序取决于配置顺序,3.x默认Releases,Snapshots,Central,也可以自己设置。

Hosted:私有仓库,内部项目的发布仓库,专门用来存储本地项目生成的jar文件

Snapshots:本地项目的快照仓库

Releases: 本地项目发布的正式版本

Proxy:代理类型,从远程中央仓库中寻找数据的仓库(可以点击对应的仓库的Configuration页签下Remote Storage属性的值即被代理的远程仓库的路径),如可配置阿里云maven仓库

Central:中央仓库

 

七 gitlab-runner 发布springboot项目

  完成上面软件安装和配置之后,接下来可以实现一个简单的springboot项目发布测试了。实现修改代码后,提交至gitlab,然后自动更新发布。

  7.1 启动gitlab-runner

#docker启动gitlab-runner,并将服务器中的java,maven挂载进容器(也可以在容器中安装jdk和maven)

docker run -d  --name runner --restart always -p 8080:8080 

-v /otp/gitlab-runner/config:/etc/gitlab-runner

-v /opt/gitlab-runner/run/docker.sock:/var/run/docker.sock

-v /opt/gitlab-runner/bin/docker:/usr/bin/docker

-v /opt/maven3.6/apache-maven-3.6.0:/home/gitlab-runner/apache-maven-3.6.0

-v /usr/local/java/java8:/home/gitlab-runner/java8

gitlab/gitlab-runner;

 

#进入容器,如果没有vim,先安装vim

apt-get update

apt-get install vim

 

进入容器,配置环境变量

vim /etc/profile

在末尾加上:

#java environment

export JAVA_HOME=/home/gitlab-runner/java8    #路径换成自己的

export JRE_HOME=${JAVA_HOME}/jre  

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  

export PATH=${JAVA_HOME}/bin:$PATH

 

#maven environment

export MAVEN_HOME=/home/gitlab-runner/apache-maven-3.6.0    #路径换成自己的

export PATH=$PATH:$MAVEN_HOME/bin

  7.2 在gitlab上创建runner,在gitlab-runner中注册runner,步骤上面安装gitlab-runner中有

  7.4 创建一个简单的springboot项目,就一个controller返回一直字符转,怎么在gitlab中创建项目这些就省略了。其中.gitlab-ci.yml 文件个pom文件如下

   .gitlab-ci.yml

stages:
  - test
test:    # 名字可以自定义
  stage: test    # 从stages中选择
  tags:    # 标签需要gitlab中标签名
    - runner
  script:    # 执行的脚本,可以是sh,except等等
    - echo "Test .gitlab-ci.yml1!"
    - mvn -v
    - mvn package

 

   pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>test-runner</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <version>2.3.12.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.3.12.RELEASE</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
<!--                不配版本号的话,可能出现打出的jar包运行不了 springboot的版本-->
                <version>2.3.12.RELEASE</version>
<!--                <version>2.0.0.RELEASE</version>-->
                <configuration>
                    <!--设置为true,以便把本地的system的jar也包括进来-->
                    <includeSystemScope>true</includeSystemScope>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
<!--        jar包名称-->
        <finalName>testpro</finalName>
    </build>

</project>

 

  7.5 编辑.gitlab-ci.yml文件,实现自动发布

 

 

 
posted on 2024-06-24 21:19  想去放牛  阅读(325)  评论(0编辑  收藏  举报