我有一个Git存储库,其中包含一堆顶级maven项目(每个项目都位于他们自己的子目录中,并带有一个pom.xml).这里的顶级意味着这些项目位于存储库根目录下的子目录中.所有这些项目都应保留在同一个Git存储库中.
repo
+--- projectA
+--- pom.xml
+--- projectB
+--- pom.xml
Run Code Online (Sandbox Code Playgroud)
他们可以/应该由独立的詹金斯工作建立.所以我们有一个projectA的工作和一个projectB的工作.
以前使用Subversion,我能够设置一个Jenkins作业(对于每个项目),它只检查项目源并从pom.xml运行Maven构建.
使用Git模型(可能与所有DVCS相同),这种变化,我不确定什么是最佳实践.我看到了一些选项,我不喜欢这些选项:
你有没有看到更有用的方法(非常典型的设置).你有什么经历?任何最佳做法?
我必须映射一个复杂的Java类结构,它通常不会通过set-/get-methods暴露它们的字段(这是给定的,不能更改).因此,映射只能在直接字段访问上执行.推土机允许个别字段可访问,但我没有找到设置使这成为一般行为.因此,我不必为了使其可访问而明确地映射每个字段!
这个选项存在吗? - 在课堂上? - 在全球范围内?
一个gradle构建正在创建一个jacoco报告,由声纳跑步者接收.将声纳结果推送到声纳服务器后,即使所有测试都成功运行,也会显示单元测试覆盖率,但单元测试成功为0.
查看声纳跑步者日志,我看到以下项目报告源和类位置:
15:52:36.087 INFO - Source dirs: /poc-sonar/src/main/java
15:52:36.087 INFO - Test dirs: /poc-sonar/src/test/java, /Volumes/Disk/Development/poc-sonar/src/test/groovy
15:52:36.088 INFO - Binary dirs: /poc-sonar/build/classes/main
Run Code Online (Sandbox Code Playgroud)
这提出了第一个问题:Sonar是否必须查看已编译的测试类以进行分析?
进一步下来日志:
15:52:37.435 INFO - Sensor JaCoCoSensor...
15:52:37.445 INFO - Analysing /poc-sonar/build/jacoco/test.exec
15:52:37.546 INFO - No information about coverage per test.
15:52:37.548 INFO - Sensor JaCoCoSensor done: 113 ms
15:52:38.105 INFO - Execute decorators...
15:52:38.580 INFO - Store results in database
Run Code Online (Sandbox Code Playgroud)
Jacoco已经拿起了这个test.exec文件,但报道了"No information about coverage per test"
该日志声明是什么意思?声纳服务器实际上暴露了正确的覆盖范围!它是Sonar报告缺失测试成功的指标吗?获得该装置缺少什么
Unit Tests Coverage
50,0%
50,0% line coverage
Unit …Run Code Online (Sandbox Code Playgroud) 事件虽然内置的H2 EmbeddedDatabaseConfigurer提供了带有DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=false选项集的JDBC连接,但是引起了令人讨厌的异常AbstractEmbeddedDatabaseConfigurer.shutdown().
关于stackoverflow的这个主题已经有很多讨论.我试图对选项进行一些调整,并得出结论,自定义设置(DB_CLOSE_DELAY=20;DB_CLOSE_ON_EXIT=false)提供了一个自定义DataSourceFactory减少出现次数但不完全消除它.
/**
* This factory tries to solve the problem that Spring tries to close a data source that has already been closed by the H2 engine/H2 driver.
*/
public class H2DataSourceFactory implements DataSourceFactory {
private final SimpleDriverDataSource dataSource = new SimpleDriverDataSource();
@Override
public ConnectionProperties getConnectionProperties() {
return new ConnectionProperties() {
@Override
public void setDriverClass(Class<? extends Driver> driverClass) {
dataSource.setDriverClass(driverClass);
}
@Override
public void setUrl(String url) { …Run Code Online (Sandbox Code Playgroud) 尝试对自动为标签运行并使用规则为特定分支手动运行的作业进行建模。然而,该作业总是在没有用户干预的情况下触发
ismanual:
stage: prepare
rules:
# Always deliver a tagged build
- if: '$CI_COMMIT_TAG != ""'
when: on_success
# Manual deliver a feature branch build
- if: '$CI_COMMIT_BRANCH =~ /feature\/.*/'
when: manual
script:
- echo "hello"
Run Code Online (Sandbox Code Playgroud)
我正在使用 gitlab.com!