From 5f3a8bd318ddbe835be7c3db18ee8edc3b5ad946 Mon Sep 17 00:00:00 2001 From: Mirco Nasuti <mirco.nasuti@chuv.ch> Date: Wed, 13 Jul 2016 13:41:40 +0200 Subject: [PATCH] use flyway from Java instead of Maven --- docker-compose_build.yml | 14 ---- pom.xml | 83 ++++++++++++------- src/docker/build/Dockerfile | 2 - src/docker/build/build-in-docker.sh | 17 ---- .../PersistenceConfiguration.java | 11 +++ 5 files changed, 62 insertions(+), 65 deletions(-) diff --git a/docker-compose_build.yml b/docker-compose_build.yml index 53c3ab56a..b29bf59ec 100644 --- a/docker-compose_build.yml +++ b/docker-compose_build.yml @@ -4,22 +4,8 @@ services: backend_build: container_name: backend_build build: ./src/docker/build/ - depends_on: - - "db" volumes: - ./:/opt/portal/ - .m2:/root/.m2/ ports: - "8080:8080" - links: - - "db" - db: - container_name: db - image: postgres:9.5.3 - ports: - - "5432:5432" - volumes: - - ./pgdata:/var/lib/postgresql/data/pgdata - environment: - POSTGRES_USER: postgres - PGDATA: /var/lib/postgresql/data/pgdata diff --git a/pom.xml b/pom.xml index 0c8367bde..2726b792b 100644 --- a/pom.xml +++ b/pom.xml @@ -15,27 +15,45 @@ <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.3.2.RELEASE</version> - <relativePath /> <!-- lookup parent from repository --> + <relativePath /> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + <sonar.host.url>http://dockerhost:9000</sonar.host.url> + <sonar.projectName>MIP Backend</sonar.projectName> + <sonar.sources>src/main/java/</sonar.sources> <java.version>1.8</java.version> <asciidoctor.maven.plugin.version>1.5.3</asciidoctor.maven.plugin.version> <asciidoctorj.pdf.version>1.5.0-alpha.11</asciidoctorj.pdf.version> <asciidoctorj.version>1.5.4</asciidoctorj.version> - <sonar.host.url>http://dockerhost:9000</sonar.host.url> - <sonar.projectName>MIP Backend</sonar.projectName> - <sonar.sources>src/main/java/</sonar.sources> - <flyway.url>jdbc:postgresql://db:5432/postgres</flyway.url> - <flyway.user>postgres</flyway.user> + <spring-data-commons.version>1.12.2.RELEASE</spring-data-commons.version> + <angularjs.version>1.4.3</angularjs.version> + <jquery.version>2.1.1</jquery.version> + <bootstrap.version>3.2.0</bootstrap.version> + <hibernate-jpa-2.1-api.version>1.0.0.Final</hibernate-jpa-2.1-api.version> + <hibernate-core.version>4.3.8.Final</hibernate-core.version> + <hibernate-entitymanager.version>4.3.8.Final</hibernate-entitymanager.version> + <h2.version>1.4.187</h2.version> + <postgresql.version>9.4-1205-jdbc42</postgresql.version> + <springfox-swagger2.version>2.3.1</springfox-swagger2.version> + <springfox-swagger-ui.version>2.3.1</springfox-swagger-ui.version> + <gson.version>2.5</gson.version> + <slugify.version>2.1.4</slugify.version> + <spring-data-jpa.version>1.10.2.RELEASE</spring-data-jpa.version> + <maven-resources-plugin.version>2.3</maven-resources-plugin.version> + <sonar-maven-plugin.version>3.0.1</sonar-maven-plugin.version> + <swagger2markup-maven-plugin.version>1.0.0</swagger2markup-maven-plugin.version> + <maven-compiler-plugin.version>3.1</maven-compiler-plugin.version> + <hibernate4-maven-plugin.version>1.1.0</hibernate4-maven-plugin.version> + <flyway-core.version>4.0.3</flyway-core.version> </properties> <dependencies> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-commons</artifactId> - <version>1.12.2.RELEASE</version> + <version>${spring-data-commons.version}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> @@ -60,17 +78,17 @@ <dependency> <groupId>org.webjars</groupId> <artifactId>angularjs</artifactId> - <version>1.4.3</version> + <version>${angularjs.version}</version> </dependency> <dependency> <groupId>org.webjars</groupId> <artifactId>jquery</artifactId> - <version>2.1.1</version> + <version>${jquery.version}</version> </dependency> <dependency> <groupId>org.webjars</groupId> <artifactId>bootstrap</artifactId> - <version>3.2.0</version> + <version>${bootstrap.version}</version> </dependency> <dependency> <groupId>org.webjars</groupId> @@ -84,57 +102,62 @@ <dependency> <groupId>org.hibernate.javax.persistence</groupId> <artifactId>hibernate-jpa-2.1-api</artifactId> - <version>1.0.0.Final</version> + <version>${hibernate-jpa-2.1-api.version}</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> - <version>4.3.8.Final</version> + <version>${hibernate-core.version}</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> - <version>4.3.8.Final</version> + <version>${hibernate-entitymanager.version}</version> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> - <version>1.4.187</version> + <version>${h2.version}</version> </dependency> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> - <version>9.4-1205-jdbc42</version> + <version>${postgresql.version}</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> - <version>2.3.1</version> + <version>${springfox-swagger2.version}</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> - <version>2.3.1</version> + <version>${springfox-swagger-ui.version}</version> </dependency> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> - <version>2.5</version> + <version>${gson.version}</version> </dependency> <dependency> <groupId>com.github.slugify</groupId> <artifactId>slugify</artifactId> - <version>2.1.4</version> + <version>${slugify.version}</version> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-jpa</artifactId> - <version>1.10.2.RELEASE</version> + <version>${spring-data-jpa.version}</version> </dependency> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> </dependency> + <dependency> + <groupId>org.flywaydb</groupId> + <artifactId>flyway-core</artifactId> + <version>${flyway-core.version}</version> + </dependency> </dependencies> <pluginRepositories> @@ -161,6 +184,7 @@ <include>**/*.xml</include> <include>**/*.json</include> <include>**/*.csv</include> + <include>**/*.sql</include> </includes> <filtering>true</filtering> </resource> @@ -170,7 +194,7 @@ <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> - <version>2.3</version> + <version>${maven-resources-plugin.version}</version> <configuration> <!-- specify UTF-8, ISO-8859-1 or any other file encoding --> <encoding>UTF-8</encoding> @@ -183,7 +207,7 @@ <plugin> <groupId>de.juplo</groupId> <artifactId>hibernate4-maven-plugin</artifactId> - <version>1.1.0</version> + <version>${hibernate4-maven-plugin.version}</version> <executions> <execution> <phase>compile</phase> @@ -192,21 +216,16 @@ </plugin> <plugin> <artifactId>maven-compiler-plugin</artifactId> - <version>3.1</version> + <version>${maven-compiler-plugin.version}</version> <configuration> - <source>1.8</source> - <target>1.8</target> + <source>${java.version}</source> + <target>${java.version}</target> </configuration> </plugin> - <plugin> - <groupId>org.flywaydb</groupId> - <artifactId>flyway-maven-plugin</artifactId> - <version>4.0.1</version> - </plugin> <plugin> <groupId>io.github.swagger2markup</groupId> <artifactId>swagger2markup-maven-plugin</artifactId> - <version>1.0.0</version> + <version>${swagger2markup-maven-plugin.version}</version> <configuration> <swaggerInput>http://localhost:8080/services/v2/api-docs</swaggerInput> <outputFile>${project.build.directory}/asciidoc/api</outputFile> @@ -238,7 +257,7 @@ <plugin> <groupId>org.sonarsource.scanner.maven</groupId> <artifactId>sonar-maven-plugin</artifactId> - <version>3.0.1</version> + <version>${sonar-maven-plugin.version}</version> </plugin> </plugins> </build> diff --git a/src/docker/build/Dockerfile b/src/docker/build/Dockerfile index b9164761d..b4318d788 100644 --- a/src/docker/build/Dockerfile +++ b/src/docker/build/Dockerfile @@ -5,6 +5,4 @@ COPY ./build-in-docker.sh /build-in-docker.sh VOLUME /opt/portal/ WORKDIR /opt/portal/ -RUN apt-get update && apt-get install -y postgresql - CMD ["bash", "/build-in-docker.sh"] diff --git a/src/docker/build/build-in-docker.sh b/src/docker/build/build-in-docker.sh index 44f5005d0..7b77f1e66 100644 --- a/src/docker/build/build-in-docker.sh +++ b/src/docker/build/build-in-docker.sh @@ -5,20 +5,3 @@ rm -r target/ echo 'Packaging...' mvn package - -echo 'Waiting for postgres to be ready...' -until psql -h "db" -U "postgres" -c '\l'; do - >&2 echo "Postgres is unavailable - sleeping" - sleep 1 -done - -if [ $(psql -h "db" -U "postgres" -c "\dt" | grep schema_version | wc -l) == 0 ]; then - echo 'Generating database baseline...' - mvn flyway:baseline -fi - -echo 'Migrating database...' -mvn flyway:migrate - -# Uncomment to generate a PDF API documentation -# mvn swagger2markup:convertSwagger2markup asciidoctor:process-asciidoc diff --git a/src/main/java/org/hbp/mip/configuration/PersistenceConfiguration.java b/src/main/java/org/hbp/mip/configuration/PersistenceConfiguration.java index 1c0a3ad59..35ce472e9 100644 --- a/src/main/java/org/hbp/mip/configuration/PersistenceConfiguration.java +++ b/src/main/java/org/hbp/mip/configuration/PersistenceConfiguration.java @@ -1,10 +1,12 @@ package org.hbp.mip.configuration; +import org.flywaydb.core.Flyway; import org.hbp.mip.utils.CSVUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.orm.jpa.EntityScan; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.DependsOn; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import org.springframework.orm.jpa.JpaVendorAdapter; import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; @@ -30,6 +32,7 @@ public class PersistenceConfiguration { } @Bean + @DependsOn("flyway") public LocalContainerEntityManagerFactoryBean entityManagerFactory() { LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean(); em.setDataSource(dataSource); @@ -38,4 +41,12 @@ public class PersistenceConfiguration { return em; } + @Bean(initMethod = "migrate") + public Flyway flyway() { + Flyway flyway = new Flyway(); + flyway.setBaselineOnMigrate(true); + flyway.setDataSource(dataSource); + return flyway; + } + } -- GitLab