0%

其中gitee可以使用其他代码管理系统替代。

前言:

前几个开始做起专职的前端开发。虽然已经写了1年多的Vue.js,但对于发布、展示,不停的npm run build亦或是Yarn run build,然后等待构建项目,在通过MobaXterm拖到服务器上。还是比较反感,心心念念的解决方案DevOps,于是有了这篇文章。

准备工作

准备环境

  1. Gitee账号注册。
  2. 本地安装Docker
  3. 安装Jenkins(必须先安装完Docker)。
     #创建Jenkins工作目录
     sudo mkdir jenkins/data/ -p   
     #创建Jenkins容器
     docker run --name myjenkins -p 8080:8080 -p 50000:50000 -v /opt/jenkins/data:/var/jenkins_home -d --restart=always  jenkins/jenkins
     #查看Jenkins初始化密钥(密钥会打印在日志里)
     docker logs myjenkins -f
     #找到密钥后填入(打开浏览器:8080)然后终端的日志就可以按`Ctrl + C`了。
     
    
  4. 公网IP(花生壳可以解决这个问题,免费版可以内网穿透,数量有限制)。

开始

  1. 使用vue-cli创建一个项目(我这里使用UniApp的模板,创建下来是一个UniApp的实例项目)。
  2. 加入Git版本控制。
  3. Gitee推送。
  4. 进入Gitee上面的项目设置里面,进入WebHook选项。
  5. 进入<ip>:8080进入Jenkins管理页面。新增安装以下几个插件。
    1. Publish Over SSH
    2. Docker Plugin
    3. Gitee插件
    4. NodeJs
  6. 进入系统管理=>系统设置,配置以下项:
    1. Gitee标签项
    2. Publish over SSH标签项
    3. 云=>Docker(配置时需要开启Docker Tcp 访问控制)
      1. Docker Host URI,填写Docker Tcp访问控制地址。
  7. Jenkins中新建任务。选择自由构建风格。
    1. 源码管理:输入Gitee仓库。
    2. 构建触发器:Gitee webhook 触发构建。其中:Gitee WebHook 密码,点击生成,然后填回步骤4中的WebHook页面,触发地址,填写外网可以访问的地址:如http://花生壳域名/project/uniapp_hello
    3. 构建环境选择NodeJs
    4. 构建:
      1. 选择执行Shell=>输入构建命令:
         npm -v
         pwd
         npm install
         npm run build:h5
         
        
      2. 构建Docker镜像:
        1. Cloud选择上面创建的构建服务器。
        2. image:输入构建的镜像名称,如需要推送私有仓库,请按照一定规则填写此部分。
        3. 勾选Push image
    5. 构建后操作:
      1. Send build artifacts over SSH:选择添加的Server
      2. SourceFiles:*
      3. Exec command:
         docker rmi 192.168.1.1:9090/hello-uni-web:latest -f
         docker rm hellouni -f
         docker run -d -p 10088:80 --name=hellouni --rm 192.168.1.1:9090/hello-uni-web:latest
         
        

测试构建

  1. 编写Dockerfile然后推送至GiteeDockerfile内容:
     FROM httpd:2.4
     COPY dist/build/h5 /usr/local/apache2/htdocs/
     EXPOSE 80
     
    
  2. 等待构建
  3. 查看构建日志,并访问部署地址。

参考

  1. Docker+Jenkins持续集成环境(1)使用Docker搭建Jenkins+Docker持续集成环境
  2. Gitee Jenkins Plugin
  3. Docker打开TCP管理端口

前言

在家想改个Bug,然后公司外网没有部署服务器,仅有一个内网的服务器,程序需要连上内网的服务器进行联调。再多次尝试下有了此文。

准备工作

  1. 将公司的电脑开机(PS:走的时候没关)
  2. 公司的电脑上安装TeamView软件
  3. 家里的电脑安装TeamView软件

