-
Notifications
You must be signed in to change notification settings - Fork 44
157 lines (132 loc) · 5.04 KB
/
ci.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
name: CI
on:
push:
branches:
- main
- next
- v9
pull_request:
jobs:
build:
name: Test Suite
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
node-version:
# see the following:
# https://github.com/actions/setup-node?tab=readme-ov-file#supported-version-syntax
# https://github.com/nvm-sh/nvm/issues/1998#issuecomment-594958684
- lts/-1
- lts/*
- latest
steps:
- uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: npm
- name: Build and run tests
run: npm cit
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install deps
run: npm ci
- name: Build dist
run: npm run build
- name: Run tests
run: npm run lint
action:
name: GitHub Action Dry Run
runs-on: ubuntu-latest
steps:
- name: Checkout GitHub Action
uses: actions/checkout@v4
with:
path: rdme-repo
- name: Checkout external repo containing OpenAPI file
uses: actions/checkout@v4
with:
path: oas-examples-repo
repository: readmeio/oas-examples
# Since this workflow file is in the `rdme` repository itself,
# we need to test the GitHub Action using the current commit.
# This step builds the `rdme` action code so we can do that.
#
# This step is not required for syncing your docs to ReadMe!
- name: Rebuild GitHub Action for testing purposes
# We manually invoke `bin/write-gha-pjson.js` here because
# GitHub Actions does not support `pre` scripts for local actions.
run: npm ci && npm run build:gha && bin/write-gha-pjson.js
working-directory: rdme-repo
- name: Run root command
uses: ./rdme-repo/
- name: Run `openapi validate` command
uses: ./rdme-repo/
with:
rdme: openapi validate oas-examples-repo/3.1/json/petstore.json
- name: Run `openapi validate` command (legacy topic separator)
uses: ./rdme-repo/
with:
rdme: openapi:validate oas-examples-repo/3.1/json/petstore.json
- name: Run `openapi validate` with filename in quotes
uses: ./rdme-repo/
with:
rdme: openapi validate "oas-examples-repo/3.1/json/petstore.json"
- name: Run `openapi validate` on an invalid file
uses: ./rdme-repo/
id: openapi-validate-fail
continue-on-error: true
with:
rdme: openapi validate rdme-repo/__tests__/__fixtures__/invalid-oas.json
- name: Assert that previous validation step failed
if: ${{ steps.openapi-validate-fail.outcome == 'failure' }}
run: echo "The previous step failed as expected."
- name: Throw error if previous validation step did not fail
if: ${{ steps.openapi-validate-fail.outcome == 'success' }}
run: echo "::error::Expected previous step to fail" && exit 1
# The `help` command is only available in the CLI.
# This step should fail because `help` does not exist in GitHub Actions
- name: Run `help`
uses: ./rdme-repo/
id: help-fail
continue-on-error: true
with:
rdme: help
- name: Assert that previous step failed
if: ${{ steps.help-fail.outcome == 'failure' }}
run: echo "The previous step failed as expected."
- name: Throw error if previous step did not fail
if: ${{ steps.help-fail.outcome == 'success' }}
run: echo "::error::Expected previous step to fail" && exit 1
# this is a test to ensure that the rdme github action can run properly
# the way that our users invoke it
- name: E2E run of `openapi validate` on `next` branch
uses: readmeio/rdme@next
if: ${{ github.ref }} == 'refs/heads/next'
with:
rdme: openapi validate oas-examples-repo/3.1/json/petstore.json
# Docs: https://rdme-refactored-test.readme.io
- name: Run `openapi` command
uses: ./rdme-repo/
with:
rdme: openapi upload oas-examples-repo/3.1/json/petstore.json --key=${{ secrets.RDME_REFACTORED_TEST_PROJECT_API_KEY }}
- name: Run `openapi` command with env var
uses: ./rdme-repo/
with:
rdme: openapi upload oas-examples-repo/3.1/json/petstore.json
env:
RDME_API_KEY: ${{ secrets.RDME_REFACTORED_TEST_PROJECT_API_KEY }}
- name: Run `openapi` command with other env var
uses: ./rdme-repo/
with:
rdme: openapi upload oas-examples-repo/3.1/json/petstore.json
env:
README_API_KEY: ${{ secrets.RDME_REFACTORED_TEST_PROJECT_API_KEY }}
- name: Run `openapi` command with weird arg syntax
uses: ./rdme-repo/
with:
rdme: openapi upload "oas-examples-repo/3.1/json/petstore.json" --key "${{ secrets.RDME_REFACTORED_TEST_PROJECT_API_KEY }}"