Skip to content

Commit 8fcd1a9

Browse files
NataliaIvakinarenetapopovadependabot[bot]recrwplayJoelBergstrand
authored
Publish 2026.07 release (#369)
Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: Reneta Popova <reneta.popova@neo4j.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Neil Dewhurst <neil.dewhurst@neo4j.com> Co-authored-by: JoelBergstrand <joel.bergstrand@hotmail.com> Co-authored-by: Richard Sill <156673635+rsill-neo4j@users.noreply.github.com> Co-authored-by: Louise Berglund <louise.berglund@neo4j.com> Co-authored-by: Hannes Voigt <30618026+hvub@users.noreply.github.com>
1 parent 2ad802b commit 8fcd1a9

3 files changed

Lines changed: 51 additions & 9 deletions

File tree

.github/workflows/docs-deploy-surge.yml

Lines changed: 43 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ on:
2222
- completed
2323

2424
jobs:
25-
# [Optional] Restrict automatic dpeloyment to PRs from the upstream repo
25+
# [Optional] Restrict automatic deployment to PRs from the upstream repo
2626
# For fork PRs, requires manual approval via the "preview" environment.
2727
# For PRs from the main repository this job is skipped and deploy-docs runs immediately.
2828
# Setup: create a "preview" environment in Settings → Environments with required reviewers.
@@ -56,7 +56,7 @@ jobs:
5656
var artifacts = await github.rest.actions.listWorkflowRunArtifacts({
5757
owner: context.repo.owner,
5858
repo: context.repo.repo,
59-
run_id: ${{ env.RUN_ID }},
59+
run_id: process.env.RUN_ID,
6060
});
6161
6262
var matchArtifactDocs = artifacts.data.artifacts.filter((artifact) => {
@@ -86,13 +86,32 @@ jobs:
8686
8787
- id: suspicious-path-check
8888
name: Suspicious paths check
89+
shell: bash
8990
env:
9091
ARTIFACT_DIR: ${{ runner.temp }}/artifacts/docs
9192
run: |
93+
set -euo pipefail
9294
cd "$ARTIFACT_DIR"
93-
if unzip -l docs.zip | grep -q "\.\./"; then
95+
96+
mapfile -t ZIP_ENTRIES < <(zipinfo -1 docs.zip)
97+
if [ "${#ZIP_ENTRIES[@]}" -eq 0 ]; then
98+
echo "docs.zip is empty"
9499
exit 1
95100
fi
101+
for entry in "${ZIP_ENTRIES[@]}"; do
102+
if [[ "$entry" =~ ^/ ]]; then
103+
echo "Blocked absolute path in artifact: $entry"
104+
exit 1
105+
fi
106+
if [[ "$entry" =~ (^|/)\.\.(/|$) ]]; then
107+
echo "Blocked path traversal in artifact: $entry"
108+
exit 1
109+
fi
110+
if [[ "$entry" == *\\* ]]; then
111+
echo "Blocked Windows-style path separator in artifact: $entry"
112+
exit 1
113+
fi
114+
done
96115
97116
- id: hidden-files-check
98117
name: Hidden files check
@@ -131,7 +150,27 @@ jobs:
131150
run: |
132151
cd "$ARTIFACT_DIR"
133152
unzip changelog.zip
134-
153+
154+
# The changelog file is built from untrusted PR content and its contents
155+
# are posted to the PR as a comment. A malicious artifact could make
156+
# `changelog` a symlink pointing at an arbitrary file the runner can read,
157+
# turning the comment step into an arbitrary-file-read. Reject anything
158+
# that isn't a plain regular file before we read it.
159+
- id: validate-changelog
160+
name: Validate changelog is a regular file
161+
if: ${{ steps.find-changelog.outputs.has-changelog == 'true' }}
162+
env:
163+
CHANGELOG_FILE: ${{ runner.temp }}/artifacts/changelog/changelog
164+
run: |
165+
if [ -L "$CHANGELOG_FILE" ]; then
166+
echo "Security Alert: changelog is a symlink — refusing!"
167+
exit 1
168+
fi
169+
if [ ! -f "$CHANGELOG_FILE" ]; then
170+
echo "changelog missing or not a regular file"
171+
exit 1
172+
fi
173+
135174
- id: get-deploy-id
136175
name: Get deploy ID
137176
env:

antora.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
name: java-reference
22
title: Java Reference
3-
version: '2026.06'
3+
version: '2026.07'
44
start_page: ROOT:index.adoc
55
nav:
66
- modules/ROOT/content-nav.adoc
77
asciidoc:
88
attributes:
9-
neo4j-version: '2026.06'
10-
neo4j-version-exact: '2026.06.0'
11-
neo4j-buildnumber: '2026.06'
12-
java-driver-version: '6.2.0'
9+
neo4j-version: '2026.07'
10+
neo4j-version-exact: '2026.07.0'
11+
neo4j-buildnumber: '2026.07'
12+
java-driver-version: '6.2.1'
1313
neo4j-documentation-branch: 'dev'
1414
page-origin-private: false
1515
neo4j-javadocs-base-uri: "{neo4j-docs-base-uri}/java-reference/{neo4j-version}/javadocs"

publish.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ asciidoc:
2929
- "@neo4j-antora/antora-listing-roles"
3030
- "@neo4j-antora/antora-table-footnotes"
3131
attributes:
32+
page-tabs: reference@
33+
page-tabs-index: 20
34+
page-tabs-group: dbms
3235
page-theme: docs
3336
page-type: Docs
3437
page-search-type: Docs

0 commit comments

Comments
 (0)