Skip to content

Commit 5a15640

Browse files
committed
Update docker file to use cds
1 parent 3f2927e commit 5a15640

File tree

12 files changed

+44
-37
lines changed

12 files changed

+44
-37
lines changed

.github/workflows/build.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ jobs:
2323
GRADLE_CLI_OPTS: ""
2424
run: "chmod +x ./gradlew && ./gradlew ${GRADLE_CLI_OPTS} -Pversion=${API_VERSION} build jacocoTestReport"
2525
- name: Build and push Docker images
26-
if: github.ref == 'refs/heads/develop' || startsWith(github.ref, 'refs/tags')
26+
if: github.ref == 'refs/heads/develop' || github.ref == 'refs/heads/cds' || startsWith(github.ref, 'refs/tags')
2727
uses: docker/[email protected]
2828
with:
2929
username: ${{ secrets.DOCKER_USERNAME }}

Dockerfile

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,23 @@ FROM eclipse-temurin:21-jdk-alpine as builder
22
WORKDIR /application
33
ARG JAR_FILE=build/libs/faf-java-api-*.jar
44
COPY ${JAR_FILE} application.jar
5-
RUN java -Djarmode=layertools -jar application.jar extract
5+
COPY test-pki-private.key /pki/secret.key
6+
COPY test-pki-public.key /pki/public.key
7+
COPY test-account-activation.html /config/mail/account-activation.html
8+
COPY test-password-reset.html /config/mail/password-reset.html
9+
COPY test-welcome-to-faf.html /config/mail/welcome-to-faf.html
10+
ENV FAF_DOMAIN=faforever.com
11+
ENV CHALLONGE_KEY=test
12+
RUN java -Djarmode=tools -jar application.jar extract
13+
RUN java -Dspring.context.exit=onRefresh -Dspring.profiles.active=training -XX:ArchiveClassesAtExit=application.jsa -jar application/application.jar
614

715
FROM eclipse-temurin:21-jdk-alpine
816
VOLUME /tmp
917
WORKDIR /application
10-
COPY --from=builder /application/dependencies/ ./
18+
COPY --from=builder /application/application/lib ./application/lib
1119
RUN true
12-
COPY --from=builder /application/spring-boot-loader/ ./
20+
COPY --from=builder /application/application/application.jar ./application
1321
RUN true
14-
COPY --from=builder /application/snapshot-dependencies/ ./
22+
COPY --from=builder /application/application.jsa ./
1523
RUN true
16-
COPY --from=builder /application/application/ ./
17-
RUN true
18-
ENTRYPOINT ["java", "-server", "-Djava.security.egd=file:/dev/./urandom", "org.springframework.boot.loader.launch.JarLauncher"]
24+
ENTRYPOINT ["java", "-XX:SharedArchiveFile=application.jsa", "-Djava.security.egd=file:/dev/./urandom", "-jar", "application/application.jar"]

build.gradle

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,18 @@ repositories {
3131
maven { url "https://jitpack.io" }
3232
}
3333

34-
compileJava.dependsOn(processResources)
34+
compileJava {
35+
dependsOn(processResources)
36+
options.compilerArgs.add("-parameters")
37+
}
3538

3639
configurations {
3740
compile.exclude module: "assertj-core"
3841
}
3942

4043
idea {
4144
module {
42-
testSourceDirs += file('src/inttest/java')
45+
testSources = files(file("src/test/java"), file("src/inttest/java"))
4346
}
4447
}
4548

@@ -66,7 +69,7 @@ configurations {
6669
}
6770

6871

