标签归档:git

使用jenkins job的触发远程构建需要登录或403错误的解决办法

在job的配置中,可以配置“触发远程构建”。配置之后,可以通过访问jenkins对外开放的一条特定url来触发job进行系统构建。对于想在git或svn提交后就进行构建的,是一个十分实用的功能。

触发远程构建配置

但是,如果在jenkins中配置了权限限制,则在一个没有登录jenkins或使用例如curl网络命令去访问这个url时,会提示登录或返回403错误。

要解决这个问题,就需要对匿名用户的权限进行配置了。

经测试,对匿名用户权限进行如下配置后,即可在没有登录的情况下触发远程构建了。

匿名用户权限配置
对于匿名用户,job下的read和build都需要勾选。

2017年05月26日更新

匿名用户权限配置
匿名用户权限中,不需要勾选build也能进行触发远程构建,如果勾选了build,匿名用户查看view时,可以点击构建按钮对项目进行构建,这样就不安全了。

git+maven+tomcatの一个骚年的发布历程

    好吧,你做了个服务,用git当代码库,maven进行编译打包,tomcat做为容器,嗯,这是常见的屌丝套餐。然后,你要发布了,最简单的方式当然是写个发布脚本啦,脑海中浮现出这样的思路:

    1. 清理掉旧代码。

    2. 从git上下载新代码到服务器。

    3. 用maven进行编译,打包。(maven妥妥的为你准备了一堆插件)

    4. 重启tomcat。

    哇塞,好像一切都挺简单的,开搞吧。

    首先,你用rm清理掉旧代码。尼玛,普通用户没有权限!这怎么行,果断修改待清理的文件夹的权限。但你内心隐隐感觉不太对,是的,骚年,权限问题会面将一直伴随着你。(到此,你是否在考虑用sudo权限来执行脚本了,呵呵,先继续往下看吧)

    该是下载代码了:git clone -b ${version} ssh://”$user”@host:port/project.git。哇咔咔,这一步so easy,什么意外都没发生。

    接下来,是重头戏了,编译和打包。首先,进到你的父maven工程里,运行mvn install -Dmaven.test.skip=true。卧槽,又是没有权限。这时候,你又想到了sudo,于是,你小心翼翼地在终端加上sudo试了一下。哗啦啦,拉下一片日志,编译成功,哇哈哈,偶是甜菜!然后你兴高采烈地将脚本里的命令改为sudo mvn install -Dmaven.test.skip=true,运行脚本,呵呵,你傻眼了。

    sudo: mvn: command not found

    唉,忽然感觉心好累。百度啊~google啊~,你试了一圈,没错,不管用,不要问我这是为嘛,我滴故乡在远方。好吧,你改回用普通用户执行脚本,不用sudo了,接着把maven的本地仓库权限也改了。终于,install成功了。

    人生还得继续,你进入待发布成war包的工程下,执行mvn tomcat:redeploy(首次发布使用mvn tomcat:deploy。另外,网上会告诉你mvn tomcat7:deploy,这个不知是否只适用于tomcat7,偶们用的是tomcat8)

    呼~你常常吐出一口气,总算大体完成了,重启tomcat(这个命令太简单,偶不想说),进入tomcat服务URL下的/manager/,看到,瓦伊!服务怎么没起来。

    各种猜测纷至沓来了,tomcat的服务的密码权限没配置好?tomcat8无法使用maven插件来发布?打包没打好?

    骚年于是到处查查看看,什么问题都木有发现。

    不对啊,我应该看tomcat启动日志才对哦(默认在tomcat安装目录的/logs/catalina.out ),呵呵,偶是sb,数据库没连上,没在hosts中配置数据库URL对应的ip。

   改之,重启,OK。

   这件事,告诉我们,日志是多!么!重!要!啊!

    欧拉,碎觉!

    【附录】

    发布成war包的pom.xml

<build>
<finalName>projectName</finalName>
<sourceDirectory>src/main/java</sourceDirectory>
<testSourceDirectory>src/test/java</testSourceDirectory>
<testResources>
<testResource>
<directory>src/test/resources</directory>
</testResource>
</testResources>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<encoding>UTF-8</encoding>
<source>1.6</source>
<target>1.6</target>
<meminitial>128m</meminitial>
<maxmem>512m</maxmem>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.2</version>
<configuration>
<warSourceExcludes>
/test/
</warSourceExcludes>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<url>http://host/:port/manager</url>
<!– server、username、password对应maven的setting下的配置 –>
<server>test</server>
<username>test</username>
<password>test</password>
<path>/</path>
<!– war文件路径缺省情况下指向target –>
<!–<warFile>${basedir}/target/${project.build.finalName}.war</warFile> –>
</configuration>
</plugin>
</plugins>

</pluginManagement>
</build>