Repository navigation
173 lines (134 loc) · 5.86 KB
/
Copy pathsync-openapi-docs.yml
File metadata and controls
173 lines (134 loc) · 5.86 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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
name: Generate and Sync OpenAPI
on:
push:
branches:
- canary
- main
paths:
- 'apps/dokploy/server/api/routers/**'
- 'packages/server/src/services/**'
- 'packages/server/src/db/schema/**'
workflow_dispatch:
permissions:
contents: read
jobs:
generate-and-commit:
name: Generate OpenAPI and commit to Dokploy repo
runs-on: ubuntu-latest
steps:
- name: Checkout Dokploy repository
uses: actions/checkout@v7
with:
persist-credentials: false
- uses: oven-sh/setup-bun@v2
with:
bun-version-file: package.json
- uses: actions/setup-node@v7
with:
node-version-file: .nvmrc
- name: Install dependencies
run: bun install --frozen-lockfile
- name: Generate OpenAPI specification
run: |
bun run generate:openapi
# Verifica que se generó correctamente
if [ ! -f openapi.json ]; then
echo "❌ openapi.json not found"
exit 1
fi
echo "✅ OpenAPI specification generated successfully"
- name: Sync to website repository
env:
GH_TOKEN: ${{ secrets.DOCS_SYNC_TOKEN }}
run: |
git clone https://x-access-token:${{ secrets.DOCS_SYNC_TOKEN }}@github.com/Dokploy/website.git website-repo
cd website-repo
mkdir -p apps/docs/public
cp -f ../openapi.json apps/docs/public/openapi.json
if git diff --quiet -- apps/docs/public/openapi.json; then
echo "OpenAPI specification unchanged, skipping"
exit 0
fi
git config user.name "Dokploy Bot"
git config user.email "bot@dokploy.com"
# main is protected (PR + review + lint-and-typecheck), so sync through a reusable PR branch.
# No [skip ci]: the required check has to run on the PR.
BRANCH=chore/sync-openapi
git checkout -b "$BRANCH"
git add apps/docs/public/openapi.json
git commit -m "chore: sync OpenAPI specification" \
-m "Source: ${{ github.repository }}@${{ github.sha }}" \
-m "Updated: $(date -u +'%Y-%m-%d %H:%M:%S UTC')"
git push --force origin "$BRANCH"
if [ -z "$(gh pr list --repo Dokploy/website --head "$BRANCH" --state open --json number --jq '.[].number')" ]; then
gh pr create --repo Dokploy/website --base main --head "$BRANCH" \
--title "chore: sync OpenAPI specification" \
--body "Automated OpenAPI sync from ${{ github.repository }}@${{ github.sha }}."
fi
echo "✅ OpenAPI sync PR updated on website"
- name: Sync to MCP repository
env:
GH_TOKEN: ${{ secrets.DOCS_SYNC_TOKEN }}
run: |
git clone https://x-access-token:${{ secrets.DOCS_SYNC_TOKEN }}@github.com/Dokploy/mcp.git mcp-repo
cd mcp-repo
cp -f ../openapi.json openapi.json
if git diff --quiet -- openapi.json; then
echo "OpenAPI specification unchanged, skipping"
exit 0
fi
git config user.name "Dokploy Bot"
git config user.email "bot@dokploy.com"
BRANCH=chore/sync-openapi
git checkout -b "$BRANCH"
git add openapi.json
git commit -m "chore: sync OpenAPI specification" \
-m "Source: ${{ github.repository }}@${{ github.sha }}" \
-m "Updated: $(date -u +'%Y-%m-%d %H:%M:%S UTC')"
git push --force origin "$BRANCH"
if [ -z "$(gh pr list --repo Dokploy/mcp --head "$BRANCH" --state open --json number --jq '.[].number')" ]; then
gh pr create --repo Dokploy/mcp --base main --head "$BRANCH" \
--title "chore: sync OpenAPI specification" \
--body "Automated OpenAPI sync from ${{ github.repository }}@${{ github.sha }}."
fi
echo "✅ OpenAPI sync PR updated on mcp"
- name: Sync to CLI repository
env:
GH_TOKEN: ${{ secrets.DOCS_SYNC_TOKEN }}
run: |
git clone https://x-access-token:${{ secrets.DOCS_SYNC_TOKEN }}@github.com/Dokploy/cli.git cli-repo
cd cli-repo
cp -f ../openapi.json openapi.json
if git diff --quiet -- openapi.json; then
echo "OpenAPI specification unchanged, skipping"
exit 0
fi
git config user.name "Dokploy Bot"
git config user.email "bot@dokploy.com"
BRANCH=chore/sync-openapi
git checkout -b "$BRANCH"
git add openapi.json
git commit -m "chore: sync OpenAPI specification" \
-m "Source: ${{ github.repository }}@${{ github.sha }}" \
-m "Updated: $(date -u +'%Y-%m-%d %H:%M:%S UTC')"
git push --force origin "$BRANCH"
if [ -z "$(gh pr list --repo Dokploy/cli --head "$BRANCH" --state open --json number --jq '.[].number')" ]; then
gh pr create --repo Dokploy/cli --base main --head "$BRANCH" \
--title "chore: sync OpenAPI specification" \
--body "Automated OpenAPI sync from ${{ github.repository }}@${{ github.sha }}."
fi
echo "✅ OpenAPI sync PR updated on cli"
- name: Sync to SDK repository
run: |
git clone https://x-access-token:${{ secrets.DOCS_SYNC_TOKEN }}@github.com/dokploy/sdk.git sdk-repo
cd sdk-repo
cp -f ../openapi.json openapi.json
git config user.name "Dokploy Bot"
git config user.email "bot@dokploy.com"
git add openapi.json
git commit -m "chore: sync OpenAPI specification [skip ci]" \
-m "Source: ${{ github.repository }}@${{ github.sha }}" \
-m "Updated: $(date -u +'%Y-%m-%d %H:%M:%S UTC')" \
--allow-empty
git push
echo "✅ OpenAPI synced to SDK repository successfully"