编译spring-cloud-gcp-1.2.1.RELEASE源码

鲲鹏镜像站中提供的二进制包是基于开源代码直接编译打包而成的,不含漏洞及BUG修复。

使用开源软件时需遵守开源软件的许可协议。

  1. 下载spring-cloud-gcp-1.2.1.RELEASE源码。

    1
    2
    3
    cd /home
    git config --global http.sslVerify false
    git clone https://github.com/spring-cloud/spring-cloud-gcp.git
    

  2. 切换到指定版本。

    1
    2
    cd spring-cloud-gcp
    git checkout v1.2.1.RELEASE
    

  3. 配置google-cloud-sdk Yum源。(如果当前环境访问网络时不需要代理,可不执行该步骤。)

    1. 备份Yum源。
      mkdir -p /etc/yum.repos.d/bak/
      mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/
    2. 新建google-cloud-sdk.repo文件。
      1
      vim /etc/yum.repos.d/google-cloud-sdk.repo
      
    3. “i”进入编辑模式,输入如下内容。
      [google-cloud-sdk] 
      name=Google Cloud SDK 
      baseurl=https://packages.cloud.google.com/yum/repos/cloud-sdk-el7-x86_64 
      enabled=1 
      gpgcheck=0 
      repo_gpgcheck=1 
      gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
      sslverify=false
    4. “Esc”键,输入:wq!,按“Enter”保存并退出编辑。
    5. 使Yum源生效。
      1
      2
      yum clean all
      yum makecache
      

  4. 安装google-cloud-sdk,google-cloud-sdk-pubsub-emulator和google-cloud-sdk-datastore-emulator。(如果当前环境访问网络时不需要代理,可不执行该步骤。)

    1
    yum install -y google-cloud-sdk google-cloud-sdk-pubsub-emulator google-cloud-sdk-datastore-emulator
    

    如果编译报错“(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)”,则执行以下命令。

    yum install -y google-cloud-sdk google-cloud-sdk-pubsub-emulator google-cloud-sdk-datastore-emulator --nobest

  5. 完成初始化。(如果当前环境访问网络时不需要代理,可不执行该步骤。)

    1
    gcloud init
    
    • 使用gcloud命令初始化环境会要求登录Google账号,若没有Google账号,请先注册Google账号。
    • 若编译环境需要借助代理访问Google网站,可参考如下图设置进行初始化,最后将链接复制到浏览器登录,将获取到的验证码填入。

      如出现“Enter project id you would like to use”,请输入spring-cloud-gcp

    • 若已登录Google账号,需选择Google账号。

  6. 启动datastore和pubsub。(如果当前环境访问网络时不需要代理,可不执行该步骤。)

    1
    2
    gcloud beta emulators datastore start --host-port localhost:8181 &
    gcloud beta emulators pubsub start --host-port localhost:8085 &
    

  7. 替换JAR包。

    编译过程中会拉取grpc-netty-shaded-1.23.0.jar包,此jar包不含有ARM64架构so,因此需要进行替换。

    1. 创建库目录“~/.m2/repository/io/grpc/grpc-netty-shaded/1.23.0/”
      1
      mkdir -p ~/.m2/repository/io/grpc/grpc-netty-shaded/1.23.0/
      
    2. 获取grpc-netty-shaded-1.23.0.jar包。
      1
      wget https://mirrors.huaweicloud.com/kunpeng/maven/io/grpc/grpc-netty-shaded/1.23.0/grpc-netty-shaded-1.23.0.jar  --no-check-certificate
      
    3. 将下载的JAR包复制到库目录下。
      1
      cp grpc-netty-shaded-1.23.0.jar ~/.m2/repository/io/grpc/grpc-netty-shaded/1.23.0/
      

  8. 编译。

    1
    ./mvnw clean install -Dgpg.skip=true
    

    若显示BUILD SUCCESS,则编译通过。

    • 如果编译时遇到GcpDatastoreEmulatorIntegrationTests报错,请参考spring-cloud-gcp异常问题的解决方法解决。
    • 由于老旧机械盘读写能力较弱,导致处理业务的时延较高,建议用户使用性能较优的磁盘进行业务验证,例如SSD盘。
    • 编译过程如果卡住,建议重启机器后,挂载磁盘到编译目录,再执行6(可选)和8

  9. 编译完成后关闭datastore和pubsub服务。

    1
    pkill -9 java