Start

  1. 登录自己的TeamView账户
  2. 打开远程电脑的授权轻松访问(仅公司端)
  3. 安装VPN驱动(两端电脑均需要)
  4. 再远程计算机配置端口转发(为了尽可能的简单方便,我找了一个别人写的小工具),工具下载后使用右键以管理员身份运行,下面是程序打开的样子。
  5. 点击标签卡映射列表,删除已存在的所有条目。
  6. 配置原Socket,填写TeamView给我们的ip地址(如:7.200.200.2)加上你想定义的端口(任意),欲映射Socket列表填写想要转发给局域网的机器的请求地址,如:我司局域网内部署端口为8080,则填写192.168.200.140:8080。(其他服务也按此方法配置,配置后点击保存,然后重新打开软件)
  7. 此时本地计算机可以访问远程局域网内的服务。

此时本地计算机已经可以访问远程计算机局域网内的服务了。但是无法将连接分享到手机上(本地局域网内的其他设备无法访问远程计算机局域网的服务资源),此时再本地计算机安装Wifi共享大师,必须是这个,虽然广告多到炸(删除程序目录下面的一个子程序可以使定时弹出的广告去除)。然后就可以愉快的调试了。PS:修改项目代码里的服务器地址为TeamView给出的服务器地址,好像是7.几开头的那个。

注意点

必须关闭系统防火墙

附件下载

TeamView 端口转发工具

End

9月21日更新 通过上面的Http_redirect无法向远程局域网中的Git服务器推送代码,故更新端口映射软件为PortTunnel,下载地址:立即下载(PS:部分杀软报毒,我也不知道为什么,反正就是能用有效)

Key: rtl8821CU,COMFAST CF-WU910A,Linux Ubuntu18.04安装报错,如下:

71031_COEX20170310-1212/include/osdep_service_linux.h:295:8: error: ‘_timer {aka struct timer_list}’ has no member named ‘data’
  ptimer->data = (unsigned long)cntx;
        ^~
/home/harry/wifi/RTL8821CU/RTL8821CU_WiFi_linux_v5.2.5.3_24795_COEX20170310-1212.20171031/driver/rtl8821CU_WiFi_linux_v5.2.5.3_24795.20171031_COEX20170310-1212/include/osdep_service_linux.h:296:2: error: implicit declaration of function ‘init_timer’; did you mean ‘_init_timer’? [-Werror=implicit-function-declaration]
  init_timer(ptimer);
  ^~~~~~~~~~
  _init_timer
In file included from /home/harry/wifi/RTL8821CU/RTL8821CU_WiFi_linux_v5.2.5.3_24795_COEX20170310-1212.20171031/driver/rtl8821CU_WiFi_linux_v5.2.5.3_24795.20171031_COEX20170310-1212/include/drv_types.h:32:0,
                 from /home/harry/wifi/RTL8821CU/RTL8821CU_WiFi_linux_v5.2.5.3_24795_COEX20170310-1212.20171031/driver/rtl8821CU_WiFi_linux_v5.2.5.3_24795.20171031_COEX20170310-1212/core/rtw_cmd.c:22:
/home/harry/wifi/RTL8821CU/RTL8821CU_WiFi_linux_v5.2.5.3_24795_COEX20170310-1212.20171031/driver/rtl8821CU_WiFi_linux_v5.2.5.3_24795.20171031_COEX20170310-1212/include/osdep_service.h: In function ‘thread_enter’:
/home/harry/wifi/RTL8821CU/RTL8821CU_WiFi_linux_v5.2.5.3_24795_COEX20170310-1212.20171031/driver/rtl8821CU_WiFi_linux_v5.2.5.3_24795.20171031_COEX20170310-1212/include/osdep_service.h:363:2: error: implicit declaration of function ‘allow_signal’; did you mean ‘do_signal’? [-Werror=implicit-function-declaration]
  allow_signal(SIGTERM);
  ^~~~~~~~~~~~
  do_signal
