-
Notifications
You must be signed in to change notification settings - Fork 6
146 lines (128 loc) · 4.29 KB
/
publish.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
144
145
146
name: Release
on:
push:
branches:
- main
jobs:
addon:
name: ${{ matrix.config.name }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
config:
- {
id: "aspect_ratio_resize_container",
name: "AspectRatioResizeContainer",
}
- {
id: "custom_theme_overrides",
name: "Custom Theme Overrides",
}
- {
id: "git_sha_project_setting",
name: "Git SHA Project Setting",
}
- {
id: "glogging",
name: "GLogging",
}
- {
id: "hide_private_properties",
name: "Hide Private Properties",
}
- {
id: "icon_explorer",
name: "Icon Explorer",
}
- {
id: "icons_patcher",
name: "Icons Patcher",
}
- {
id: "licenses",
name: "License Manager",
}
- {
id: "qr_code",
name: "QR Code",
}
- {
id: "texture_button_colored",
name: "TextureButtonColored",
}
steps:
- name: Cancel Previous Runs
uses: styfle/cancel-workflow-action@0.11.0
- name: Update environment
run: |
sudo apt update -qq
sudo apt install -y golang
- name: Checkout
uses: actions/checkout@v3
- name: Fix git ownership
run: |
# this is to fix GIT not liking owner of the checkout dir
chown -R $(id -u):$(id -g) $PWD
- name: Prepare artifacts
id: "prepare-artifacts"
working-directory: publisher
run: |
go run . zip -b ../ -a ${{ matrix.config.id }} -o ../archives/
go run . github -b ../ -a ${{ matrix.config.id }} -o $GITHUB_OUTPUT
- name: Upload Artifacts
uses: actions/upload-artifact@v3
with:
name: ${{ matrix.config.name }}
path: archives/${{ matrix.config.id }}-*.zip
- uses: mukunku/tag-exists-action@v1.2.0
id: checkTag
with:
tag: ${{ matrix.config.id }}-${{ steps.prepare-artifacts.outputs.version }}
- name: Prepare Release
if: ${{ steps.checkTag.outputs.exists == 'false' }}
run: |
git config user.name github-actions
git config user.email github-actions@github.com
git tag ${{ matrix.config.id }}-${{ steps.prepare-artifacts.outputs.version }}
git push origin tag ${{ matrix.config.id }}-${{ steps.prepare-artifacts.outputs.version }}
# wait 5s that the pushed tag is available in the next step, sometimes the next step saw only the local tag
- name: Wait 5s
run: sleep 5s
shell: bash
- name: Release addon
if: ${{ steps.checkTag.outputs.exists == 'false' }}
env:
GITHUB_TOKEN: ${{ github.token }}
run: |
gh release create ${{ matrix.config.id }}-${{ steps.prepare-artifacts.outputs.version }} ./archives/* --title "${{ matrix.config.name }} ${{ steps.prepare-artifacts.outputs.version }}" --notes "${{ steps.prepare-artifacts.outputs.notes }}"
combined-release:
name: Combined Release
runs-on: ubuntu-latest
needs:
- addon
steps:
- name: Cancel Previous Runs
uses: styfle/cancel-workflow-action@0.11.0
- name: Checkout
uses: actions/checkout@v3
- uses: actions/download-artifact@v3
with:
path: archives
- name: Prepare Release
run: |
find archives/ -type f -print0 | xargs -0 mv -t archives
git config user.name github-actions
git config user.email github-actions@github.com
git tag latest
git push -f origin tag latest
- name: Release
shell: bash
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NOTES: |
Providing the latest release of all addons at one place.
This release tag is continuously updated.
run: |
output=$(gh release delete latest -y 2>&1) || [[ "${output}" == "release not found" ]]
gh release create latest ./archives/*.zip --latest --title "Latest Release" --notes "${{ env.NOTES }}" --target ${{ github.sha }}