Skip to content

Commit 172550d

Browse files
authored
Use github-scripts to assess file changes and use diff-validate on preview-builds for other repos (#1702)
* Use github-scripts to assess file changes and use diff-validate on preview-builds for other repos * Add note regarding validation in docs * Adjust diff-validate action
1 parent a2f68c6 commit 172550d

File tree

3 files changed

+84
-11
lines changed

3 files changed

+84
-11
lines changed

.github/workflows/preview-build.yml

Lines changed: 74 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -117,10 +117,10 @@ jobs:
117117
outputs:
118118
any_modified: ${{ steps.check-files.outputs.any_modified }}
119119
all_changed_files: ${{ steps.check-files.outputs.all_changed_files }}
120-
added_files: ${{ steps.check-files.outputs.added_files }}
121-
modified_files: ${{ steps.check-files.outputs.modified_files }}
122-
deleted_files: ${{ steps.check-files.outputs.deleted_files }}
123-
renamed_files: ${{ steps.check-files.outputs.renamed_files }}
120+
added_files: ${{ steps.check-modified-file-detail.outputs.added_files }}
121+
modified_files: ${{ steps.check-modified-file-detail.outputs.modified_files }}
122+
deleted_files: ${{ steps.check-modified-file-detail.outputs.deleted_files }}
123+
renamed_files: ${{ steps.check-modified-file-detail.outputs.renamed_files }}
124124
steps:
125125
- name: Checkout
126126
if: contains(fromJSON('["push", "merge_group", "workflow_dispatch"]'), github.event_name)
@@ -139,6 +139,61 @@ jobs:
139139
.github/**
140140
README.md
141141
142+
- name: Get modified file detail
143+
if: contains(fromJSON('["merge_group", "pull_request", "pull_request_target"]'), github.event_name)
144+
id: check-modified-file-detail
145+
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
146+
env:
147+
PATH_PATTERN: "${{ inputs.path-pattern != '' && inputs.path-pattern || '**' }}"
148+
IGNORE_PATTERNS: |
149+
${{ inputs.path-pattern-ignore }}
150+
.github/**
151+
README.md
152+
with:
153+
script: |
154+
const pathPattern = process.env.PATH_PATTERN;
155+
const ignorePatterns = process.env.IGNORE_PATTERNS;
156+
const ignoreGlobber = await glob.create(ignorePatterns);
157+
const ignoredPaths = new Set(await ignoreGlobber.glob());
158+
159+
const { owner, repo } = context.repo;
160+
const pull_number = context.payload.pull_request.number;
161+
162+
const allFiles = await github.paginate(github.rest.pulls.listFiles, {
163+
owner,
164+
repo,
165+
pull_number,
166+
});
167+
168+
const filteredFiles = allFiles.filter(file => !ignoredPaths.has(file.filename));
169+
170+
const added = [];
171+
const modified = [];
172+
const deleted = [];
173+
const renamed = [];
174+
175+
for (const file of filteredFiles) {
176+
switch (file.status) {
177+
case 'added':
178+
added.push(file.filename);
179+
break;
180+
case 'modified':
181+
modified.push(file.filename);
182+
break;
183+
case 'removed':
184+
deleted.push(file.filename);
185+
break;
186+
case 'renamed':
187+
renamed.push(`${file.previous_filename}:${file.filename}`);
188+
break;
189+
}
190+
}
191+
192+
core.setOutput('added_files', added.join(' '));
193+
core.setOutput('modified_files', modified.join(' '));
194+
core.setOutput('deleted_files', deleted.join(' '));
195+
core.setOutput('renamed_files', renamed.join(' '));
196+
142197
build:
143198
if: github.event.repository.fork == false # Skip running the job on the fork itself (It still runs on PRs on the upstream from forks)
144199
runs-on: ubuntu-latest
@@ -256,6 +311,21 @@ jobs:
256311
run: |
257312
dotnet run --project src/tooling/docs-builder -- diff validate
258313
314+
- name: 'Validate redirect rules'
315+
if: >
316+
env.MATCH == 'true'
317+
&& (
318+
github.repository != 'elastic/docs-builder'
319+
&& (
320+
steps.deployment.outputs.result
321+
|| (
322+
needs.check.outputs.any_modified == 'true'
323+
&& github.event_name == 'merge_group'
324+
)
325+
)
326+
)
327+
uses: elastic/docs-builder/actions/diff-validate@main
328+
259329
# we run our artifact directly, please use the prebuild
260330
# elastic/docs-builder@main GitHub Action for all other repositories!
261331
- name: Build documentation

actions/diff-validate/action.yml

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@ name: 'Validate Redirect Rules'
22
description: 'Validates consistency of the documentation changes in relation to redirect rules'
33

44
runs:
5-
using: "composite"
6-
steps:
7-
- name: Validate Redirect Rules
8-
uses: elastic/docs-builder@main
9-
with:
10-
command: "diff validate"
5+
using: 'docker'
6+
image: "docker://ghcr.io/elastic/docs-builder:edge"
7+
args:
8+
- "diff"
9+
- "validate"

docs/contribute/redirects.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,11 @@ For API redirects, consult with the documentation engineering team on Slack (#el
1616

1717
For elastic.co/guide redirects, open a [web team request](http://ela.st/web-request).
1818

19-
## File location.
19+
## Validation
20+
21+
Running `docs-builder diff validate` will give you feedback on whether all necessary redirect rules are in place after your changes. It will also run on pull requests.
22+
23+
## File location
2024

2125
Redirects are configured at the content set-level.
2226
The configuration file should be located next to your `docset.yml` file:

0 commit comments

Comments
 (0)