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

前提:承接上篇 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  参考链接 2 

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

问题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自动打包发布记录)