Skip to content

Commit 71e6c15

Browse files
committed
Create PRs in new site repo
- use app token for authentication - spec name in head branch name to avoid collisions between specs - base branch is main - align reviewers with TSC and OpenAPI-maintainers teams - remove mentions of gh-pages in other files
1 parent 986bf13 commit 71e6c15

File tree

4 files changed

+102
-89
lines changed

4 files changed

+102
-89
lines changed

.github/pull_request_template.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@ present on the main branch, only on the development branches).
88
* 3.1.x spec and schemas: v3.1-dev branch
99
* 3.2.x spec and schemas: v3.2-dev branch
1010
* 3.3.x spec and schemas: v3.3-dev branch
11-
* registry templates: gh-pages branch, registry/...
12-
* registry contents: gh-pages branch, registries/...
1311
* process documentation and build infrastructure: main
1412
1513
Note that we do not accept changes to published specifications.

.github/workflows/respec.yaml

Lines changed: 47 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
name: respec
22

3-
# author: @MikeRalphson
3+
# author: @MikeRalphson, @ralfhandl
44
# issue: https://github.com/OAI/OpenAPI-Specification/issues/1564
55

66
#
7-
# This workflow updates the respec 'pretty' rendered versions of the spec
8-
# on the gh-pages branch when the corresponding markdown files change.
7+
# This workflow creates a pull request for publishing HTML spec versions to the spec.openapis.org site.
98
#
109

1110
# run this manually from main
@@ -19,41 +18,50 @@ jobs:
1918
runs-on: ubuntu-latest
2019

2120
steps:
22-
- uses: actions/checkout@v5 # checkout main branch
23-
with:
24-
fetch-depth: 0
25-
26-
- uses: actions/setup-node@v5 # setup Node.js
27-
with:
28-
node-version: '20.x'
29-
30-
- name: Install dependencies
31-
run: npm ci
32-
33-
- uses: actions/checkout@v5 # checkout gh-pages branch
34-
with:
35-
ref: gh-pages
36-
path: deploy
37-
38-
- name: run main script
39-
run: scripts/md2html/build.sh
40-
41-
- name: Create Pull Request
42-
uses: peter-evans/create-pull-request@v6
43-
with:
44-
token: ${{ secrets.GITHUB_TOKEN }}
45-
branch: update-respec-version
46-
base: gh-pages
47-
delete-branch: true
48-
path: deploy
49-
labels: Housekeeping
50-
reviewers: earth2marsh,lornajane,mikekistler,miqui,ralfhandl,handrews,karenetheridge
51-
title: Update ReSpec-rendered specification versions
52-
commit-message: Update ReSpec-rendered specification versions
53-
signoff: true
54-
body: |
55-
This pull request is automatically triggered by GitHub action `respec`.
56-
57-
The `versions/*.md` files have changed, so the HTML files are automatically being regenerated.
21+
- name: Generate access token
22+
id: generate-token
23+
uses: actions/create-github-app-token@v1
24+
with:
25+
app-id: ${{ secrets.OAI_SPEC_PUBLISHER_APPID }}
26+
private-key: ${{ secrets.OAI_SPEC_PUBLISHER_PRIVATE_KEY }}
27+
owner: OAI
28+
repositories: spec.openapis.org
5829

30+
- uses: actions/checkout@v5 # checkout main branch of this repo
31+
with:
32+
fetch-depth: 0
5933

34+
- uses: actions/setup-node@v5 # setup Node.js
35+
with:
36+
node-version: "22.x"
37+
38+
- name: Install dependencies
39+
run: npm ci
40+
41+
- uses: actions/checkout@v5 # checkout main branch of website repo
42+
with:
43+
token: ${{ steps.generate-token.outputs.token }}
44+
repository: OAI/spec.openapis.org
45+
ref: main
46+
path: deploy
47+
48+
- name: run main script
49+
run: scripts/md2html/build.sh
50+
51+
- name: Create Pull Request
52+
uses: peter-evans/create-pull-request@v7
53+
with:
54+
token: ${{ steps.generate-token.outputs.token }}
55+
branch: openapi-spec-versions
56+
base: main
57+
delete-branch: true
58+
path: deploy
59+
labels: OpenAPI,Specification
60+
reviewers: earth2marsh,lornajane,mikekistler,miqui,ralfhandl,whitlockjc,handrews,karenetheridge
61+
title: OpenAPI - update ReSpec-rendered specification versions
62+
commit-message: Update ReSpec-rendered specification versions
63+
signoff: true
64+
body: |
65+
This pull request is automatically generated by GitHub action `respec` in the OAI/OpenAPI-Specification repo.
66+
67+
The `versions/*.md` files of the OpenAPI Specification have changed and the corresponding HTML files are regenerated.

.github/workflows/schema-publish.yaml

Lines changed: 49 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -4,58 +4,66 @@ name: schema-publish
44
# issue: https://github.com/OAI/OpenAPI-Specification/issues/3715
55

66
#
7-
# This workflow creates a pull request for publishing schema iterations to the gh-pages branch
7+
# This workflow creates a pull request for publishing schema iterations to the spec.openapis.org site.
88
#
99

1010
# run this on push to vX.Y-dev branches or manually
1111
on:
1212
push:
1313
branches:
14-
- 'v[0-9].[0-9]-dev'
14+
- "v[0-9].[0-9]-dev"
1515
paths:
16-
- 'src/schemas/validation/*.yaml'
17-
- 'scripts/schema-publish.sh'
18-
- '.github/workflows/schema-publish.yaml'
16+
- "src/schemas/validation/*.yaml"
1917
workflow_dispatch: {}
2018

2119
jobs:
2220
publish:
23-
2421
runs-on: ubuntu-latest
2522

