Skip to content

Commit 0c83857

Browse files
committed
Update langs
1 parent bb2e192 commit 0c83857

10 files changed

Lines changed: 49 additions & 49 deletions

File tree

services/app/apps/codebattle/assets/js/widgets/pages/builder/BuilderTaskAssignment.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,8 @@ function BuilderTaskAssignment({
8787
const editable = useSelector(selectors.canEditTask);
8888
const [avaibleLanguages, displayLanguage, description] = useTaskDescriptionParams(task, taskLanguage);
8989
const descriptionTextMapping = {
90-
en: task.descriptionEn,
91-
ru: task.descriptionRu,
90+
en: task?.descriptionEn || '',
91+
ru: task?.descriptionRu || '',
9292
};
9393
const taskDescriptionText = descriptionTextMapping[taskLanguage];
9494

services/app/apps/codebattle/assets/js/widgets/utils/useTaskDescriptionParams.js

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,35 +5,38 @@ import keys from 'lodash/keys';
55

66
import taskDescriptionLanguages from '../config/taskDescriptionLanguages';
77

8-
const wrapExamplesInCodeBlock = (examples = '') => {
9-
const trimmed = examples.trim();
8+
const wrapExamplesInCodeBlock = (examples) => {
9+
const safeExamples = typeof examples === 'string' ? examples : '';
10+
const trimmed = safeExamples.trim();
1011

1112
if (trimmed.startsWith('```') && trimmed.endsWith('```')) {
12-
return examples;
13+
return safeExamples;
1314
}
1415

15-
return `\`\`\`\n${examples}\n\`\`\``;
16+
return `\`\`\`\n${safeExamples}\n\`\`\``;
1617
};
1718

1819
const useTaskDescriptionParams = (task, taskLanguage) => useMemo(() => {
19-
const avaibleLanguages = keys(task)
20+
const safeTask = task || {};
21+
const normalizedTaskLanguage = taskLanguage || taskDescriptionLanguages.default;
22+
const avaibleLanguages = keys(safeTask)
2023
.filter((key) => key.includes('description'))
2124
.map((key) => key.split('description'))
2225
.map(([, language]) => language.toLowerCase());
2326

24-
const displayLanguage = includes(avaibleLanguages, taskLanguage)
25-
? taskLanguage
27+
const displayLanguage = includes(avaibleLanguages, normalizedTaskLanguage)
28+
? normalizedTaskLanguage
2629
: taskDescriptionLanguages.default;
2730

28-
const examples = wrapExamplesInCodeBlock(task.examples);
31+
const examples = wrapExamplesInCodeBlock(safeTask.examples);
2932

3033
// TODO: remove russian text from string (create ru/en templates of basic description)
3134
const taskDescriptionMapping = {
32-
en: `${task.descriptionEn}\n\n**Examples:**\n${examples}`,
33-
ru: `${task.descriptionRu}\n\n**Примеры:**\n${examples}`,
35+
en: `${safeTask.descriptionEn || ''}\n\n**Examples:**\n${examples}`,
36+
ru: `${safeTask.descriptionRu || ''}\n\n**Примеры:**\n${examples}`,
3437
};
3538

36-
const description = taskDescriptionMapping[taskLanguage];
39+
const description = taskDescriptionMapping[displayLanguage];
3740

3841
return [avaibleLanguages, displayLanguage, description];
3942
}, [task, taskLanguage]);

services/app/apps/codebattle/lib/codebattle/code_check/checker.ex

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,12 @@ defmodule Codebattle.CodeCheck.Checker do
4040
%{token | result: OutputParser.call(token)}
4141
end
4242

43-
defp get_executor, do: Application.fetch_env!(:codebattle, :checker_executor)
43+
defp get_executor do
44+
if FunWithFlags.enabled?(:use_remote_zig_executor) do
45+
Codebattle.CodeCheck.Executor.RemoteZig
46+
else
47+
Application.fetch_env!(:codebattle, :checker_executor)
48+
end
49+
end
4450
# defp get_executor, do: Codebattle.CodeCheck.Executor.RemoteZig
4551
end

services/app/apps/runner/images/cpp/Containerfile

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,6 @@ COPY Makefile ./
5151
# don’t fail if user/group already exists; chown only if it does
5252
RUN chown -R app:app /usr/src/app || true
5353

54-
USER app
55-
5654
EXPOSE 4040
5755
COPY --from=runner /app/codebattle_runner /runner/codebattle_runner
5856
ENTRYPOINT ["/runner/codebattle_runner"]

services/app/apps/runner/images/js/Containerfile

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
ARG RUNNER_IMAGE=ghcr.io/hexlet-codebattle/runner-rs:latest
2-
ARG NODE_TAG=24.11.0-alpine3.22
1+
ARG RUNNER_IMAGE=ghcr.io/hexlet-codebattle/runner-zig:latest
2+
ARG NODE_TAG=25.4.0-alpine3.23
33
ARG TARGETPLATFORM
44

55
FROM --platform=$TARGETPLATFORM ${RUNNER_IMAGE} AS runner
@@ -27,8 +27,6 @@ COPY assertsRunner.js .
2727
COPY Makefile .
2828
RUN chown -R app:app /usr/src/app
2929

30-
USER app
31-
32-
EXPOSE 8000
30+
EXPOSE 4040
3331
COPY --from=runner /app/codebattle_runner /runner/codebattle_runner
3432
ENTRYPOINT ["/runner/codebattle_runner"]

services/app/apps/runner/images/js/package.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22
"name": "js-checker",
33
"version": "0.0.1",
44
"dependencies": {
5-
"@types/lodash": "^4.14.183",
6-
"@types/node": "^20.11.25",
7-
"@faker-js/faker": "^8.0.2",
8-
"lodash": "^4.17.21",
9-
"rambda": "^9.1.0",
10-
"typescript": "^5.4.2"
5+
"@faker-js/faker": "^10.2.0",
6+
"@types/lodash": "^4.17.23",
7+
"@types/node": "^25.0.10",
8+
"lodash": "^4.17.23",
9+
"rambda": "^11.0.1",
10+
"typescript": "^5.9.3"
1111
}
1212
}

services/app/apps/runner/images/kotlin/Containerfile

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
ARG RUNNER_IMAGE=ghcr.io/hexlet-codebattle/runner-rs:latest
2-
ARG CORRETTO_TAG=25-alpine3.22-full
3-
ARG KOTLIN_VERSION=2.2.21
1+
ARG RUNNER_IMAGE=ghcr.io/hexlet-codebattle/runner-zig:latest
2+
ARG CORRETTO_TAG=25-alpine3.23-full
3+
ARG KOTLIN_VERSION=2.3.0
44
ARG TARGETPLATFORM
55

66
FROM --platform=$TARGETPLATFORM ${RUNNER_IMAGE} AS runner
@@ -39,8 +39,6 @@ COPY check check
3939
COPY Makefile .
4040
RUN chown -R app:app /usr/src/app
4141

42-
USER app
43-
44-
EXPOSE 8000
42+
EXPOSE 4040
4543
COPY --from=runner /app/codebattle_runner /runner/codebattle_runner
4644
ENTRYPOINT ["/runner/codebattle_runner"]

services/app/apps/runner/images/ruby/Containerfile

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,18 @@ FROM --platform=$TARGETPLATFORM ruby:${RUBY_TAG}
88

99
RUN apk add --no-cache make
1010

11-
# Create system group+user first
11+
# Create system group+user for workspace ownership
1212
RUN addgroup -S app -g 10001 \
1313
&& adduser -S -D -H -h /nonexistent -s /sbin/nologin -G app -u 10001 app
1414

1515
WORKDIR /usr/src/app
1616

17-
# Copy files, then fix ownership
1817
COPY check ./check
1918
COPY checker.rb .
2019
COPY Makefile .
21-
RUN chown -R app:app /usr/src/app
2220

23-
USER app
21+
# Ensure runner can drop privileges to app (workspace is owned by app)
22+
RUN chown -R app:app /usr/src/app
2423

2524
EXPOSE 4040
2625
COPY --from=runner /app/codebattle_runner /runner/codebattle_runner

services/app/apps/runner/images/swift/Containerfile

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
ARG RUNNER_IMAGE=ghcr.io/hexlet-codebattle/runner-rs:latest
2-
ARG SWIFT_TAG=6.2.0-jammy
1+
ARG RUNNER_IMAGE=ghcr.io/hexlet-codebattle/runner-zig:latest
2+
ARG SWIFT_TAG=6.2.3-noble
33
ARG TARGETPLATFORM
44

55
FROM --platform=$TARGETPLATFORM ${RUNNER_IMAGE} AS runner
@@ -21,8 +21,6 @@ COPY check ./check
2121
COPY Makefile .
2222
RUN chown -R app:app /usr/src/app
2323

24-
USER app
25-
26-
EXPOSE 8000
24+
EXPOSE 4040
2725
COPY --from=runner /app/codebattle_runner /runner/codebattle_runner
2826
ENTRYPOINT ["/runner/codebattle_runner"]

services/app/apps/runner/lib/runner/languages.ex

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -74,12 +74,12 @@ defmodule Runner.Languages do
7474
generate_checker?: false,
7575
name: "Node.js",
7676
slug: "js",
77-
version: "24.11.0",
77+
version: "25.4.0",
7878
check_dir: "check",
7979
container_run_timeout: "15s",
8080
solution_file_name: "solution.js",
8181
checker_file_name: "checker.js",
82-
image: "ghcr.io/hexlet-codebattle/js:24.11.0",
82+
image: "ghcr.io/hexlet-codebattle/js:25.4.0",
8383
solution_template: """
8484
const _ = require("lodash");
8585
const R = require("rambda");
@@ -126,7 +126,7 @@ defmodule Runner.Languages do
126126
container_run_timeout: "15s",
127127
solution_file_name: "solution.js",
128128
checker_file_name: "checker.js",
129-
image: "ghcr.io/hexlet-codebattle/js:24.11.0",
129+
image: "ghcr.io/hexlet-codebattle/js:25.4.0",
130130
solution_template: """
131131
import * as _ from "lodash";
132132
import * as R from "rambda";
@@ -315,13 +315,13 @@ defmodule Runner.Languages do
315315
"kotlin" => %LanguageMeta{
316316
name: "Kotlin",
317317
slug: "kotlin",
318-
version: "2.2.21",
318+
version: "2.3.0",
319319
output_version: 2,
320320
check_dir: "check",
321321
container_run_timeout: "25s",
322322
solution_file_name: "solution.kt",
323323
checker_file_name: "checker.kt",
324-
image: "ghcr.io/hexlet-codebattle/kotlin:2.2.21",
324+
image: "ghcr.io/hexlet-codebattle/kotlin:2.3.0",
325325
solution_template: """
326326
package solution
327327
@@ -831,12 +831,12 @@ defmodule Runner.Languages do
831831
name: "Swift",
832832
slug: "swift",
833833
output_version: 2,
834-
version: "6.1.0",
834+
version: "6.2.3",
835835
container_run_timeout: "20s",
836836
solution_file_name: "solution.swift",
837837
checker_file_name: "checker.swift",
838838
check_dir: "check",
839-
image: "ghcr.io/hexlet-codebattle/swift:6.1.0",
839+
image: "ghcr.io/hexlet-codebattle/swift:6.2.3",
840840
solution_template: """
841841
import Foundation
842842

0 commit comments

Comments
 (0)