From 0ae59787eb9f277e25067bbcc37f496ffba24135 Mon Sep 17 00:00:00 2001 From: Sondre Nilsen Date: Sat, 21 Aug 2021 17:43:42 +0200 Subject: [PATCH 1/8] Hello Spring Boot, Java 16 and friends --- .github/workflows/pipeline.yml | 10 +- build.gradle.kts | 50 +-- docker-compose.test.yml | 2 +- docker-compose.yml | 2 +- gradle/wrapper/gradle-wrapper.properties | 2 +- lombok.config | 2 - package.json | 6 +- .../backend/BackendApplication.java | 4 +- .../backend/category/CategoryConverter.java | 12 +- .../backend/category/CategoryEntity.java | 22 +- .../backend/category/CategoryRepository.java | 6 +- .../backend/company/CompanyConverter.java | 10 +- .../backend/company/CompanyEntity.java | 31 +- .../backend/company/CompanyRepository.java | 6 +- .../configuration/SecurityConfiguration.java | 55 +-- src/main/resources/application.properties | 8 +- src/main/resources/static/index.html | 36 +- .../backend/AuthenticationExtension.java | 6 +- .../category/CategoryRepositoryTest.java | 20 +- .../company/CompanyRepositoryTest.java | 16 +- yarn.lock | 395 ++++++++---------- 21 files changed, 288 insertions(+), 413 deletions(-) delete mode 100644 lombok.config diff --git a/.github/workflows/pipeline.yml b/.github/workflows/pipeline.yml index 8e0bf7c4..b7650977 100644 --- a/.github/workflows/pipeline.yml +++ b/.github/workflows/pipeline.yml @@ -10,8 +10,6 @@ jobs: runs-on: ubuntu-latest env: DATABASE_URL: jdbc:postgresql://localhost:32789/test_db - AUTH0_AUDIENCE: ${{ secrets.AUTH0_AUDIENCE }} - AUTH0_DOMAIN: ${{ secrets.AUTH0_DOMAIN }} services: postgres: @@ -53,7 +51,7 @@ jobs: - uses: actions/setup-java@v1 with: - java-version: 11 + java-version: 16 - name: Check run: ./gradlew check --info @@ -61,12 +59,6 @@ jobs: - name: Build run: ./gradlew build - - name: Upload artifact for deployment job - uses: actions/upload-artifact@v2 - with: - name: backend - path: "${{ github.workspace }}/build/libs/*.jar" - - name: SonarQube analysis env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/build.gradle.kts b/build.gradle.kts index e11ceb9c..4954fde4 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -4,24 +4,17 @@ import org.gradle.api.tasks.testing.logging.TestLogEvent plugins { jacoco java - id("io.freefair.lombok").version("5.3.0") - id("org.springframework.boot").version("2.4.4") + id("org.springframework.boot").version("2.5.4") id("io.spring.dependency-management").version("1.0.11.RELEASE") - id("com.netflix.dgs.codegen").version("4.4.1") - id("org.sonarqube").version("3.1.1") + id("com.netflix.dgs.codegen").version("5.0.5") + id("org.sonarqube").version("3.3") id("org.flywaydb.flyway").version("7.7.0") - id("nu.studer.jooq").version("5.2.1") + id("nu.studer.jooq").version("6.0") + id("com.github.ben-manes.versions").version("0.39.0") } repositories { mavenCentral() - jcenter() -} - -dependencyManagement { - imports { - mavenBom("org.keycloak.bom:keycloak-adapter-bom:12.0.4") - } } dependencies { @@ -29,17 +22,16 @@ dependencies { implementation("org.springframework.boot", "spring-boot-starter-actuator") implementation("org.springframework.boot", "spring-boot-starter-jooq") implementation("org.springframework.boot", "spring-boot-starter-security") - implementation("org.keycloak", "keycloak-spring-boot-starter") developmentOnly("org.springframework.boot", "spring-boot-devtools") - jooqGenerator("org.postgresql", "postgresql", "42.2.19") + jooqGenerator("org.postgresql", "postgresql", "42.2.23") - implementation("org.flywaydb", "flyway-core", "7.7.0") - runtimeOnly("org.postgresql", "postgresql", "42.2.19") + implementation("org.flywaydb", "flyway-core", "7.14.0") + runtimeOnly("org.postgresql", "postgresql", "42.2.23") - implementation(platform("com.netflix.graphql.dgs:graphql-dgs-platform-dependencies:3.10.2")) + implementation(platform("com.netflix.graphql.dgs:graphql-dgs-platform-dependencies:4.5.1")) implementation("com.netflix.graphql.dgs", "graphql-dgs-spring-boot-starter") - implementation("com.graphql-java", "graphql-java-extended-scalars", "15.0.0") + implementation("com.netflix.graphql.dgs", "graphql-dgs-extended-scalars") testImplementation("org.springframework.boot", "spring-boot-starter-test") { exclude("org.junit.vintage", "junit-vintage-engine") @@ -50,15 +42,11 @@ group = "no.echokarriere" version = "0.0.1-SNAPSHOT" description = "backend" -configurations { - compileOnly { - extendsFrom(configurations.annotationProcessor.get()) - } -} - -java { - toolchain { - languageVersion.set(JavaLanguageVersion.of(11)) +java.sourceCompatibility = JavaVersion.VERSION_16 +tasks.withType { + java { + targetCompatibility = JavaVersion.VERSION_16 + sourceCompatibility = JavaVersion.VERSION_16 } } @@ -88,8 +76,6 @@ flyway { } jooq { - version.set(dependencyManagement.importedProperties["jooq.version"]) - edition.set(nu.studer.gradle.jooq.JooqEdition.OSS) configurations { create("main") { jooqConfiguration.apply { @@ -132,9 +118,9 @@ tasks.named("generateJooq") { tasks.jacocoTestReport { dependsOn(tasks.test) reports { - xml.isEnabled = true - xml.destination = File("$buildDir/reports/jacoco/test/jacoco.xml") - html.isEnabled = true + xml.required.set(true) + xml.outputLocation.set(File("$buildDir/reports/jacoco/test/jacoco.xml")) + html.required.set(true) } } diff --git a/docker-compose.test.yml b/docker-compose.test.yml index 3cdcf2ae..43b0c9cd 100644 --- a/docker-compose.test.yml +++ b/docker-compose.test.yml @@ -5,7 +5,7 @@ services: container_name: "echo_backend_test_db" image: postgres:11.6 ports: - - 32789:5432 + - "32789:5432" environment: POSTGRES_DB: test_db POSTGRES_USER: karriere diff --git a/docker-compose.yml b/docker-compose.yml index d4e2eb6a..73d24c23 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,7 +7,7 @@ services: volumes: - postgres_data:/var/lib/postgresql/data ports: - - 5432:5432 + - "5432:5432" env_file: .env volumes: diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 442d9132..a0f7639f 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/lombok.config b/lombok.config deleted file mode 100644 index df71bb6a..00000000 --- a/lombok.config +++ /dev/null @@ -1,2 +0,0 @@ -config.stopBubbling = true -lombok.addLombokGeneratedAnnotation = true diff --git a/package.json b/package.json index bc550928..fca94919 100644 --- a/package.json +++ b/package.json @@ -4,9 +4,9 @@ "author": "Sondre Nilsen ", "devDependencies": { "@echo-karriere/clubhouse-lint": "0.3.0", - "husky": "6.0.0", - "lint-staged": "10.5.4", - "prettier": "2.2.1" + "husky": "7.0.1", + "lint-staged": "11.1.2", + "prettier": "2.3.2" }, "scripts": { "postinstall": "husky install", diff --git a/src/main/java/no/echokarriere/backend/BackendApplication.java b/src/main/java/no/echokarriere/backend/BackendApplication.java index 293b82c2..d4212063 100644 --- a/src/main/java/no/echokarriere/backend/BackendApplication.java +++ b/src/main/java/no/echokarriere/backend/BackendApplication.java @@ -2,9 +2,11 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.r2dbc.R2dbcAutoConfiguration; import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; -@SpringBootApplication +// TODO: Remove exclusion once Spring Boot 2.6 is released +@SpringBootApplication(exclude = {R2dbcAutoConfiguration.class}) @EnableGlobalMethodSecurity(securedEnabled = true, jsr250Enabled = true) public class BackendApplication { public static void main(String[] args) { diff --git a/src/main/java/no/echokarriere/backend/category/CategoryConverter.java b/src/main/java/no/echokarriere/backend/category/CategoryConverter.java index fbfd9dde..d1ba5490 100644 --- a/src/main/java/no/echokarriere/backend/category/CategoryConverter.java +++ b/src/main/java/no/echokarriere/backend/category/CategoryConverter.java @@ -9,12 +9,12 @@ public class CategoryConverter implements Converter { @Override public Category convert(CategoryEntity source) { return new Category( - source.getId().toString(), - source.getTitle(), - source.getDescription(), - source.getSlug(), - source.getCreatedAt(), - source.getModifiedAt() + source.id().toString(), + source.title(), + source.description(), + source.slug(), + source.createdAt(), + source.modifiedAt() ); } } diff --git a/src/main/java/no/echokarriere/backend/category/CategoryEntity.java b/src/main/java/no/echokarriere/backend/category/CategoryEntity.java index 604016fc..ed850c80 100644 --- a/src/main/java/no/echokarriere/backend/category/CategoryEntity.java +++ b/src/main/java/no/echokarriere/backend/category/CategoryEntity.java @@ -1,25 +1,19 @@ package no.echokarriere.backend.category; -import lombok.Builder; -import lombok.RequiredArgsConstructor; -import lombok.Value; import no.echokarriere.graphql.types.CreateCategoryInput; import no.echokarriere.graphql.types.UpdateCategoryInput; import java.time.OffsetDateTime; import java.util.UUID; -@Value -@RequiredArgsConstructor -@Builder -public class CategoryEntity { - UUID id; - String title; - String description; - String slug; - OffsetDateTime createdAt; - OffsetDateTime modifiedAt; - +public record CategoryEntity( + UUID id, + String title, + String description, + String slug, + OffsetDateTime createdAt, + OffsetDateTime modifiedAt +) { CategoryEntity(CreateCategoryInput input) { this(UUID.randomUUID(), input.getTitle(), input.getDescription(), input.getSlug(), OffsetDateTime.now(), null); } diff --git a/src/main/java/no/echokarriere/backend/category/CategoryRepository.java b/src/main/java/no/echokarriere/backend/category/CategoryRepository.java index da502bd5..58acc23b 100644 --- a/src/main/java/no/echokarriere/backend/category/CategoryRepository.java +++ b/src/main/java/no/echokarriere/backend/category/CategoryRepository.java @@ -29,7 +29,7 @@ private static CategoryEntity map(CategoryRecord it) { public Optional create(CategoryEntity entity) { return dsl.insertInto(CATEGORY) .columns(CATEGORY.ID, CATEGORY.TITLE, CATEGORY.DESCRIPTION, CATEGORY.SLUG) - .values(entity.getId(), entity.getTitle(), entity.getDescription(), entity.getSlug()) + .values(entity.id(), entity.title(), entity.description(), entity.slug()) .returning() .fetchOptional() .map(CategoryRepository::map); @@ -40,9 +40,9 @@ public Optional update(CategoryEntity entity) { return dsl.update(CATEGORY) .set( row(CATEGORY.TITLE, CATEGORY.DESCRIPTION, CATEGORY.SLUG, CATEGORY.MODIFIED_AT), - row(entity.getTitle(), entity.getDescription(), entity.getSlug(), OffsetDateTime.now()) + row(entity.title(), entity.description(), entity.slug(), OffsetDateTime.now()) ) - .where(CATEGORY.ID.eq(entity.getId())) + .where(CATEGORY.ID.eq(entity.id())) .returning() .fetchOptional() .map(CategoryRepository::map); diff --git a/src/main/java/no/echokarriere/backend/company/CompanyConverter.java b/src/main/java/no/echokarriere/backend/company/CompanyConverter.java index a81363bc..945b7900 100644 --- a/src/main/java/no/echokarriere/backend/company/CompanyConverter.java +++ b/src/main/java/no/echokarriere/backend/company/CompanyConverter.java @@ -9,11 +9,11 @@ public class CompanyConverter implements Converter { @Override public Company convert(CompanyEntity source) { return new Company( - source.getId().toString(), - source.getName(), - source.getHomepage(), - source.getCreatedAt(), - source.getModifiedAt() + source.id().toString(), + source.name(), + source.homepage(), + source.createdAt(), + source.modifiedAt() ); } } diff --git a/src/main/java/no/echokarriere/backend/company/CompanyEntity.java b/src/main/java/no/echokarriere/backend/company/CompanyEntity.java index 48d8bd6a..ecad0526 100644 --- a/src/main/java/no/echokarriere/backend/company/CompanyEntity.java +++ b/src/main/java/no/echokarriere/backend/company/CompanyEntity.java @@ -1,37 +1,24 @@ package no.echokarriere.backend.company; -import lombok.Builder; -import lombok.RequiredArgsConstructor; -import lombok.Value; import no.echokarriere.graphql.types.CreateCompanyInput; import no.echokarriere.graphql.types.UpdateCompanyInput; import java.time.OffsetDateTime; import java.util.UUID; -@Value -@RequiredArgsConstructor -@Builder -public class CompanyEntity { - UUID id; - String name; - String homepage; - OffsetDateTime createdAt; - OffsetDateTime modifiedAt; +public record CompanyEntity( + UUID id, + String name, + String homepage, + OffsetDateTime createdAt, + OffsetDateTime modifiedAt +) { public CompanyEntity(CreateCompanyInput input) { - this.id = UUID.randomUUID(); - this.name = input.getName(); - this.homepage = input.getHomepage(); - this.createdAt = OffsetDateTime.now(); - this.modifiedAt = null; + this(UUID.randomUUID(), input.getName(), input.getHomepage(), OffsetDateTime.now(), null); } public CompanyEntity(UUID id, UpdateCompanyInput input) { - this.id = id; - this.name = input.getName(); - this.homepage = input.getHomepage(); - this.createdAt = OffsetDateTime.now(); - this.modifiedAt = null; + this(id, input.getName(), input.getHomepage(), OffsetDateTime.now(), null); } } diff --git a/src/main/java/no/echokarriere/backend/company/CompanyRepository.java b/src/main/java/no/echokarriere/backend/company/CompanyRepository.java index 7eacbd35..390d7376 100644 --- a/src/main/java/no/echokarriere/backend/company/CompanyRepository.java +++ b/src/main/java/no/echokarriere/backend/company/CompanyRepository.java @@ -29,7 +29,7 @@ private static CompanyEntity map(CompanyRecord it) { public Optional create(CompanyEntity entity) { return dsl.insertInto(COMPANY) .columns(COMPANY.ID, COMPANY.NAME, COMPANY.HOMEPAGE) - .values(entity.getId(), entity.getName(), entity.getHomepage()) + .values(entity.id(), entity.name(), entity.homepage()) .returning() .fetchOptional() .map(CompanyRepository::map); @@ -41,9 +41,9 @@ public Optional update(CompanyEntity entity) { .update(COMPANY) .set( row(COMPANY.NAME, COMPANY.HOMEPAGE, COMPANY.MODIFIED_AT), - row(entity.getName(), entity.getHomepage(), OffsetDateTime.now()) + row(entity.name(), entity.homepage(), OffsetDateTime.now()) ) - .where(COMPANY.ID.eq(entity.getId())) + .where(COMPANY.ID.eq(entity.id())) .returning() .fetchOptional() .map(CompanyRepository::map); diff --git a/src/main/java/no/echokarriere/backend/configuration/SecurityConfiguration.java b/src/main/java/no/echokarriere/backend/configuration/SecurityConfiguration.java index 72e96783..9b8c4780 100644 --- a/src/main/java/no/echokarriere/backend/configuration/SecurityConfiguration.java +++ b/src/main/java/no/echokarriere/backend/configuration/SecurityConfiguration.java @@ -1,71 +1,34 @@ package no.echokarriere.backend.configuration; -import org.keycloak.adapters.KeycloakConfigResolver; -import org.keycloak.adapters.springboot.KeycloakSpringBootConfigResolver; -import org.keycloak.adapters.springsecurity.KeycloakConfiguration; -import org.keycloak.adapters.springsecurity.config.KeycloakWebSecurityConfigurerAdapter; -import org.keycloak.adapters.springsecurity.management.HttpSessionManager; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpMethod; -import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.builders.HttpSecurity; -import org.springframework.security.config.http.SessionCreationPolicy; -import org.springframework.security.core.authority.mapping.SimpleAuthorityMapper; -import org.springframework.security.core.session.SessionRegistryImpl; -import org.springframework.security.web.authentication.session.RegisterSessionAuthenticationStrategy; -import org.springframework.security.web.authentication.session.SessionAuthenticationStrategy; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.CorsConfigurationSource; import org.springframework.web.cors.UrlBasedCorsConfigurationSource; import java.util.List; -@KeycloakConfiguration -public class SecurityConfiguration extends KeycloakWebSecurityConfigurerAdapter { - @Bean - @Override - protected SessionAuthenticationStrategy sessionAuthenticationStrategy() { - return new RegisterSessionAuthenticationStrategy(new SessionRegistryImpl()); - } - +@Configuration +@EnableWebSecurity +public class SecurityConfiguration extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { - super.configure(http); http .csrf() .disable() .cors() .configurationSource(corsConfigurationSource()) .and() - .sessionManagement() - .sessionCreationPolicy(SessionCreationPolicy.STATELESS) - .and() .authorizeRequests() - .anyRequest() + .antMatchers("/graphql") + .permitAll() + .antMatchers("/graphiql") .permitAll(); } - @Autowired - public void configureGlobal(AuthenticationManagerBuilder auth) { - var provider = keycloakAuthenticationProvider(); - provider.setGrantedAuthoritiesMapper(new SimpleAuthorityMapper()); - auth.authenticationProvider(provider); - } - - @Bean - public KeycloakConfigResolver keycloakConfigResolver() { - return new KeycloakSpringBootConfigResolver(); - } - - @Bean - @Override - @ConditionalOnMissingBean(HttpSessionManager.class) - protected HttpSessionManager httpSessionManager() { - return new HttpSessionManager(); - } - CorsConfigurationSource corsConfigurationSource() { var configuration = new CorsConfiguration(); configuration.setAllowedMethods(List.of( diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 4183a10e..8cc9eca1 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,4 +1,4 @@ -spring.datasource.platform=postgres +spring.sql.init.platform=postgres spring.datasource.driverClassName=org.postgresql.Driver spring.datasource.url=${DATABASE_URL:jdbc:postgresql://localhost:5432/echokarriere} spring.datasource.username=${DATABASE_USER:karriere} @@ -7,9 +7,3 @@ spring.jpa.hibernate.ddl-auto=none spring.jooq.sql-dialect=postgres spring.data.jpa.repositories.enabled=false management.endpoints.web.exposure.include=info,health -keycloak.auth-server-url=https://auth.echokarriere.no/auth -keycloak.realm=${KEYCLOAK_REALM} -keycloak.resource=${KEYCLOAK_CLIENT_ID} -keycloak.ssl-required=external -keycloak.use-resource-role-mappings=true -keycloak.bearer-only=true diff --git a/src/main/resources/static/index.html b/src/main/resources/static/index.html index 855c0473..bb6937d0 100644 --- a/src/main/resources/static/index.html +++ b/src/main/resources/static/index.html @@ -1,20 +1,20 @@ - - - - - echo karriere API + + + + + echo karriere API - +
-
-
-
-
+
+
+
+
@@ -24,17 +24,17 @@
-
+
-
+
-
-
-
+
+
+
- +
diff --git a/src/test/java/no/echokarriere/backend/AuthenticationExtension.java b/src/test/java/no/echokarriere/backend/AuthenticationExtension.java index 0dd299b3..2e820d42 100644 --- a/src/test/java/no/echokarriere/backend/AuthenticationExtension.java +++ b/src/test/java/no/echokarriere/backend/AuthenticationExtension.java @@ -4,21 +4,19 @@ import graphql.execution.instrumentation.InstrumentationContext; import graphql.execution.instrumentation.SimpleInstrumentation; import graphql.execution.instrumentation.parameters.InstrumentationExecutionParameters; -import lombok.extern.slf4j.Slf4j; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Component; -import java.util.List; import java.util.stream.Collectors; +import java.util.stream.Stream; @Component -@Slf4j public class AuthenticationExtension extends SimpleInstrumentation { @Override public InstrumentationContext beginExecution(InstrumentationExecutionParameters parameters) { - var token = new UsernamePasswordAuthenticationToken("admin", "admin", List.of("ROLE_admin", "ROLE_staff", "ROLE_user").stream().map(SimpleGrantedAuthority::new).collect(Collectors.toList())); + var token = new UsernamePasswordAuthenticationToken("admin", "admin", Stream.of("ROLE_admin", "ROLE_staff", "ROLE_user").map(SimpleGrantedAuthority::new).collect(Collectors.toList())); SecurityContextHolder.getContext().setAuthentication(token); return super.beginExecution(parameters); } diff --git a/src/test/java/no/echokarriere/backend/category/CategoryRepositoryTest.java b/src/test/java/no/echokarriere/backend/category/CategoryRepositoryTest.java index 501cae80..119f062e 100644 --- a/src/test/java/no/echokarriere/backend/category/CategoryRepositoryTest.java +++ b/src/test/java/no/echokarriere/backend/category/CategoryRepositoryTest.java @@ -26,9 +26,9 @@ void createNewCategory() { ); assertThat(actual).isNotEmpty(); - assertThat(actual.get().getTitle()).isEqualTo("Test Category"); - assertThat(actual.get().getDescription()).isEqualTo("With a description"); - assertThat(actual.get().getSlug()).isEqualTo("test-category"); + assertThat(actual.get().title()).isEqualTo("Test Category"); + assertThat(actual.get().description()).isEqualTo("With a description"); + assertThat(actual.get().slug()).isEqualTo("test-category"); } @Test @@ -38,8 +38,8 @@ void getSingleCategory() { var actual = categoryRepository.select(categoryId); assertThat(actual).isNotEmpty(); - assertThat(actual.get().getId()).isEqualTo(categoryId); - assertThat(actual.get().getTitle()).isEqualTo("Test Category"); + assertThat(actual.get().id()).isEqualTo(categoryId); + assertThat(actual.get().title()).isEqualTo("Test Category"); } @Test @@ -58,8 +58,8 @@ void getAllCategories() { var actual = categoryRepository.selectAll(); assertThat(actual) - .anyMatch(item -> item.getId().equals(categoryId)) - .anyMatch(item -> item.getTitle().equals("Test Category")); + .anyMatch(item -> item.id().equals(categoryId)) + .anyMatch(item -> item.title().equals("Test Category")); } @Test @@ -71,9 +71,9 @@ void updateCategory() { assertThat(actual).isNotEmpty(); - assertThat(actual.get().getTitle()).isEqualTo("Test Category"); - assertThat(actual.get().getDescription()).isEqualTo("Updated description"); - assertThat(actual.get().getSlug()).isEqualTo("test"); + assertThat(actual.get().title()).isEqualTo("Test Category"); + assertThat(actual.get().description()).isEqualTo("Updated description"); + assertThat(actual.get().slug()).isEqualTo("test"); } @Test diff --git a/src/test/java/no/echokarriere/backend/company/CompanyRepositoryTest.java b/src/test/java/no/echokarriere/backend/company/CompanyRepositoryTest.java index c73c386d..9e109aef 100644 --- a/src/test/java/no/echokarriere/backend/company/CompanyRepositoryTest.java +++ b/src/test/java/no/echokarriere/backend/company/CompanyRepositoryTest.java @@ -29,8 +29,8 @@ void createNewCompany() { ); assertThat(actual).isNotEmpty(); - assertThat(actual.get().getName()).isEqualTo("Norge AS"); - assertThat(actual.get().getHomepage()).isEqualTo("http://www.norge.no"); + assertThat(actual.get().name()).isEqualTo("Norge AS"); + assertThat(actual.get().homepage()).isEqualTo("http://www.norge.no"); } @Test @@ -40,8 +40,8 @@ void getSingleCompany() { var actual = companyRepository.select(companyId); assertThat(actual).isNotEmpty(); - assertThat(actual.get().getId()).isEqualTo(companyId); - assertThat(actual.get().getName()).isEqualTo("Norge AS"); + assertThat(actual.get().id()).isEqualTo(companyId); + assertThat(actual.get().name()).isEqualTo("Norge AS"); } @Test @@ -60,8 +60,8 @@ void getAllCategories() { var actual = companyRepository.selectAll(); assertThat(actual) - .anyMatch(item -> item.getId().equals(companyId)) - .anyMatch(item -> item.getName().equals("Norge AS")); + .anyMatch(item -> item.id().equals(companyId)) + .anyMatch(item -> item.name().equals("Norge AS")); } @Test @@ -73,8 +73,8 @@ void updateCompany() { assertThat(actual).isNotEmpty(); - assertThat(actual.get().getName()).isEqualTo("Norge Associates"); - assertThat(actual.get().getHomepage()).isEqualTo("http://www.norge.nu"); + assertThat(actual.get().name()).isEqualTo("Norge Associates"); + assertThat(actual.get().homepage()).isEqualTo("http://www.norge.nu"); } @Test diff --git a/yarn.lock b/yarn.lock index d65201b7..8ef093e1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3,39 +3,39 @@ "@babel/code-frame@^7.0.0": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz" - integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g== + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb" + integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw== dependencies: - "@babel/highlight" "^7.12.13" + "@babel/highlight" "^7.14.5" -"@babel/helper-validator-identifier@^7.12.11": - version "7.12.11" - resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz" - integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== +"@babel/helper-validator-identifier@^7.14.5": + version "7.14.9" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz#6654d171b2024f6d8ee151bf2509699919131d48" + integrity sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g== -"@babel/highlight@^7.12.13": - version "7.13.10" - resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz" - integrity sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg== +"@babel/highlight@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" + integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== dependencies: - "@babel/helper-validator-identifier" "^7.12.11" + "@babel/helper-validator-identifier" "^7.14.5" chalk "^2.0.0" js-tokens "^4.0.0" "@echo-karriere/clubhouse-lint@0.3.0": version "0.3.0" - resolved "https://registry.npmjs.org/@echo-karriere/clubhouse-lint/-/clubhouse-lint-0.3.0.tgz" + resolved "https://registry.yarnpkg.com/@echo-karriere/clubhouse-lint/-/clubhouse-lint-0.3.0.tgz#d12dc9418e0b644a1a072a4f31e7987104028db4" integrity sha512-PLuVMPRJy2plHY+OIvSm4n9eLBq7DbGvRLt6MBMEV9PsLdrJ61vcV7vo1RvFLGn2PBIR/XDmBhkjUEkD7Rh86Q== "@types/parse-json@^4.0.0": version "4.0.0" - resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== aggregate-error@^3.0.0: version "3.1.0" - resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== dependencies: clean-stack "^2.0.0" @@ -43,84 +43,84 @@ aggregate-error@^3.0.0: ansi-colors@^4.1.1: version "4.1.1" - resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== ansi-escapes@^4.3.0: - version "4.3.1" - resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz" - integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== dependencies: - type-fest "^0.11.0" + type-fest "^0.21.3" ansi-regex@^5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== ansi-styles@^3.2.1: version "3.2.1" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: color-convert "^2.0.1" astral-regex@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== braces@^3.0.1: version "3.0.2" - resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" callsites@^3.0.0: version "3.1.0" - resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== chalk@^2.0.0: version "2.4.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== dependencies: ansi-styles "^3.2.1" escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz" - integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== +chalk@^4.1.0, chalk@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: ansi-styles "^4.1.0" supports-color "^7.1.0" clean-stack@^2.0.0: version "2.2.0" - resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== cli-cursor@^3.1.0: version "3.1.0" - resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== dependencies: restore-cursor "^3.1.0" cli-truncate@^2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== dependencies: slice-ansi "^3.0.0" @@ -128,36 +128,41 @@ cli-truncate@^2.1.0: color-convert@^1.9.0: version "1.9.3" - resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: color-name "1.1.3" color-convert@^2.0.1: version "2.0.1" - resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== dependencies: color-name "~1.1.4" color-name@1.1.3: version "1.1.3" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= color-name@~1.1.4: version "1.1.4" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -commander@^6.2.0: - version "6.2.1" - resolved "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz" - integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== +colorette@^1.2.2: + version "1.3.0" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.3.0.tgz#ff45d2f0edb244069d3b772adeb04fed38d0a0af" + integrity sha512-ecORCqbSFP7Wm8Y6lyqMJjexBQqXSF7SSeaTyGGphogUjBlFP9m9o08wy86HL2uB7fMTxtOUzLMk7ogKcxMg1w== + +commander@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== cosmiconfig@^7.0.0: version "7.0.0" - resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA== dependencies: "@types/parse-json" "^4.0.0" @@ -166,122 +171,101 @@ cosmiconfig@^7.0.0: path-type "^4.0.0" yaml "^1.10.0" -cross-spawn@^7.0.0: +cross-spawn@^7.0.3: version "7.0.3" - resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== dependencies: path-key "^3.1.0" shebang-command "^2.0.0" which "^2.0.1" -debug@^4.2.0: - version "4.3.1" - resolved "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz" - integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== +debug@^4.3.1: + version "4.3.2" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" + integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== dependencies: ms "2.1.2" -dedent@^0.7.0: - version "0.7.0" - resolved "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz" - integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= - emoji-regex@^8.0.0: version "8.0.0" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== -end-of-stream@^1.1.0: - version "1.4.4" - resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - enquirer@^2.3.6: version "2.3.6" - resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== dependencies: ansi-colors "^4.1.1" error-ex@^1.3.1: version "1.3.2" - resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: is-arrayish "^0.2.1" escape-string-regexp@^1.0.5: version "1.0.5" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -execa@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz" - integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - human-signals "^1.1.1" + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" is-stream "^2.0.0" merge-stream "^2.0.0" - npm-run-path "^4.0.0" - onetime "^5.1.0" - signal-exit "^3.0.2" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" strip-final-newline "^2.0.0" -figures@^3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz" - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== - dependencies: - escape-string-regexp "^1.0.5" - fill-range@^7.0.1: version "7.0.1" - resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== dependencies: to-regex-range "^5.0.1" get-own-enumerable-property-symbols@^3.0.0: version "3.0.2" - resolved "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz" + resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== -get-stream@^5.0.0: - version "5.2.0" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== - dependencies: - pump "^3.0.0" +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== has-flag@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= has-flag@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -human-signals@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz" - integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -husky@6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/husky/-/husky-6.0.0.tgz#810f11869adf51604c32ea577edbc377d7f9319e" - integrity sha512-SQS2gDTB7tBN486QSoKPKQItZw97BMOd+Kdb6ghfpBc0yXyzrddI0oDV5MkDAbuB4X2mO3/nj60TRMcYxwzZeQ== +husky@7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/husky/-/husky-7.0.1.tgz#579f4180b5da4520263e8713cc832942b48e1f1c" + integrity sha512-gceRaITVZ+cJH9sNHqx5tFwbzlLCVxtVZcusME8JYQ8Edy5mpGDOqD8QBCdMhpyo9a+JXddnujQ4rpY2Ff9SJA== import-fresh@^3.2.1: version "3.3.0" - resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== dependencies: parent-module "^1.0.0" @@ -289,103 +273,100 @@ import-fresh@^3.2.1: indent-string@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== is-arrayish@^0.2.1: version "0.2.1" - resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= is-fullwidth-code-point@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== is-number@^7.0.0: version "7.0.0" - resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== is-obj@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= is-regexp@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= is-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz" - integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== is-unicode-supported@^0.1.0: version "0.1.0" - resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== isexe@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= js-tokens@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== json-parse-even-better-errors@^2.3.0: version "2.3.1" - resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== lines-and-columns@^1.1.6: version "1.1.6" - resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= -lint-staged@10.5.4: - version "10.5.4" - resolved "https://registry.npmjs.org/lint-staged/-/lint-staged-10.5.4.tgz" - integrity sha512-EechC3DdFic/TdOPgj/RB3FicqE6932LTHCUm0Y2fsD9KGlLB+RwJl2q1IYBIvEsKzDOgn0D4gll+YxG5RsrKg== +lint-staged@11.1.2: + version "11.1.2" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-11.1.2.tgz#4dd78782ae43ee6ebf2969cad9af67a46b33cd90" + integrity sha512-6lYpNoA9wGqkL6Hew/4n1H6lRqF3qCsujVT0Oq5Z4hiSAM7S6NksPJ3gnr7A7R52xCtiZMcEUNNQ6d6X5Bvh9w== dependencies: - chalk "^4.1.0" + chalk "^4.1.1" cli-truncate "^2.1.0" - commander "^6.2.0" + commander "^7.2.0" cosmiconfig "^7.0.0" - debug "^4.2.0" - dedent "^0.7.0" + debug "^4.3.1" enquirer "^2.3.6" - execa "^4.1.0" - listr2 "^3.2.2" - log-symbols "^4.0.0" - micromatch "^4.0.2" + execa "^5.0.0" + listr2 "^3.8.2" + log-symbols "^4.1.0" + micromatch "^4.0.4" normalize-path "^3.0.0" please-upgrade-node "^3.2.0" string-argv "0.3.1" stringify-object "^3.3.0" -listr2@^3.2.2: - version "3.4.3" - resolved "https://registry.npmjs.org/listr2/-/listr2-3.4.3.tgz" - integrity sha512-wZmkzNiuinOfwrGqAwTCcPw6aKQGTAMGXwG5xeU1WpDjJNeBA35jGBeWxR3OF+R6Yl5Y3dRG+3vE8t6PDcSNHA== +listr2@^3.8.2: + version "3.11.0" + resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.11.0.tgz#9771b02407875aa78e73d6e0ff6541bbec0aaee9" + integrity sha512-XLJVe2JgXCyQTa3FbSv11lkKExYmEyA4jltVo8z4FX10Vt1Yj8IMekBfwim0BSOM9uj1QMTJvDQQpHyuPbB/dQ== dependencies: - chalk "^4.1.0" cli-truncate "^2.1.0" - figures "^3.2.0" - indent-string "^4.0.0" + colorette "^1.2.2" log-update "^4.0.0" p-map "^4.0.0" - rxjs "^6.6.6" + rxjs "^6.6.7" through "^2.3.8" wrap-ansi "^7.0.0" -log-symbols@^4.0.0: +log-symbols@^4.1.0: version "4.1.0" - resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== dependencies: chalk "^4.1.0" @@ -393,7 +374,7 @@ log-symbols@^4.0.0: log-update@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== dependencies: ansi-escapes "^4.3.0" @@ -403,70 +384,63 @@ log-update@^4.0.0: merge-stream@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -micromatch@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz" - integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== +micromatch@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" + integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== dependencies: braces "^3.0.1" - picomatch "^2.0.5" + picomatch "^2.2.3" mimic-fn@^2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== ms@2.1.2: version "2.1.2" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== normalize-path@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -npm-run-path@^4.0.0: +npm-run-path@^4.0.1: version "4.0.1" - resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== dependencies: path-key "^3.0.0" -once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -onetime@^5.1.0: +onetime@^5.1.0, onetime@^5.1.2: version "5.1.2" - resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" p-map@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== dependencies: aggregate-error "^3.0.0" parent-module@^1.0.0: version "1.0.1" - resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== dependencies: callsites "^3.0.0" parse-json@^5.0.0: version "5.2.0" - resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== dependencies: "@babel/code-frame" "^7.0.0" @@ -476,84 +450,76 @@ parse-json@^5.0.0: path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" - resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== path-type@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -picomatch@^2.0.5: - version "2.2.2" - resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz" - integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== +picomatch@^2.2.3: + version "2.3.0" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" + integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== please-upgrade-node@^3.2.0: version "3.2.0" - resolved "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz" + resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== dependencies: semver-compare "^1.0.0" -prettier@2.2.1: - version "2.2.1" - resolved "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz" - integrity sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q== - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" +prettier@2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.3.2.tgz#ef280a05ec253712e486233db5c6f23441e7342d" + integrity sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ== resolve-from@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== restore-cursor@^3.1.0: version "3.1.0" - resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== dependencies: onetime "^5.1.0" signal-exit "^3.0.2" -rxjs@^6.6.6: - version "6.6.6" - resolved "https://registry.npmjs.org/rxjs/-/rxjs-6.6.6.tgz" - integrity sha512-/oTwee4N4iWzAMAL9xdGKjkEHmIwupR3oXbQjCKywF1BeFohswF3vZdogbmEF6pZkOsXTzWkrZszrWpQTByYVg== +rxjs@^6.6.7: + version "6.6.7" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" + integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== dependencies: tslib "^1.9.0" semver-compare@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= shebang-command@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== dependencies: shebang-regex "^3.0.0" shebang-regex@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -signal-exit@^3.0.2: +signal-exit@^3.0.2, signal-exit@^3.0.3: version "3.0.3" - resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== slice-ansi@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== dependencies: ansi-styles "^4.0.0" @@ -562,7 +528,7 @@ slice-ansi@^3.0.0: slice-ansi@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== dependencies: ansi-styles "^4.0.0" @@ -571,12 +537,12 @@ slice-ansi@^4.0.0: string-argv@0.3.1: version "0.3.1" - resolved "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz" + resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== string-width@^4.1.0, string-width@^4.2.0: version "4.2.2" - resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== dependencies: emoji-regex "^8.0.0" @@ -585,7 +551,7 @@ string-width@^4.1.0, string-width@^4.2.0: stringify-object@^3.3.0: version "3.3.0" - resolved "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz" + resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== dependencies: get-own-enumerable-property-symbols "^3.0.0" @@ -594,62 +560,62 @@ stringify-object@^3.3.0: strip-ansi@^6.0.0: version "6.0.0" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== dependencies: ansi-regex "^5.0.0" strip-final-newline@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== supports-color@^5.3.0: version "5.5.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" supports-color@^7.1.0: version "7.2.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" through@^2.3.8: version "2.3.8" - resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= to-regex-range@^5.0.1: version "5.0.1" - resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== dependencies: is-number "^7.0.0" tslib@^1.9.0: version "1.14.1" - resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -type-fest@^0.11.0: - version "0.11.0" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz" - integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== which@^2.0.1: version "2.0.2" - resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" wrap-ansi@^6.2.0: version "6.2.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== dependencies: ansi-styles "^4.0.0" @@ -658,19 +624,14 @@ wrap-ansi@^6.2.0: wrap-ansi@^7.0.0: version "7.0.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== dependencies: ansi-styles "^4.0.0" string-width "^4.1.0" strip-ansi "^6.0.0" -wrappy@1: - version "1.0.2" - resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - yaml@^1.10.0: version "1.10.2" - resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== From f710374b3cd73ea6913608d79cd6c0f66b55851a Mon Sep 17 00:00:00 2001 From: Sondre Nilsen Date: Sat, 21 Aug 2021 17:50:10 +0200 Subject: [PATCH 2/8] Use setup-java@v2, disable sonarqube in CI --- .github/workflows/pipeline.yml | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/.github/workflows/pipeline.yml b/.github/workflows/pipeline.yml index b7650977..b1af4a3e 100644 --- a/.github/workflows/pipeline.yml +++ b/.github/workflows/pipeline.yml @@ -39,19 +39,11 @@ jobs: key: ${{ runner.os }}-sonar restore-keys: ${{ runner.os }}-sonar - - name: Cache Gradle packages - uses: actions/cache@v2 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} - restore-keys: | - ${{ runner.os }}-gradle- - - - uses: actions/setup-java@v1 + - uses: actions/setup-java@v2 with: + distribution: adopt java-version: 16 + cache: gradle - name: Check run: ./gradlew check --info @@ -60,6 +52,7 @@ jobs: run: ./gradlew build - name: SonarQube analysis + if: ${{ false }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} From f77d55e421b1cab2569f8d7b8a56e62cb435dff2 Mon Sep 17 00:00:00 2001 From: Sondre Nilsen Date: Sat, 21 Aug 2021 17:54:18 +0200 Subject: [PATCH 3/8] Add back cache, it's not out yet --- .github/workflows/pipeline.yml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pipeline.yml b/.github/workflows/pipeline.yml index b1af4a3e..17448244 100644 --- a/.github/workflows/pipeline.yml +++ b/.github/workflows/pipeline.yml @@ -39,11 +39,21 @@ jobs: key: ${{ runner.os }}-sonar restore-keys: ${{ runner.os }}-sonar + - name: Cache Gradle packages + uses: actions/cache@v2 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} + restore-keys: | + ${{ runner.os }}-gradle- + - uses: actions/setup-java@v2 with: distribution: adopt java-version: 16 - cache: gradle + # cache: gradle TODO: Enable once released - name: Check run: ./gradlew check --info From b6d89c2ad78d23082371158e5c960ba0f9d2590e Mon Sep 17 00:00:00 2001 From: Sondre Nilsen Date: Sat, 21 Aug 2021 18:33:08 +0200 Subject: [PATCH 4/8] Add Dockerfile, configure pipeline and Gradle for it --- .github/workflows/pipeline.yml | 35 +++++++++++++++++++++++++++++++++- Dockerfile | 20 +++++++++++++++++++ build.gradle.kts | 4 ++++ 3 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 Dockerfile diff --git a/.github/workflows/pipeline.yml b/.github/workflows/pipeline.yml index 17448244..ce488459 100644 --- a/.github/workflows/pipeline.yml +++ b/.github/workflows/pipeline.yml @@ -5,6 +5,9 @@ on: pull_request: workflow_dispatch: +env: + docker_image: ghcr.io/echo-karriere/backend:${{ github.sha }} + jobs: tests: runs-on: ubuntu-latest @@ -61,6 +64,12 @@ jobs: - name: Build run: ./gradlew build + - name: Upload artifact for deployment job + uses: actions/upload-artifact@v2 + with: + name: backend + path: "${{ github.workspace }}/build/libs/*.jar" + - name: SonarQube analysis if: ${{ false }} env: @@ -75,10 +84,34 @@ jobs: rm -f ~/.gradle/caches/modules-2/modules-2.lock rm -f ~/.gradle/caches/modules-2/gc.properties + docker: + if: ${{ github.ref =='refs/heads/main' || github.ref == 'refs/heads/production' }} + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - name: Download artifact from build job + uses: actions/download-artifact@v2 + with: + name: backend + + - name: Build + run: docker image build --tag ${docker_image} . + + - uses: docker/login-action@v1 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Push image + run: docker push ${docker_image} + deploy-dev: if: github.event_name == 'push' && github.ref == 'refs/heads/main' runs-on: ubuntu-latest - needs: [tests] + needs: [ tests ] environment: name: "dev" url: ${{ steps.deploy-to-webapp.outputs.webapp-url }} diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..a56c9885 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,20 @@ +FROM adoptopenjdk:16-jre-hotspot as builder + +WORKDIR /app + +ARG JAR_FILE=build/libs/*.jar + +COPY ${JAR_FILE} application.jar + +RUN java -Djarmode=layertools -jar application.jar extract + +FROM adoptopenjdk:16-jre-hotspot + +WORKDIR /app + +COPY --from=builder /app/dependencies/ ./ +COPY --from=builder /app/spring-boot-loader/ ./ +COPY --from=builder /app/snapshot-dependencies/ ./ +COPY --from=builder /app/application/ ./ + +ENTRYPOINT ["java", "org.springframework.boot.loader.JarLauncher"] diff --git a/build.gradle.kts b/build.gradle.kts index 4954fde4..62482f8b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -50,6 +50,10 @@ tasks.withType { } } +tasks.jar { + enabled = false +} + tasks.withType { useJUnitPlatform() failFast = true From 281693f706e351bb45475d559ab9a5a0795ab9b8 Mon Sep 17 00:00:00 2001 From: Sondre Nilsen Date: Sat, 21 Aug 2021 18:37:15 +0200 Subject: [PATCH 5/8] Set dependencies on pipeline build steps --- .github/workflows/pipeline.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pipeline.yml b/.github/workflows/pipeline.yml index ce488459..3492d402 100644 --- a/.github/workflows/pipeline.yml +++ b/.github/workflows/pipeline.yml @@ -9,7 +9,7 @@ env: docker_image: ghcr.io/echo-karriere/backend:${{ github.sha }} jobs: - tests: + check-build: runs-on: ubuntu-latest env: DATABASE_URL: jdbc:postgresql://localhost:32789/test_db @@ -85,6 +85,7 @@ jobs: rm -f ~/.gradle/caches/modules-2/gc.properties docker: + needs: [ check-build ] if: ${{ github.ref =='refs/heads/main' || github.ref == 'refs/heads/production' }} runs-on: ubuntu-latest @@ -111,7 +112,7 @@ jobs: deploy-dev: if: github.event_name == 'push' && github.ref == 'refs/heads/main' runs-on: ubuntu-latest - needs: [ tests ] + needs: [ docker ] environment: name: "dev" url: ${{ steps.deploy-to-webapp.outputs.webapp-url }} From a8dcbd6cffc76f4bf1282e1304101130634ce833 Mon Sep 17 00:00:00 2001 From: Sondre Nilsen Date: Sat, 21 Aug 2021 18:42:23 +0200 Subject: [PATCH 6/8] Also tag image with latest --- .github/workflows/pipeline.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pipeline.yml b/.github/workflows/pipeline.yml index 3492d402..8dadf607 100644 --- a/.github/workflows/pipeline.yml +++ b/.github/workflows/pipeline.yml @@ -7,6 +7,7 @@ on: env: docker_image: ghcr.io/echo-karriere/backend:${{ github.sha }} + docker_image_latest: ghcr.io/echo-karriere/backend:latest jobs: check-build: @@ -98,7 +99,7 @@ jobs: name: backend - name: Build - run: docker image build --tag ${docker_image} . + run: docker image build --tag ${docker_image} --tag ${docker_image_latest} . - uses: docker/login-action@v1 with: @@ -107,7 +108,9 @@ jobs: password: ${{ secrets.GITHUB_TOKEN }} - name: Push image - run: docker push ${docker_image} + run: | + docker push ${docker_image} + docker push ${docker_image_latest} deploy-dev: if: github.event_name == 'push' && github.ref == 'refs/heads/main' From 16cb68515fdf2b78df0c1818bac7cf68181390b6 Mon Sep 17 00:00:00 2001 From: Sondre Nilsen Date: Sat, 21 Aug 2021 18:48:54 +0200 Subject: [PATCH 7/8] Pre-fix building Docker image by setting correct JAR_FILE path on CI --- .github/workflows/pipeline.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pipeline.yml b/.github/workflows/pipeline.yml index 8dadf607..2f8647ee 100644 --- a/.github/workflows/pipeline.yml +++ b/.github/workflows/pipeline.yml @@ -99,7 +99,7 @@ jobs: name: backend - name: Build - run: docker image build --tag ${docker_image} --tag ${docker_image_latest} . + run: docker build . --tag ${docker_image} --tag ${docker_image_latest} --build-arg JAR_FILE=backend - uses: docker/login-action@v1 with: From c8c62cef7579a46f49702d5a190ad114f9cbd2d6 Mon Sep 17 00:00:00 2001 From: Sondre Nilsen Date: Wed, 25 Aug 2021 13:28:28 +0200 Subject: [PATCH 8/8] Use new way of setting Java version --- build.gradle.kts | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 62482f8b..5965f2a7 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -3,7 +3,7 @@ import org.gradle.api.tasks.testing.logging.TestLogEvent plugins { jacoco - java + id("application") id("org.springframework.boot").version("2.5.4") id("io.spring.dependency-management").version("1.0.11.RELEASE") id("com.netflix.dgs.codegen").version("5.0.5") @@ -42,11 +42,9 @@ group = "no.echokarriere" version = "0.0.1-SNAPSHOT" description = "backend" -java.sourceCompatibility = JavaVersion.VERSION_16 -tasks.withType { - java { - targetCompatibility = JavaVersion.VERSION_16 - sourceCompatibility = JavaVersion.VERSION_16 +java { + toolchain { + languageVersion.set(JavaLanguageVersion.of(16)) } }