forked from eclipse-tractusx/tractusx-edc
-
Notifications
You must be signed in to change notification settings - Fork 3
134 lines (119 loc) · 4.33 KB
/
publish-openapi-ui.yml
File metadata and controls
134 lines (119 loc) · 4.33 KB
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
#################################################################################
# Copyright (c) 2024 Contributors to the Eclipse Foundation
#
# See the NOTICE file(s) distributed with this work for additional
# information regarding copyright ownership.
#
# This program and the accompanying materials are made available under the
# terms of the Apache License, Version 2.0 which is available at
# https://www.apache.org/licenses/LICENSE-2.0.
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
# SPDX-License-Identifier: Apache-2.0
#################################################################################
---
name: publish openapi ui
on:
workflow_dispatch:
inputs:
version:
required: false
description: "Version of the Tractus-X EDC API to be should be published"
type: string
latest:
description: "Latest release"
required: true
type: boolean
default: false
workflow_call:
inputs:
version:
required: false
description: "Version of the Tractus-X EDC API to be should be published"
type: string
latest:
description: "Latest release"
required: true
type: boolean
default: false
jobs:
generate-openapi-spec:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: ./.github/actions/setup-java
- name: Generate openapi spec
run: ./gradlew resolve
- uses: actions/upload-artifact@v7
with:
name: openapi-spec
path: resources/openapi/yaml
generate-swagger-ui:
needs: generate-openapi-spec
runs-on: ubuntu-latest
strategy:
matrix:
apiGroup: [
{ name: "control-plane", folder: "edc-controlplane/edc-controlplane-base" },
{ name: "data-plane", folder: "edc-dataplane/edc-dataplane-base" }
]
steps:
- uses: actions/checkout@v6
- uses: eclipse-edc/.github/.github/actions/setup-build@main
- uses: actions/download-artifact@v8
with:
name: openapi-spec
path: resources/openapi/yaml
- name: Set version
run: |
if [ -z ${{ inputs.version }} ]; then
export VERSION=$(grep "version" gradle.properties | awk -F= '{print $2}')
else
export VERSION=${{ inputs.version }}
fi
echo "VERSION=$VERSION" >> "$GITHUB_ENV"
- name: Download upstream API specs for ${{ matrix.apiGroup.name }}
run: |
./gradlew -p ${{ matrix.apiGroup.folder }} downloadOpenapi
cp ${{ matrix.apiGroup.folder }}/build/docs/openapi/* resources/openapi/yaml/${{ matrix.apiGroup.name }}
- name: Merge API specs
run: |
./gradlew mergeOpenApiSpec --inputDir=${PWD}/resources/openapi/yaml/${{ matrix.apiGroup.name }} --output=${{ matrix.apiGroup.name }}.yaml --infoTitle="Tractus-X EDC ${{ matrix.apiGroup.name }} API" --infoDescription="Tractus-X EDC ${{ matrix.apiGroup.name }} API Documentation" --infoVersion=${{ env.VERSION }}
- name: Generate Swagger UI current version
uses: Legion2/swagger-ui-action@v1
with:
output: dist/${{ env.VERSION }}
spec-file: ${{ matrix.apiGroup.name }}.yaml
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Generate Swagger UI stable version
uses: Legion2/swagger-ui-action@v1
if: ${{ inputs.latest }}
with:
output: dist
spec-file: ${{ matrix.apiGroup.name }}.yaml
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- uses: actions/upload-artifact@v7
with:
name: ${{ matrix.apiGroup.name }}-api
path: dist
deploy-swagger-ui:
needs: generate-swagger-ui
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/download-artifact@v8
with:
path: openapi
pattern: "*-api"
- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: .
keep_files: true