标签: 自动化

  • 使用Rultor简化开发

    通常一个项目,特别是开源项目有很多常见的操作,比如merge一个pull request或者发布一个版本。

    merge一个pull request可以通过github的issue页面完成,但是发布版本通常需要一些准备,特别是证书等等。

    Rultor是一个辅助工具,可以完成合并,发布等功能。

    Rultor的配置是.rultor.yml,这是一个例子

    decrypt:
      settings.xml: "repo/settings.xml.asc"
      pubring.gpg: "repo/pubring.gpg.asc"
      secring.gpg: "repo/secring.gpg.asc"
    docker:
      image: "yegor256/java8" 
    release:
      script: |
        mvn versions:set "-DnewVersion=${tag}"
        git commit -am "${tag}"
        mvn clean deploy -P central-deploy --settings /home/r/settings.xml -P cxf-spring-boot-starter-maven-plugin

    使用的时候很简单,比如需要发布新版本,直接创建一个issue,在其中@tultor即可

    @rultor release, tag is 
  • Maven Wrapper

    Maven Wrapper

    Maven是一个常用的构建工具,但是Maven的版本和插件的配合并不是那么完美,有时候你不得不切换到一个稍微旧一些的版本,以保证所有东西正常工作。

    而Gradle提供了一个Wrapper,可以很好解决版本切换的问题,当然更重要的是不需要预安装Gradle。

    Maven虽然没有官方的Wrapper,但是有一个第三方的Wrapper可以使用。

    安装很简单mvn -N io.takari:maven:wrapper,安装完成如下

    安装

    使用的时候直接./mvnw clean install即可,它会自动下载最新版本来执行。

    运行

    如果需要指定版本,重新生成mvnw文件在运行即可

    mvn -N io.takari:maven:wrapper -Dmaven=3.1.0
    ./mvnw clean install

    切换版本

  • 使用Docker构造Jenkins集群

    使用Docker构造Jenkins集群

    Jenkins作为常用的CI功能自然是不用说了,如果运行在上面的项目有很多,而且对于环境的要求各不相同就稍微有点复杂了。

    比如一个Java项目,使用maven构建,Java语言等级为8,但是有部分代码又希望保有java7的语言等级,那么环境上的配置就稍微复杂了一点。

    如果还有其他比如Python,NodeJs项目,那么这个机器的环境就极为复杂了。

     

    Jenkins本身是支持主从节点的,也就是说具体的构建是可以指定由某个节点完成的。

    也就意味着我们只需要提供一个由所需环境的从机即可。当然,由一个独立的主机来提供是最好的,但是很多时候并没有那么多资源,而且环境需求也多变。

    这种情况下Docker就是一个很好的选择了,我们来尝试用Docker提供一个Java8带maven的环境。

    Jenkins主从模式可以有四种方式实现,我们选择最简单的,从ssh登录。

    整体配置如下

    FROM maven:3-jdk-8
    RUN apt-getupdate && apt-get install -y openssh-server
    RUN mkdir /var/run/sshd
    RUN mkdir /var/jenkins
    
    RUN echo'root:jenkins' | chpasswd
    RUN sed -i's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config
    
    RUN sed's@sessions*requireds*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd