美文网首页
配置push gitlab触发jenkins自动打包发布记录

配置push gitlab触发jenkins自动打包发布记录

作者: 云鹤道人张业斌 | 来源:发表于2020-06-19 14:06 被阅读0次

    前提:承接上篇 flutter1.9 + vscode + Andorid SDK + java JDK实践,用flutte-web做了一个简单的导航网页(这里推荐老孟的组件库),现在发布一个flutter-web做的门户导航,导航资源(常用地址)在项目json文件中

    目的: 任何有权限的人更改项目的json文件(增减常用网站资源)后,提交代码到git就能自动发布

    准备工作和配置

       1. 服务器一台(安装flutter,jenkins,nginx)

       2. 登录服务器工具(我用secureCRT  => 用到这个就想到java大神--陈涛) 

       2. 配置jenkins, 配置gitlab

       3. 配置nginx访问页面

    第一步: 安装secureCRT

    crt详细破解教程  就不赘述了。看完链接记得这两个点: 

    1. 输入name和company 用截图图片上的 

     2. 点击generate重新生成license key 再粘贴过去否则不会成功

    第二步: 在linux上安装flutter

     前提:我推荐先看一篇关于linux环境变量的文章  环境配置文件的区别 

     了解了基础知识,我们来操作

      1.  安装flutter

        我选在在home目录下, git clone  https://github.com/flutter/flutter

       很慢的话,我就直接在下载到本地(链接要是打不开,就去上面的github上下载)

       2. 如果是下载到本地,就用CRT上传本地安装包到服务器  

            (1)在 CRT  按ALT+P进入sftp

            (2)pwd查看当前所在目录

            (3)cd  /home (我下载在home目录)

             (4)put  本机文件路径(put  C:\Users\Downloads\flutter_linux_1.17.3-stable.tar.xz)

             (5) 在服务器home目录下查看是否上传成功

              (6) 

                       将xz文件解压成tar文件 xz -d filename (压缩xz -z filename)

                       将tar文件解压  tar -xvf filename (压缩tar -cvf filename)

                        或者一次性到位tar xvJf filename

      3.  解压了安装包出现了flutter文件夹,接下来就是配置环境变量 

       进入 vi ~/.bash_profile

       按 i  进行插入编辑

      export PUB_HOSTED_URL=https://pub.flutter-io.cn

      export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn

      export PATH=/home/flutter/bin:$PATH

    按 esc  退出插入模式  :wq保存退出

    source ~/.bash_profile 使保存生效

    4.验证是否有了flutter命令

    执行 flutter doctor -v

    如果可以了 查看分支  flutter channel

    切换分支flutter channel beta  (web项目才需要到beta)

    尝试一下flutter build  web打包可不可以

    提示我暂时不支持,所以切记要开启web支持 , 执行:flutter config --enable-web 

    执行 flutter doctor -v 能看到有devices就ok 了


    第三步: 在服务器上安装jenkins

    完美的安装教程点这里

    service jenkins start  提示service 命令找不到,那就安装一个

    bash: service: command not found

    1. yum list | grep initscripts

    2. yum install initscripts -y

    第四步:配置gitlab push触发jenkins自动打包

      注意:三个插件:gitlab(只有有这个插件才会出现下图图一钩子,如果是github触发就需要相应的github插件,下面的钩子名称也会有所区别),gitlab hook, Build Authorization Token Root

    图一

    下图中的token是点问号生成的,注意了。

    图二

      参考链接 1  参考链接 

    这里我只描述问题。按照第一篇就可以配置成功,第二篇辅助

    问题1:gitlab 10.6 版本以后为了安全,不允许向本地网络发送webhook请求,如果想向本地网络发送webhook请求,则需要使用管理员帐号登录

    解决1:下图圈出来的地方,管理员有一个扳手样的设置,进入admin area后选择---setting ---network---找到下图中的outBound request 勾选 allow requests to the local network from hooks services

    问题二: 下载插件总是失败,gotlab hook 依赖的ruby-runtime提示不支持java11

    现在高版本jenkins都支持java11,甚至会提示你升级。但是插件没跟上兼容。但是在虚拟机上查看java版本java -version看到的是8.    让后一度困惑。

    后来发现乌班图上面有两个java版本,一个11,一个8. 切换java版本后gitlab hook安装成功

    ```

    //此命令将列出Ubuntu存储库中可用的所有JDK软件包,系统上仅安装带有“i”前缀的软件包

    sudo aptitude search jdk  // 查看所有安装的jdk

    which java  // 安装目录

    sudoupdate-alternatives --config java  // 切换java版本

    ```

    如果是下面的错误,多下载几次吧。要不就去官网下载后上传

    java.net.UnknownHostException: updates.jenkins.io

    配置成功后,点击test测试,返回200代表成功,或者修改代码push,看见jenkins有构建记录,那代码在哪里呢

    /usr/lib/jenkins/jenkins.war WAR包

    /etc/sysconfig/jenkins 配置文件

    /var/lib/jenkins/ 默认的JENKINS_HOME目录

    /var/log/jenkins/jenkins.log Jenkins日志文件

    代码已经可以自动化部署到我们的jenkins所在的服务器,目录为jenkins的workspace目录

    在这里

    /var/lib/jenkins/workspace

    这个工作目录包含代码 和打包后的文件,可以指定到其他文件夹,按照下面的设置代码就会被放到指定文件夹

    jenkins部署到多台服务器,有兴趣可以参考链接

    问题2: 当服务器有了flutter命令后,打包却不成功,jenkins构建错误记录:提示找不到flutter命令

    这里就要注意  jenkins执行shell环境变量问题,需要知道jenkins找环境变量的顺序

    解决2:

    在执行命令前都去刷一遍变量文件:source ~/.bash_profile 就可以了

    可以发现构建前会出来一堆的文件信息,最下面就是我们配置的环境变量,找到了环境变量就可以构建了

    第五步 :在服务器安装nginx,配置好后访问页面

    安装很简单

    在安装nginx前首先要确认系统中安装了

    安装: yum -y install gcc pcre-devel zlib-devel openssl openssl-devel

    (1) 下载 wget http://nginx.org/download/nginx-1.12.2.tar.gz

            # 如果没有安装wget

            # 下载已编译版本

            $ yum install wget

        (2) 解压 tar.gz 使用tar命令进行解压 : tar -zxvf nginx-1.12.2.tar.gz

    tip:解压到指定的文件夹 :tar -zxvf nginx-1.12.2.tar.gz  -C /usr/java

        gz文件的解压 gzip 命令: gzip -b nginx.gz

        (3) 进入解压后的文件夹 cd nginx-1.12.2

        (4) 执行 ./configure  来查看是否可以执行安装

    安装报错误的话比如:“C compiler cc is not found”,这个就是缺少编译环境,安装一下就可以了 yum -y install gcc make        gcc-c++ openssl-devel wget

            安装Nginx时报错

            ./configure:  error: the HTTP rewrite module requires the PCRE library.

    解决:yum -y install pcre-devel openssl openssl-devel

            如果没有error信息,就可以执行下边的安装了:

        (5) 安装  make -j4 && make install

        (6) 此时已经有nginx文件夹生成,返回进入到nginx目录,执行sbin/nginx -t 看结果是否成功 (在/usr/local/nginx)

    (7) 编辑nginx配置文件

    到nginx目录  

    cd usr/local/nginx

    vim conf/nginx.conf   配置端口和打包后的路径

    :wq保存退出后,在nginx目录下重启nginx  

    重启服务 sbin/nginx -s reload

      问题:在重启时报错  提示 nginx: [error] invalid PID number "" in "/usr/local/nginx/logs/nginx.pid"

      解决: [root@localhost nginx]/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

      再重启即可

    curl 127.0.0.1:8324 尝试访问本地文件,可行就很nice

    问题:如果在浏览器打不开,要考虑是不是防火墙没开这个8342 端口

          检查系统版本cat /etc/redhat-release

          显示  CentOS Linux release 7.5.1804 (Core)

          CentOS7 默认使用firewalld防火墙,也有的是iptables防火墙,去这里仔细看看命令检查,开启端口 传送门

          查看端口是否开启 : firewall-cmd --query-port=8324/tcp

          开启端口 : firewall-cmd --add-port=8324/tcp --permanent  ( --permanent   #永久生效,没有此参数重启后失效)

           重启防火墙: systemctl restart firewalld

    问题:访问页面提示403 forbidden

    修改nginx配置文件第一行: vim  conf/nginx.conf

    user root; 给nginx 用户root权限

    tips:重启服务器后记得要重启jenkins 和 nginx  ,当然你也可以配置开机自启动

    相关文章

      网友评论

          本文标题:配置push gitlab触发jenkins自动打包发布记录

          本文链接:https://www.haomeiwen.com/subject/gdtvxktx.html