Skip to content

Commit 0a87fe4

Browse files
committed
Downgrade node version to 20.19.5 on Windows
1 parent 1aedf36 commit 0a87fe4

File tree

13 files changed

+138
-117
lines changed

13 files changed

+138
-117
lines changed

.github/workflows/build.yaml

Lines changed: 68 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -11,23 +11,8 @@ on:
1111
- docs/**
1212

1313
jobs:
14-
check:
15-
runs-on: ubuntu-latest
16-
steps:
17-
- uses: actions/checkout@v4
18-
- uses: actions/setup-java@v4
19-
with:
20-
java-version: 21
21-
distribution: zulu
22-
- uses: gradle/gradle-build-action@v2
23-
with:
24-
gradle-home-cache-cleanup: true
25-
- name: Licensing and other lightweight checks
26-
run: ./gradlew --console=plain license validateAntora validatePlugins
27-
- name: Coding style
28-
run: ./gradlew --console=plain -i codenarcAll
29-
# build-windows:
30-
# runs-on: windows-latest
14+
# check:
15+
# runs-on: ubuntu-latest
3116
# steps:
3217
# - uses: actions/checkout@v4
3318
# - uses: actions/setup-java@v4
@@ -37,55 +22,70 @@ jobs:
3722
# - uses: gradle/gradle-build-action@v2
3823
# with:
3924
# gradle-home-cache-cleanup: true
40-
# - name: Cache offline repository
41-
# uses: actions/cache@v3
42-
# with:
43-
# path: .offline-repo
44-
# key: ${{ runner.os }}-offline-repo-${{ hashFiles('module-versions.properties') }}
45-
# restore-keys: ${{ runner.os }}-offline-repo-
46-
# - name: Build offline repository
47-
# run: ./gradlew --console=plain --no-build-cache syncRemoteRepositories
48-
# - name: Build
49-
# run: ./gradlew --console=plain --warning-mode=all clean assemble
50-
# - name: Test
51-
# run: ./gradlew --console=plain --warning-mode=all -i check --no-parallel -x gradleTest -x :asciidoctor-gradle-jvm-gems:integrationTest
52-
# env:
53-
# JAVA_TOOL_OPTIONS: -Djava.net.preferIPv4Stack=true
54-
# # Stop gradlew to avoid locking issues
55-
# - name: Cleanup
56-
# run: ./gradlew --stop
57-
build:
58-
strategy:
59-
matrix:
60-
os: [ubuntu-latest]
61-
java: [ 21 ]
62-
# os: [ubuntu-latest, macos-latest]
63-
# java: [ 8, 11 ]
64-
runs-on: ${{ matrix.os }}
25+
# - name: Licensing and other lightweight checks
26+
# run: ./gradlew --console=plain license validateAntora validatePlugins
27+
# - name: Coding style
28+
# run: ./gradlew --console=plain -i codenarcAll
29+
build-windows:
30+
runs-on: windows-latest
6531
steps:
66-
- uses: actions/checkout@v4
67-
- uses: actions/setup-java@v4
68-
with:
69-
java-version: ${{ matrix.java }}
70-
distribution: zulu
71-
- uses: gradle/gradle-build-action@v2
72-
with:
73-
gradle-home-cache-cleanup: true
74-
- name: Cache offline repository
75-
uses: actions/cache@v3
76-
with:
77-
path: .offline-repo
78-
key: ${{ runner.os }}-offline-repo-${{ hashFiles('module-versions.properties') }}
79-
restore-keys: ${{ runner.os }}-offline-repo-
80-
- name: Build offline repository
81-
run: ./gradlew --console=plain --no-build-cache syncRemoteRepositories
82-
- name: Build
83-
run: ./gradlew -i -s --console=plain --no-build-cache assemble
84-
- name: Integration tests
85-
run: ./gradlew -i --console=plain --no-parallel --no-build-cache test integrationTest -x :asciidoctor-gradle-jvm-gems:intTest
86-
- name: Classic GEM plugin integration test
87-
run: ./gradlew -i --console=plain --no-build-cache :asciidoctor-gradle-jvm-gems:intTest
88-
- name: Remote tests for classic plugins
89-
run: ./gradlew -i --console=plain --no-build-cache remoteTest
90-
- name: Gradle tests
91-
run: ./gradlew -i --console=plain --no-parallel --no-build-cache gradleTest configCacheGradleTest jdk17GradleTest jdk21GradleTest
32+
- uses: actions/checkout@v4
33+
- uses: actions/setup-java@v4
34+
with:
35+
java-version: 21
36+
distribution: zulu
37+
- uses: gradle/gradle-build-action@v2
38+
with:
39+
gradle-home-cache-cleanup: true
40+
- name: Cache offline repository
41+
uses: actions/cache@v3
42+
with:
43+
path: .offline-repo
44+
key: ${{ runner.os }}-offline-repo-${{ hashFiles('module-versions.properties') }}
45+
restore-keys: ${{ runner.os }}-offline-repo-
46+
- name: Build offline repository
47+
run: ./gradlew --console=plain --no-build-cache syncRemoteRepositories
48+
- name: Build
49+
run: ./gradlew --console=plain --warning-mode=all clean assemble
50+
- name: Test
51+
run: ./gradlew --console=plain --warning-mode=all -i check --no-parallel -x gradleTest -x :asciidoctor-gradle-jvm-gems:integrationTest
52+
env:
53+
JAVA_TOOL_OPTIONS: -Djava.net.preferIPv4Stack=true
54+
# Stop gradlew to avoid locking issues
55+
- name: Cleanup
56+
run: ./gradlew --stop
57+
# build:
58+
# strategy:
59+
# matrix:
60+
# os: [ubuntu-latest]
61+
# java: [ 21 ]
62+
# # os: [ubuntu-latest, macos-latest]
63+
# # java: [ 8, 11 ]
64+
# runs-on: ${{ matrix.os }}
65+
# steps:
66+
# - uses: actions/checkout@v4
67+
# - uses: actions/setup-java@v4
68+
# with:
69+
# java-version: ${{ matrix.java }}
70+
# distribution: zulu
71+
# - uses: gradle/gradle-build-action@v2
72+
# with:
73+
# gradle-home-cache-cleanup: true
74+
# - name: Cache offline repository
75+
# uses: actions/cache@v3
76+
# with:
77+
# path: .offline-repo
78+
# key: ${{ runner.os }}-offline-repo-${{ hashFiles('module-versions.properties') }}
79+
# restore-keys: ${{ runner.os }}-offline-repo-
80+
# - name: Build offline repository
81+
# run: ./gradlew --console=plain --no-build-cache syncRemoteRepositories
82+
# - name: Build
83+
# run: ./gradlew -i -s --console=plain --no-build-cache assemble
84+
# - name: Integration tests
85+
# run: ./gradlew -i --console=plain --no-parallel --no-build-cache test integrationTest -x :asciidoctor-gradle-jvm-gems:intTest
86+
# - name: Classic GEM plugin integration test
87+
# run: ./gradlew -i --console=plain --no-build-cache :asciidoctor-gradle-jvm-gems:intTest
88+
# - name: Remote tests for classic plugins
89+
# run: ./gradlew -i --console=plain --no-build-cache remoteTest
90+
# - name: Gradle tests
91+
# run: ./gradlew -i --console=plain --no-parallel --no-build-cache gradleTest configCacheGradleTest jdk17GradleTest jdk21GradleTest

classic/js/build.gradle

Lines changed: 2 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ plugins {
55
id 'org.ysb33r.ivypot'
66
}
77

8+
apply from: "${rootDir}/gradle/cache-node.gradle"
9+
810
agProject {
911
withClassicOfflineTestConfigurations()
1012
withIntegrationTests()
@@ -31,26 +33,6 @@ agProject {
3133
])
3234
}
3335

34-
ext {
35-
if (OS.windows) {
36-
nodejsExt = 'zip'
37-
if (System.getProperty('os.arch').contains('64')) {
38-
nodejsArch = 'win-x64'
39-
} else {
40-
nodejsArch = 'win-x86'
41-
}
42-
} else if (OS.linux) {
43-
nodejsExt = 'tar.xz'
44-
if (System.getProperty('os.arch').contains('64')) {
45-
nodejsArch = 'linux-x64'
46-
} else {
47-
nodejsArch = 'linux-x86'
48-
}
49-
} else if (OS.macOsX) {
50-
nodejsExt = 'tar.gz'
51-
nodejsArch = 'darwin-x64'
52-
}
53-
}
5436

5537
dependencies {
5638
api(project(':asciidoctor-gradle-base'))
@@ -59,9 +41,6 @@ dependencies {
5941
runtimeOnly(libs.grolifantRuntime)
6042
}
6143

62-
ivypot {
63-
cacheBinaries.add "nodejs:node:${agProject.versionOf('nodejs')}:${nodejsArch}@${nodejsExt}"
64-
}
6544

6645
generateModuleVersions {
6746
basename = 'asciidoctorjs-extension'

gradle/cache-node.gradle

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
apply plugin: 'org.ysb33r.os'
2+
3+
ext {
4+
if (OS.windows) {
5+
nodejsExt = 'zip'
6+
if (System.getProperty('os.arch').contains('64')) {
7+
nodejsArch = 'win-x64'
8+
} else {
9+
nodejsArch = 'win-x86'
10+
}
11+
} else if (OS.linux) {
12+
nodejsExt = 'tar.xz'
13+
if (System.getProperty('os.arch').contains('64')) {
14+
nodejsArch = 'linux-x64'
15+
} else {
16+
nodejsArch = 'linux-x86'
17+
}
18+
} else if (OS.macOsX) {
19+
nodejsExt = 'tar.gz'
20+
nodejsArch = 'darwin-x64'
21+
}
22+
}
23+
24+
ivypot {
25+
cacheBinaries.add "nodejs:node:${agProject.versionOf('nodejs')}:${nodejsArch}@${nodejsExt}"
26+
cacheBinaries.add "nodejs:node:${agProject.versionOf('nodejsWindows')}:${nodejsArch}@${nodejsExt}"
27+
}

gradle/libs.versions.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,10 @@ groovyForGradle9Testing = "4.0.4"
3737
jruby = "9.4.8.0"
3838
jsoup = "1.17.2"
3939
nodejs = "22.19.0"
40+
nodejsWindows = "20.19.5"
4041
pluginGradleTest = "4.1.0"
4142
pluginJRubySimple = "2.0.0"
42-
pluginNodejs = "4.1.0"
43+
pluginNodejs = "4.2.1"
4344
pluginPublishPlugin = "1.2.1"
4445
pluginIvypot = "2.0.3"
4546
pluginJavaScript = "4.2.0"

model5/js-core/build.gradle

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ plugins {
22
id 'org.asciidoctor.internal.model5.gradle.project'
33
}
44

5+
apply from: "${rootDir}/gradle/cache-node.gradle"
6+
57
// tag::hacking-asciidoctorjs-output-formatter[]
68
agProject {
79
// end::hacking-asciidoctorjs-output-formatter[]
@@ -53,18 +55,19 @@ agProject {
5355
// tag::hacking-asciidoctorjs-output-formatter[]
5456
withVersionSubstitution("${project.name}.properties", [
5557
// end::hacking-asciidoctorjs-output-formatter[]
56-
VERSION : versionOf('asciidoctorjs'),
57-
CLI : versionOf('asciidoctorjsCli'),
58-
DOCBOOK : versionOf('asciidoctorjsDocbook'),
59-
EJS : versionOf('asciidoctorjsEjs'),
60-
HANDLEBARS: versionOf('asciidoctorjsHandlebars'),
61-
KROKI : versionOf('asciidoctorjsKroki'),
62-
MANPAGE : versionOf('asciidoctorjsManpage'),
63-
NODE : versionOf('nodejs'),
64-
NUNJUCKS : versionOf('asciidoctorjsNunjucks'),
65-
PUG : versionOf('asciidoctorjsPug'),
58+
VERSION : versionOf('asciidoctorjs'),
59+
CLI : versionOf('asciidoctorjsCli'),
60+
DOCBOOK : versionOf('asciidoctorjsDocbook'),
61+
EJS : versionOf('asciidoctorjsEjs'),
62+
HANDLEBARS : versionOf('asciidoctorjsHandlebars'),
63+
KROKI : versionOf('asciidoctorjsKroki'),
64+
MANPAGE : versionOf('asciidoctorjsManpage'),
65+
NODE : versionOf('nodejs'),
66+
NODE_WINDOWS: versionOf('nodejsWindows'),
67+
NUNJUCKS : versionOf('asciidoctorjsNunjucks'),
68+
PUG : versionOf('asciidoctorjsPug'),
6669
// tag::hacking-asciidoctorjs-output-formatter[]
67-
REVEALJS : versionOf('asciidoctorjsRevealjs'), // <.>
70+
REVEALJS : versionOf('asciidoctorjsRevealjs'), // <.>
6871
// end::hacking-asciidoctorjs-output-formatter[]
6972
// tag::hacking-asciidoctorjs-output-formatter[]
7073
])

model5/js-core/src/integrationTest/groovy/org/asciidoctor/gradle/model5/js/UpToDateSpec.groovy

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,6 @@ import static org.gradle.testkit.runner.TaskOutcome.UP_TO_DATE
2626

2727
class UpToDateSpec extends AsciidoctorjsHtmlIntegrationSpecification {
2828

29-
void setup() {
30-
// writeHtmlBasedBuildFile()
31-
}
32-
33-
@PendingFeatureIf(value = { IS_WINDOWS }, reason = 'Windows has a node exec issue')
3429
void 'Changes to NPM package list will cause rebuild'() {
3530
setup:
3631
writeHtmlBasedBuildFileWithImports([

model5/js-core/src/integrationTest/groovy/org/asciidoctor/gradle/model5/js/formatters/AsciidoctorjsRevealjsSpec.groovy

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ import static org.gradle.testkit.runner.TaskOutcome.SUCCESS
2626

2727
class AsciidoctorjsRevealjsSpec extends IntegrationSpecification {
2828

29-
@PendingFeatureIf(reason = 'Not yet supported on Windows', value = { IS_WINDOWS })
3029
void 'Reveal.js formatter will convert files and copy resources'() {
3130
setup:
3231
final taskName = 'asciidoctorRevealjs' // <.>

model5/js-core/src/main/groovy/org/asciidoctor/gradle/model5/js/engines/AsciidoctorjsNodeEngine.groovy

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import org.ysb33r.gradle.nodejs.NpmPackageDescriptor
3535
import org.ysb33r.gradle.nodejs.tasks.NodeNpmPrepareTask
3636
import org.ysb33r.gradle.nodejs.utils.npm.NpmExecutor
3737
import org.ysb33r.grolifant5.api.core.ConfigCacheSafeOperations
38+
import org.ysb33r.grolifant5.api.core.OperatingSystem
3839

3940
import javax.inject.Inject
4041

@@ -82,7 +83,8 @@ class AsciidoctorjsNodeEngine implements AsciidoctorEngine, CoreVersions {
8283
.convention(props['asciidoctorjs'].toString())
8384
this.asciidoctorjsCliVersion = tempProjectReference.objects.property(String)
8485
.convention(props['asciidoctorjs.cli'].toString())
85-
this.nodejs.executableByVersion(props['node'])
86+
final isWindows = OperatingSystem.current().windows
87+
this.nodejs.executableByVersion(props[isWindows ? 'node.windows' : 'node'])
8688
usePackage(ASCIIDOCTOR_SCOPE, 'core', this.asciidoctorjsVersion)
8789
usePackage(ASCIIDOCTOR_SCOPE, 'cli', this.asciidoctorjsCliVersion)
8890

model5/js-core/src/main/resources/META-INF/asciidoctor.gradle/asciidoctor5-js-core-plugin.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,4 @@ asciidoctorjs.pug=@@PUG@@
1111
asciidoctorjs.revealjs=@@REVEALJS@@
1212
# end::hacking-asciidoctorjs-output-formatter[]
1313
node=@@NODE@@
14+
node.windows=@@NODE_WINDOWS@@

model5/jvm-core/src/integrationTest/groovy/org/asciidoctor/gradle/model5/jvm/ExternalSourcesSpec.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ class ExternalSourcesSpec extends AsciidoctorjHtmlIntegrationSpecification {
3535
final subdir = 'someSubdir'
3636
configureSourceSetGroovy(DEFAULT_PUBLICATION, """
3737
externalSource {
38-
sourceDir = '${getEscapedPathString(otherSourceDir.absolutePath)}'
38+
sourceDir = '${getEscapedAbsolutePathString(otherSourceDir)}'
3939
sources {
4040
include 'simple.adoc'
4141
}

0 commit comments

Comments
 (0)