1+ name : " Create Release"
2+
3+ on :
4+ # Allows manual triggering of the workflow to create a release.
5+ workflow_dispatch :
6+ inputs :
7+ version :
8+ description : ' Release version (e.g., v1.2.3)'
9+ required : true
10+ type : string
11+
12+ jobs :
13+ build_vite :
14+ name : Build Vite Template
15+ runs-on : ubuntu-latest
16+ steps :
17+ - name : Checkout code
18+ uses : actions/checkout@v4
19+
20+ - name : Setup Node.js
21+ uses : actions/setup-node@v4
22+ with :
23+ node-version : ' 20'
24+
25+ - name : Install dependencies
26+ run : |
27+ cd vite-iwa-template
28+ npm install
29+
30+ - name : Generate private keys and build
31+ run : |
32+ cd vite-iwa-template
33+ export KEY_PASSWORD=$(openssl rand -base64 32)
34+ openssl genpkey -algorithm Ed25519 -out private_key.pem
35+ openssl pkcs8 -in private_key.pem -topk8 -out encrypted_key.pem -passout env:KEY_PASSWORD
36+ echo "PRIVATE_KEY_PATH=encrypted_key.pem" > .env
37+ echo "PRIVATE_KEY_PASSWORD=$KEY_PASSWORD" >> .env
38+ echo "NODE_ENV='production'" >> .env
39+ rm private_key.pem
40+ npm run build
41+ rm -rf node_modules dist encrypted_key.pem .env
42+
43+ - name : Zip project folder
44+ run : (cd vite-iwa-template && zip -r ../vite-template.zip .)
45+
46+ - name : Upload Vite artifact
47+ uses : actions/upload-artifact@v4
48+ with :
49+ name : vite-template-artifact
50+ path : vite-template.zip
51+
52+ build_webpack :
53+ name : Build Webpack Template
54+ runs-on : ubuntu-latest
55+ steps :
56+ - name : Checkout code
57+ uses : actions/checkout@v4
58+
59+ - name : Setup Node.js
60+ uses : actions/setup-node@v4
61+ with :
62+ node-version : ' 20'
63+
64+ - name : Install dependencies
65+ run : |
66+ cd webpack-iwa-template
67+ npm install
68+
69+ - name : Generate private keys and build
70+ run : |
71+ cd webpack-iwa-template
72+ export KEY_PASSWORD=$(openssl rand -base64 32)
73+ openssl genpkey -algorithm Ed25519 -out private_key.pem
74+ openssl pkcs8 -in private_key.pem -topk8 -out encrypted_key.pem -passout env:KEY_PASSWORD
75+ echo "PRIVATE_KEY_PATH=encrypted_key.pem" > .env
76+ echo "PRIVATE_KEY_PASSWORD=$KEY_PASSWORD" >> .env
77+ rm private_key.pem
78+ npm run build
79+ rm -rf node_modules dist encrypted_key.pem .env
80+
81+ - name : Zip project folder content
82+ run : (cd webpack-iwa-template && zip -r ../webpack-template.zip .)
83+
84+ - name : Upload Webpack artifact
85+ uses : actions/upload-artifact@v4
86+ with :
87+ name : webpack-template-artifact
88+ path : webpack-template.zip
89+
90+ create_release :
91+ name : Create GitHub Release
92+ runs-on : ubuntu-latest
93+ needs : [build_vite, build_webpack]
94+ permissions :
95+ contents : write
96+ steps :
97+ - name : Download Vite artifact
98+ uses : actions/download-artifact@v4
99+ with :
100+ name : vite-template-artifact
101+
102+ - name : Download Webpack artifact
103+ uses : actions/download-artifact@v4
104+ with :
105+ name : webpack-template-artifact
106+
107+ - name : Create Release
108+ uses : ncipollo/release-action@v1
109+ with :
110+ tag : ${{ github.event.inputs.version }}
111+ name : Release ${{ github.event.inputs.version }}
112+ artifacts : " vite-template.zip,webpack-template.zip"
113+ token : ${{ secrets.GITHUB_TOKEN }}
0 commit comments