69-
task inttest(type: Test) {
72+
tasks.register('inttest', Test) {
7073
group = LifecycleBasePlugin.VERIFICATION_GROUP
7174
description = "Runs the integration tests."
7275

@@ -105,13 +108,14 @@ configurations {
105108
codacy
106109
}
107110

108-
task sendCoverageToCodacy(type: JavaExec, dependsOn: jacocoTestReport) {
111+
tasks.register('sendCoverageToCodacy', JavaExec) {
112+
dependsOn jacocoTestReport
109113
mainClass = "com.codacy.CodacyCoverageReporter"
110114
classpath = configurations.codacy
111115
args = ["report", "-l", "Java", "-r", "${buildDir}/reports/jacoco/test/jacocoTestReport.xml"]
112116
}
113117

114-
configurations.all {
118+
configurations.configureEach {
115119
// Cache -SNAPSHOT for 60 seconds only
116120
resolutionStrategy.cacheChangingModulesFor 60, 'seconds'
117121
}

src/main/java/com/faforever/api/challonge/ChallongeController.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,11 @@
22

33
import com.faforever.api.config.FafApiProperties;
44
import com.faforever.api.config.FafApiProperties.Challonge;
5+
import jakarta.servlet.http.HttpServletRequest;
56
import lombok.RequiredArgsConstructor;
67
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
78
import org.springframework.boot.web.client.RestTemplateBuilder;
89
import org.springframework.cache.annotation.Cacheable;
9-
import org.springframework.context.annotation.Scope;
10-
import org.springframework.context.annotation.ScopedProxyMode;
1110
import org.springframework.http.HttpEntity;
1211
import org.springframework.http.HttpMethod;
1312
import org.springframework.http.MediaType;
@@ -22,7 +21,6 @@
2221
import org.springframework.web.util.DefaultUriBuilderFactory;
2322
import org.springframework.web.util.UriBuilder;
2423

25-
import jakarta.servlet.http.HttpServletRequest;
2624
import java.util.Map;
2725
import java.util.concurrent.CompletableFuture;
2826

@@ -37,7 +35,6 @@
3735
* only loaded if a Challonge API key is specified.</p>
3836
*/
3937
@RestController
40-
@Scope(proxyMode = ScopedProxyMode.TARGET_CLASS)
4138
@RequestMapping(path = ChallongeController.CHALLONGE_ROUTE)
4239
@ConditionalOnProperty("faf-api.challonge.key")
4340
public class ChallongeController {

src/main/java/com/faforever/api/config/ApplicationProfile.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ public final class ApplicationProfile {
55
public static final String PRODUCTION = "prod";
66
public static final String DEVELOPMENT = "dev";
77
public static final String INTEGRATION_TEST = "int";
8+
public static final String TRAINING = "training";
89

910
private ApplicationProfile() {
1011
// Utility class

src/main/java/com/faforever/api/config/CacheConfig.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import com.faforever.api.data.domain.MapVersion;
1717
import com.faforever.api.data.domain.Mod;
1818
import com.faforever.api.data.domain.ModVersion;
19+
import jakarta.servlet.http.HttpServletRequest;
1920
import org.springframework.cache.CacheManager;
2021
import org.springframework.cache.annotation.EnableCaching;
2122
import org.springframework.cache.caffeine.CaffeineCache;
@@ -28,7 +29,6 @@
2829
import org.springframework.context.annotation.Profile;
2930
import org.springframework.web.servlet.HandlerMapping;
3031

31-
import jakarta.servlet.http.HttpServletRequest;
3232
import java.util.Collection;
3333
import java.util.List;
3434
import java.util.concurrent.TimeUnit;
@@ -40,7 +40,7 @@
4040

4141
@EnableCaching(proxyTargetClass = true)
4242
@Configuration
43-
@Profile(ApplicationProfile.PRODUCTION)
43+
@Profile({ApplicationProfile.PRODUCTION, ApplicationProfile.TRAINING})
4444
public class CacheConfig {
4545

4646
/**
Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,15 @@
11
package com.faforever.api.config;
22

33
import com.faforever.api.i18n.RepositoryMessageSource;
4-
import org.springframework.context.HierarchicalMessageSource;
5-
import org.springframework.context.MessageSource;
64
import org.springframework.context.annotation.Bean;
75
import org.springframework.context.annotation.Configuration;
86
import org.springframework.context.support.MessageSourceAccessor;
97

10-
import jakarta.inject.Inject;
11-
128
@Configuration
139
public class LocalizationConfig {
1410

1511
@Bean
16-
public MessageSourceAccessor messageSourceAccessor(MessageSource messageSource) {
12+
public MessageSourceAccessor messageSourceAccessor(RepositoryMessageSource messageSource) {
1713
return new MessageSourceAccessor(messageSource);
1814
}
19-
20-
@Inject
21-
public void configureMessageSource(HierarchicalMessageSource messageSource, RepositoryMessageSource repositoryMessageSource) {
22-
messageSource.setParentMessageSource(repositoryMessageSource);
23-
}
2415
}

src/main/java/com/faforever/api/config/elide/ElideConfig.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import com.yahoo.elide.jsonapi.JsonApiSettings;
1919
import org.apache.commons.beanutils.ConvertUtils;
2020
import org.apache.commons.beanutils.Converter;
21+
import org.springframework.beans.factory.annotation.Qualifier;
2122
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
2223
import org.springframework.context.annotation.Bean;
2324
import org.springframework.context.annotation.Configuration;
@@ -35,8 +36,8 @@ public class ElideConfig {
3536

3637
@Bean
3738
MultiplexManager multiplexDataStore(
38-
DataStore fafDataStore,
39-
DataStore leagueDataStore
39+
@Qualifier("fafDataStore") DataStore fafDataStore,
40+
@Qualifier("leagueDataStore")DataStore leagueDataStore
4041
) {
4142
return new MultiplexManager(fafDataStore, leagueDataStore);
4243
}

src/main/java/com/faforever/api/db/SchemaVersionVerifier.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import java.util.Objects;
1212

1313
@Component
14-
@Profile("!" + ApplicationProfile.INTEGRATION_TEST)
14+
@Profile(ApplicationProfile.PRODUCTION)
1515
public class SchemaVersionVerifier implements PriorityOrdered, InitializingBean {
1616

1717
private final SchemaVersionRepository schemaVersionRepository;

src/main/java/com/faforever/api/i18n/RepositoryMessageSource.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
11
package com.faforever.api.i18n;
22

3+
import com.faforever.api.config.ApplicationProfile;
34
import lombok.RequiredArgsConstructor;
45
import org.springframework.beans.factory.InitializingBean;
56
import org.springframework.context.support.AbstractResourceBasedMessageSource;
7+
import org.springframework.core.env.Environment;
68
import org.springframework.stereotype.Component;
79

810
import java.text.MessageFormat;
911
import java.util.HashMap;
1012
import java.util.Locale;
1113
import java.util.Map;
1214
import java.util.Objects;
15+
import java.util.Set;
1316

1417
@Component
1518
@RequiredArgsConstructor
@@ -18,6 +21,7 @@ public class RepositoryMessageSource extends AbstractResourceBasedMessageSource
1821
private static final Locale FALLBACK_LOCALE = Locale.US;
1922

2023
private final MessageRepository messageRepository;
24+
private final Environment environment;
2125

2226
/**
2327
* Language -&gt; Region -&gt; Key -&gt; Value.
@@ -76,6 +80,6 @@ private String getText(String key, Locale locale) {
7680

7781
@Override
7882
public void afterPropertiesSet() {
79-
messagesByLanguage = loadMessages();
83+
messagesByLanguage = Set.of(environment.getActiveProfiles()).contains(ApplicationProfile.TRAINING) ? Map.of() : loadMessages();
8084
}
8185
}

0 commit comments

Comments
 (0)