forked from ramp4-pcar4/ramp4-pcar4
-
Notifications
You must be signed in to change notification settings - Fork 0
143 lines (113 loc) · 5.15 KB
/
demo-build.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
# Workflow for building and deploying a demo site to GitHub Pages
name: Deploy static demo files to Pages
on: push
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: write
pages: write
id-token: write
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these deployments to complete.
concurrency:
group: 'pages'
cancel-in-progress: false
jobs:
build:
name: Build the project
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '22.5.1'
cache: 'npm'
- name: Set up Git
run: |
git config --global user.name "GitHub Action"
git config --global user.email "[email protected]"
- name: Build or delete the demo
run: |
BRANCH_OR_TAG_NAME=${GITHUB_REF#refs/heads/}
BRANCH_OR_TAG_NAME=${BRANCH_OR_TAG_NAME#refs/tags/}
git fetch --all
# Check if demo-page branch exists and create it if necessary
if git ls-remote --heads origin demo-page | grep -q "refs/heads/demo-page"; then
echo "demo-page exists."
git checkout demo-page
else
echo "demo-page does not exist. Creating an orphan branch."
git checkout --orphan demo-page
git rm -rf . || true
rm -r * || true
git commit --allow-empty -m "Initial commit on orphan demo-page"
fi
# Checkout to current branch or tag and create a temporary branch
git checkout $BRANCH_OR_TAG_NAME
git checkout -b temp-$BRANCH_OR_TAG_NAME
git --work-tree=demo-folder checkout demo-page -- . || true
# Modify and commit changes
npm ci
npm run build
- name: Publish to NPM
if: github.repository == 'ramp4-pcar4/ramp4-pcar4' && startsWith(github.ref, 'refs/tags/v')
run: |
TAG_VERSION=${GITHUB_REF#refs/tags/v}
PACKAGE_VERSION=$(node -p "require('./package.json').version")
if [ "$TAG_VERSION" != "$PACKAGE_VERSION" ]; then
npm version --allow-same-version --no-git-tag-version $TAG_VERSION
fi
npm publish
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Update docsite version references
uses: jacobtomlinson/gha-find-replace@v3
with:
find: '{{ramp-version}}'
replace: ${{ github.ref_name }}
include: 'docs/**'
regex: false
- name: Build or delete the demo
run: |
BRANCH_OR_TAG_NAME=${GITHUB_REF#refs/heads/}
BRANCH_OR_TAG_NAME=${BRANCH_OR_TAG_NAME#refs/tags/}
# Remove the existing demo if it exists
rm -rf demo-folder/$BRANCH_OR_TAG_NAME
# Create a subfolder and checkout demo-page's content
mkdir -p demo-folder/$BRANCH_OR_TAG_NAME/docs
npm run ts-docs:generate
npm run vite-docs:generate
# Move the built files and docs into the demo-folder
mv dist demo-folder/$BRANCH_OR_TAG_NAME
mv vite-docs demo-folder/$BRANCH_OR_TAG_NAME/docs
mv ts-docs demo-folder/$BRANCH_OR_TAG_NAME/docs/api-tech-docs
find .
rm -rf node_modules
git add demo-folder
git commit -m "Modified contents of demo-page within demo-folder"
# Apply the changes to demo-page
git checkout demo-page
git checkout temp-$BRANCH_OR_TAG_NAME -- demo-folder
find .
mv demo-folder/* .
rm -rf demo-folder
- name: Consolidate docsite files
run: |
git add .
git commit -m "Applied changes from demo-folder to demo-page"
# Squash the commit history into a single commit
git reset --soft $(git rev-list --max-parents=0 HEAD)
git commit -m "Applied changes from demo-folder to demo-page"
git push -f origin demo-page
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: '.'
retention-days: 1
- name: Setup Pages
uses: actions/configure-pages@v5
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4