vuepress介绍
最近在看鱼皮直播时,了解到一个新的静态网站生成器,看起来似乎蛮好用,于是就自己也尝试了一下,它就是VuePress。
VuePress是基于vue的静态网站生成器,类似于hexo那种可以直接把markdown等格式的文件解析成静态网页,用来搭建个人网站比较方便。
可能很多人了解过hexo,它生成的静态网站,是支持本地离线运行访问的,这一点尤其是对于笔记管理类的博客就非常方便。
最近在阿里云服务器上重新安装了jenkins,参照我之前的笔记,同时打算集成更多的常用的插件。
除了新插件的使用记录外,还遇到了一些其他的问题,觉得有必要也补充记录。
之前笔记参考:
centos7中jenkins安装和验证
jenkins初步理解及参数化构建
jenkins pipeline部署实践及重点问题分析
根据网上的说法,以及暂时使用过程中的感受,使用自由风格或者maven风格来创建jenkins item,虽然也能实现自动化部署,但是面对相对复杂的构建需求时可能就不太好实现。
一般正式的项目,除了基本的拉取代码、编译代码、运行junit、打包、启动或者重启外,可能还会涉及到sonar代码检查、集成测试、关联例如jira或者conflunce等系统。
因此,我目前所知道的很多正式项目在使用jenkins时可能都会使用pipeline流水线,如果要使用pipeline,需要先安装pipeline
插件。
pipeline看起来好像也不是太难,但是真正自己操作的时候可能会发现很多地方会有小问题。例如可能涉及到ssh问题,可能涉及到容器操作问题,也可能涉及到shell脚本问题。
以下是我实际操作过程中的一些记录,主要分为两个部分:一部分是我只使用了一台linux虚拟机,jenkins、git、maven、springboot服务都在上边跑;另一部分是我把spirngboot服务单独放到了另一个虚拟机上。
同一台机的时候,不涉及ssh,但是却会涉及到jenkins杀死java进程的问题,不同机器就涉及到ssh远程调用shell脚本的问题。
就我目前了解到的,一个jenkins自动化部署,至少包含拉代码、编译和打包及运行单元测试、部署这几个步骤。
拉代码指的是从代码托管服务器下载代码,编译和打包及运行单元测试,实际上是项目构建工具的功能,例如maven、gradle。
根据个人理解,jenkins不安装插件,也能够完成基本的自动化部署,因为它本身就支持运行shell脚本,支持参数化构建,支持多种触发器等。只要能运行shell脚本,那么不论是拉代码,还是构建和部署,都是可以通过linux的命令完成的。(这一段没有经过验证,也基本不会这样使用)
但是,jenkins本身就是为了自动化,为了简化我们的工作,所以如果有能够进一步提升效率、简化操作的插件,当然是能用就用了,例如常见的git插件、maven插件等。
git基础插件,在系统管理的插件管理中搜索git plugin
。
maven基础插件,插件名称是Maven Integration plugin
。
当然了,刚安装的jenkins一般都是英文版,可能大部分人都还会安装汉化插件,也就是Localization: Chinese (Simplified)
。
字符串类主要是指String、StringBuffer和StringBuilder,从源码注释可以看到,String和StringBuffer都是jdk1.0就有的,而StringBuilder则是jdk1.5才有。
一般来说,最常用的是String,是不可变的,然后是可变的StringBuilder和StringBuffer,其中StringBuffer是线程安全的,因为里边的方法都是加了synchronized关键字的。
StringBuilder和StringBuffer都是继承自AbstractStringBuilder类,里边很多方法也都是共用的这个抽象类你的逻辑,所以除了是否线程安全,其他的基本都一样。
junit
从某种程度上来说应该是很简单的一项技术,但是正所谓会者不难,难者不会,如果没有好好地用过,总会有些你以为是对的地方,其实他是错的。
对于有7年java开发经验的我来说,不完全会写junit,实在是汗颜。
以前的项目基本都没怎么要求写junit,所以我一直误以为junit简单到就是在Test中调一下相关方法,只要跑出绿色结果就好了,直到这一次需要相对正式的junit时,才发现这样是不对的,以下是从错到对的一个记录。