-
-
Notifications
You must be signed in to change notification settings - Fork 9
109 lines (97 loc) · 4.42 KB
/
release.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
name: Release
on:
push:
branches:
- main
- rc
jobs:
release:
name: Release
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Setup Node.js
uses: actions/setup-node@v1
with:
node-version: 20
- name: Get foundry code
env:
FOUNDRY_USERNAME: ${{ secrets.FVTT_USERNAME }}
FOUNDRY_PASSWORD: ${{ secrets.FVTT_PASSWORD }}
run: ./sync-foundry-code.sh
- name: Install dependencies
run: npm i
- name: Checks
run: npm run check
- name: Tests
run: npm run test
- name: Build
run: npm run build
- name: Release
id: semantic_release
uses: codfish/semantic-release-action@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Create module zip
if: steps.semantic_release.outputs.new-release-published == 'true'
run: cd ./dist && zip -r ../module.zip .
- name: Create Github Release
if: steps.semantic_release.outputs.new-release-published == 'true'
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ steps.semantic_release.outputs.release-version }}
release_name: ${{ steps.semantic_release.outputs.release-version }}
body: ${{ steps.semantic_release.outputs.release-notes }}
draft: false
prerelease: ${{ contains(steps.semantic_release.outputs.release-version, '-rc.') }}
- name: Upload module.json
if: steps.semantic_release.outputs.new-release-published == 'true'
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: dist/module.json
asset_name: module.json
asset_content_type: application/json
- name: Upload module.zip
if: steps.semantic_release.outputs.new-release-published == 'true'
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: module.zip
asset_name: module.zip
asset_content_type: application/zip
- name: Read module.json
id: module
if: steps.semantic_release.outputs.new-release-published == 'true' && !contains(steps.semantic_release.outputs.release-version, '-rc.')
run: |
echo 'module<<ENDOFMODULE' >> $GITHUB_OUTPUT
cat dist/module.json >> $GITHUB_OUTPUT
echo 'ENDOFMODULE' >> $GITHUB_OUTPUT
- name: Deploy on FoundryVTT
if: steps.semantic_release.outputs.new-release-published == 'true' && !contains(steps.semantic_release.outputs.release-version, '-rc.')
uses: fjogeleit/http-request-action@v1
with:
url: 'https://api.foundryvtt.com/_api/packages/release_version'
method: 'POST'
customHeaders: '{"Authorization": "${{secrets.FVTT_RELEASE_TOKEN}}"}'
preventFailureOnNoResponse: 'true'
data: |
{
"id": "${{ fromJSON(steps.module.outputs.module).id }}",
"release": {
"version": "${{ fromJSON(steps.module.outputs.module).version }}",
"manifest": "${{ fromJSON(steps.module.outputs.module).manifest }}",
"notes": "${{ fromJSON(steps.module.outputs.module).url }}/releases/tag/${{ fromJSON(steps.module.outputs.module).version }}",
"compatibility": ${{ toJSON(fromJSON(steps.module.outputs.module).compatibility) }}
}
}