-
Notifications
You must be signed in to change notification settings - Fork 0
102 lines (83 loc) · 3.2 KB
/
release.yml
File metadata and controls
102 lines (83 loc) · 3.2 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
name: Release
on:
push:
branches:
- '**'
tags:
- '*.*.*'
pull_request:
branches:
- main
env:
ADDON_NAME: 'MemoryGarbageCollector'
jobs:
release:
name: "Make release"
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Set version variables
run: |
version=$(echo "${{ github.ref_name }}" | sed -e 's/[^[:alnum:]._-]/-/g')
echo "ADDON_VERSION=$version" >> $GITHUB_ENV
echo "ADDON_ZIP_NAME=${{ env.ADDON_NAME }}-$version.zip" >> $GITHUB_ENV
- name: Update version in files
run: |
cd ${{ env.ADDON_NAME }}
echo "Version: ${{ env.ADDON_VERSION }}"
# Replace text version
sed -i "s/version = \"dev\"/version = \"${{ env.ADDON_VERSION }}\"/g" ${{ env.ADDON_NAME }}.lua
sed -i "s/## Version: dev/## Version: ${{ env.ADDON_VERSION }}/g" ${{ env.ADDON_NAME }}.addon
# Replace numeric version only for tag build
if [ "${{ github.ref_type }}" == "tag" ]; then
# Split major.minor.patch
IFS='.' read -r MAJOR MINOR PATCH <<< "${{ github.ref_name }}"
# Pad every part to 3 digit
MAJOR_PAD=$(printf "%03d" "$MAJOR")
MINOR_PAD=$(printf "%03d" "$MINOR")
PATCH_PAD=$(printf "%03d" "$PATCH")
VERSION_INT=$((10#$MAJOR_PAD$MINOR_PAD$PATCH_PAD))
echo "AddOnVersion: $VERSION_INT"
sed -i "s/## AddOnVersion: 99999999/## AddOnVersion: $VERSION_INT/g" ${{ env.ADDON_NAME }}.addon
fi
- name: Create ZIP archive
run: |
zip -r --quiet "$(pwd)/${{ env.ADDON_ZIP_NAME }}" "${{ env.ADDON_NAME }}"
- name: Upload build artifacts
if: ${{ github.ref_type != 'tag' }}
uses: actions/upload-artifact@v4
with:
path: ${{ env.ADDON_ZIP_NAME }}
retention-days: 3
- name: Extract latest changes for GitHub Release
if: ${{ github.ref_type == 'tag' }}
run: |
awk '/^## / { if (!found) { found=1; print; next } else { exit } } found' CHANGELOG.md > latest_changes.md
cat latest_changes.md
- name: Create GitHub Release
if: ${{ github.ref_type == 'tag' }}
uses: ncipollo/release-action@v1
with:
name: "${{ env.ADDON_VERSION }}"
artifacts: "${{ env.ADDON_ZIP_NAME }}"
artifactContentType: application/zip
bodyFile: latest_changes.md
makeLatest: true
- name: Upload to ESOUI
if: ${{ github.ref_type == 'tag' }}
env:
addon_id: ${{ vars.ESOUI_ADDON_ID }}
api_key: ${{ secrets.ESOUI_API_KEY }}
addon_version: ${{ env.ADDON_VERSION }}
addon_zip: ${{ env.ADDON_ZIP_NAME }}
run: |
curl --fail -X POST \
-H "x-api-token: $api_key" \
-F "id=$addon_id" \
-F "version=$addon_version" \
-F "updatefile=@$addon_zip" \
-F "changelog=$(cat CHANGELOG.md)" \
https://api.esoui.com/addons/update