2623
steps:
27-
- uses: actions/checkout@v5 # checkout main branch
28-
with:
29-
fetch-depth: 0
30-
31-
- uses: actions/setup-node@v5 # setup Node.js
32-
with:
33-
node-version: '22.x'
34-
35-
- name: Install dependencies
36-
run: npm ci
37-
38-
- uses: actions/checkout@v5 # checkout gh-pages branch
39-
with:
40-
ref: gh-pages
41-
path: deploy
42-
43-
- name: run main script
44-
run: scripts/schema-publish.sh
45-
46-
- name: Create Pull Request
47-
uses: peter-evans/create-pull-request@v6
48-
with:
49-
token: ${{ secrets.GITHUB_TOKEN }}
50-
branch: ${{ github.ref_name }}-publish-schema-iteration
51-
base: gh-pages
52-
delete-branch: true
53-
path: deploy
54-
labels: Housekeeping,Schema
55-
reviewers: darrelmiller,webron,earth2marsh,lornajane,mikekistler,miqui,ralfhandl,handrews,karenetheridge
56-
title: '${{ github.ref_name }}: publish OpenAPI schema iterations'
57-
commit-message: New OpenAPI schema iterations
58-
signoff: true
59-
body: |
60-
This pull request is automatically generated by GitHub action `schema-publish`.
61-
The `src/schemas/validation/*.yaml` files have changed and JSON files are automatically generated.
24+
- name: Generate access token
25+
id: generate-token
26+
uses: actions/create-github-app-token@v1
27+
with:
28+
app-id: ${{ secrets.OAI_SPEC_PUBLISHER_APPID }}
29+
private-key: ${{ secrets.OAI_SPEC_PUBLISHER_PRIVATE_KEY }}
30+
owner: OAI
31+
repositories: spec.openapis.org
32+
33+
- uses: actions/checkout@v5 # checkout main branch of this repo
34+
with:
35+
fetch-depth: 0
36+
37+
- uses: actions/setup-node@v5 # setup Node.js
38+
with:
39+
node-version: "22.x"
40+
41+
- name: Install dependencies
42+
run: npm ci
43+
44+
- uses: actions/checkout@v5 # checkout main branch of website repo
45+
with:
46+
token: ${{ steps.generate-token.outputs.token }}
47+
repository: OAI/spec.openapis.org
48+
ref: main
49+
path: deploy
50+
51+
- name: run main script
52+
run: scripts/schema-publish.sh
53+
54+
- name: Create Pull Request
55+
uses: peter-evans/create-pull-request@v7
56+
with:
57+
token: ${{ steps.generate-token.outputs.token }}
58+
branch: openapi-${{ github.ref_name }}-schema-iterations
59+
base: main
60+
delete-branch: true
61+
path: deploy
62+
labels: OpenAPI,Schema
63+
reviewers: earth2marsh,lornajane,mikekistler,miqui,ralfhandl,whitlockjc,handrews,karenetheridge
64+
title: "OpenAPI - publish ${{ github.ref_name }} schema iterations"
65+
commit-message: "New OpenAPI schema iterations published from ${{ github.ref_name }}"
66+
signoff: true
67+
body: |
68+
This pull request is automatically generated by GitHub action `schema-publish` in the OAI/OpenAPI-Specification repo.
69+
The `src/schemas/validation/*.yaml` files have changed and JSON files are automatically generated.

scripts/schema-publish.sh

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,19 +37,18 @@ publish_schema() {
3737
# replace the WORK-IN-PROGRESS placeholders
3838
sed ${sedCmd[@]} $schemaDir/$schema | npx yaml --json --indent 2 --single > $target
3939

40-
# Find the jekyll lander markdown file for this version.
40+
# find the jekyll lander markdown file
4141
local jekyllLander=$(find "$deploydir/$base" -maxdepth 1 -name "*.md")
4242

43-
# Move the jekyll lander markdown for this iteration to the deploy destination.
44-
# The lander files only exist in the gh-pages branch.
43+
# rename or create the jekyll lander markdown file for this iteration
4544
if [ ! -z "$jekyllLander" ]; then
4645
mv $jekyllLander $target.md
4746
echo " * $newestCommitDate: $schema & jekyll lander $(basename $jekyllLander)"
4847
else
49-
# Find the most recent preceding version.
48+
# find the most recent preceding version
5049
local lastdir=""; for fn in $(dirname $deploydir)/?.?; do test "$fn" "<" "$deploydir" && lastdir="$fn"; done
5150
local lastVersion=$(basename $lastdir)
52-
# Find the jekyll lander markdown file for the preceding version.
51+
# find the jekyll lander markdown file for the preceding version
5352
local lastLander=$(find "$lastdir/$base" -maxdepth 1 -name "*.md")
5453

5554
if [ ! -z "$lastLander" ]; then
@@ -68,7 +67,7 @@ echo === Building schemas into $deploydir
6867
# list of schemas to process, dependent schemas come first
6968
schemas=(meta.yaml dialect.yaml schema.yaml schema-base.yaml)
7069

71-
# publish each schema using its or any of its dependencies newest commit date.
70+
# publish each schema using its or any of its dependencies newest commit date
7271
maxDate=""
7372
sedCmds=()
7473
for schema in "${schemas[@]}"; do
@@ -81,7 +80,7 @@ for schema in "${schemas[@]}"; do
8180
fi
8281

8382
base=$(basename $schema '.yaml')
84-
# Add the replacement for this schema's placeholder to list of sed commands.
83+
# add the replacement for this schema's placeholder to list of sed commands
8584
sedCmds+=("s/${base}\/WORK-IN-PROGRESS/${base}\/${maxDate}/g")
8685

8786
publish_schema "$schema" "$maxDate" $(printf '%s;' "${sedCmds[@]}")

0 commit comments

Comments
 (0)