/home/harry/wifi/RTL8821CU/RTL8821CU_WiFi_linux_v5.2.5.3_24795_COEX20170310-1212.20171031/driver/rtl8821CU_WiFi_linux_v5.2.5.3_24795.20171031_COEX20170310-1212/include/osdep_service.h: In function ‘flush_signals_thread’:
/home/harry/wifi/RTL8821CU/RTL8821CU_WiFi_linux_v5.2.5.3_24795_COEX20170310-1212.20171031/driver/rtl8821CU_WiFi_linux_v5.2.5.3_24795.20171031_COEX20170310-1212/include/osdep_service.h:385:6: error: implicit declaration of function ‘signal_pending’; did you mean ‘timer_pending’? [-Werror=implicit-function-declaration]
  if (signal_pending(current))
      ^~~~~~~~~~~~~~
      timer_pending
/home/harry/wifi/RTL8821CU/RTL8821CU_WiFi_linux_v5.2.5.3_24795_COEX20170310-1212.20171031/driver/rtl8821CU_WiFi_linux_v5.2.5.3_24795.20171031_COEX20170310-1212/include/osdep_service.h:386:3: error: implicit declaration of function ‘flush_signals’; did you mean ‘do_signal’? [-Werror=implicit-function-declaration]
   flush_signals(current);
   ^~~~~~~~~~~~~
   do_signal
cc1: some warnings being treated as errors
scripts/Makefile.build:323: recipe for target '/home/harry/wifi/RTL8821CU/RTL8821CU_WiFi_linux_v5.2.5.3_24795_COEX20170310-1212.20171031/driver/rtl8821CU_WiFi_linux_v5.2.5.3_24795.20171031_COEX20170310-1212/core/rtw_cmd.o' failed
make[2]: *** [/home/harry/wifi/RTL8821CU/RTL8821CU_WiFi_linux_v5.2.5.3_24795_COEX20170310-1212.20171031/driver/rtl8821CU_WiFi_linux_v5.2.5.3_24795.20171031_COEX20170310-1212/core/rtw_cmd.o] Error 1
Makefile:1534: recipe for target '_module_/home/harry/wifi/RTL8821CU/RTL8821CU_WiFi_linux_v5.2.5.3_24795_COEX20170310-1212.20171031/driver/rtl8821CU_WiFi_linux_v5.2.5.3_24795.20171031_COEX20170310-1212' failed
make[1]: *** [_module_/home/harry/wifi/RTL8821CU/RTL8821CU_WiFi_linux_v5.2.5.3_24795_COEX20170310-1212.20171031/driver/rtl8821CU_WiFi_linux_v5.2.5.3_24795.20171031_COEX20170310-1212] Error 2
make[1]: 离开目录“/usr/src/linux-headers-4.18.0-21-generic”
Makefile:1893: recipe for target 'modules' failed
make: *** [modules] Error 2
##################################################
Compile make driver error: 2
Please check error Mesg
##################################################

安装教程

参考Github:https://github.com/whitebatman2/rtl8821CU

git clone https://github.com/whitebatman2/rtl8821CU
cd rtl8821CU
sudo apt-get install dkms
DRV_NAME=rtl8821CU
DRV_VERSION=5.2.5.3
sudo mkdir /usr/src/${DRV_NAME}-${DRV_VERSION}
git archive master | sudo tar -x -C /usr/src/${DRV_NAME}-${DRV_VERSION}
sudo dkms add -m ${DRV_NAME} -v ${DRV_VERSION}
sudo dkms build -m ${DRV_NAME} -v ${DRV_VERSION}
sudo dkms install -m ${DRV_NAME} -v ${DRV_VERSION}


#下面切换USB模式
lsusb
#这个后面的ID是你看到的那个
sudo usb_modeswitch -KW -v 0bda -p 1a2b

我的是这样的:

root@harry-O-E-M:~/wifigit/rtl8821CU# lsusb
Bus 002 Device 002: ID 0bda:1a2b Realtek Semiconductor Corp.   #这个
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

我们使用nmcli dev查看已启用的网卡:

root@harry-O-E-M:~/wifigit/rtl8821CU# nmcli dev
DEVICE           TYPE      STATE   CONNECTION
wlp5s0           wifi      已连接  1003N
wlx40a5eff71b6d  wifi      已断开  --
enp4s0           ethernet  不可用  --
lo               loopback  未托管  --

下一步连接WIFI

nmtui  #会出现一个图形化界面就可以愉快的连上wifi了!