如何为Java spring项目正确而简单地设置Gitlab-CI / CD

时间:2019-05-13 21:56:17

标签: java spring maven configuration gitlab-ci

我正在尝试使用Gitlab-ci作为我的Maven Java Spring多模块项目的CI / CD管道。如何设置/修复我的配置?

  

13/05/19错误:   我已经测试了许多选项,其中一些可行,其他没有。目前,当gitlab尝试运行我的 test-business 个人资料时,我收到“ 失败的连接”或“ 连接被拒绝”。   19年6月16日错误:我尝试将网址修改为datasource.properties文件,例如:url=jdbc:postgresql://runner@postgres:5432/db_myerp而不是localhost:9032(我使用此网址进行本地集成测试),但是现在我得到了错误:

org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.postgresql.util.PSQLException: The connection attempt failed.
    at com.dummy.myerp.testbusiness.business.TestIntComptabiliteManagerImpl.insertEcritureComptable(TestIntComptabiliteManagerImpl.java:127)
Caused by: org.postgresql.util.PSQLException: The connection attempt failed.
    at com.dummy.myerp.testbusiness.business.TestIntComptabiliteManagerImpl.insertEcritureComptable(TestIntComptabiliteManagerImpl.java:127)
Caused by: java.net.UnknownHostException: runner@postgres
    at com.dummy.myerp.testbusiness.business.TestIntComptabiliteManagerImpl.insertEcritureComptable(TestIntComptabiliteManagerImpl.java:127)

我试图设置一个bootstrapContext.xml文件来加载其他上下文。 我还尝试添加一个datasource.properties文件。 我曾经多次修改过.gitlab-ci.yml配置文件。

我有在本地运行的junit测试,以及要使用其在线CI / CD解决方案在gitlab-ci.com上运行的集成测试(“测试业务”配置文件)。

我的设置:

这是我intelliJ中的文件树: File Tree in IntelliJ File Tree 2nd part

gitlab-ci.yml:

---
before_script:

image: "maven:latest"
services:
  - "postgres:latest"
stages:
  - test
test:
  script:
    - "echo \" TEST INTEGRATION - BUSINESS\""
    - "mvn clean install -f src/pom.xml -P test-business"
  stage: test
variables:
  DATABASE_URL: "postgres://runner@postgres:5432/db_myerp
  POSTGRES_DB: db_myerp
  POSTGRES_PASSWORD: myerp
  POSTGRES_SCRIPT_CREATION_SCHEMA: 01_create_schema.sql
  POSTGRES_SCRIPT_CREATION_TABLES: 02_create_tables.sql
  POSTGRES_SCRIPT_INSERT_DATA: 21_insert_data_demo.sql
  POSTGRES_USER: usr_myerp

(注意:-f src/pom.xml是精确的我gitlab的pom.xml文件在哪里,因为他没有进入gitlab的根目录。)

datasource.properties(进入myerp业务...资源)

driver=org.postgresql.Driver
url=jdbc:postgresql://localhost:5432/db_myerp
dbuser=usr_myerp
dbpassword=myerp

注意:关于url,我不确定,我尝试将其更改为测试目的的不同时间。在本地计算机上,我在本地主机上使用docker:9032,但是在gitlab-ci上,我应该使用docker服务,对吗?

BootstrapContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns="http://www.springframework.org/schema/beans"
       xmlns:ctx="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                           http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">

    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>datasource.properties</value>
            </list>
        </property>
        <property name="ignoreUnresolvablePlaceholders" value="false"/>
        <property name="fileEncoding" value="UTF-8"/>
    </bean>
   <!-- <bean id = "dataSourceMYERP"
          class = "org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name = "driverClassName" value = "org.postgresql.Driver"/>
        <property name = "url" value = "jdbc:postgresql://localhost:9032/db_myerp"/>
        <property name = "username" value = "usr_myerp"/>
        <property name = "password" value = "myerp"/>
    </bean>-->
    <import resource="classpath:com/dummy/myerp/business/applicationContext.xml"/>
    <import resource="classpath:com/dummy/myerp/business/transactionContext.xml"/>
    <import resource="classpath:com/dummy/myerp/consumer/sqlContext.xml"/>
    <import resource="classpath:com/dummy/myerp/consumer/applicationContext.xml"/>
    <import resource="classpath:com/dummy/myerp/technical/applicationContext.xml"/>
</beans>

父pom.xml:

Link to parent pom.xml

总结:

我有一个使用单元测试和集成测试的多模块项目。 在本地,我使用运行我的本地postgreSQL的docker。目前,测试正在进行中。 我想适当地使用Gitlab-ci / cd在线解决方案,但是我对了解一切工作原理以及如何以最简单的方式配置它有些困惑。

0 个答案:

没有答案