d7 #26
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Release | |
| on: | |
| push: | |
| branches: | |
| - '**' | |
| tags: | |
| - '*.*.*' | |
| pull_request: | |
| branches: | |
| - main | |
| env: | |
| ADDON_NAME: 'MemoryGarbageCollector' | |
| jobs: | |
| make-release: | |
| name: "Make release" | |
| runs-on: ubuntu-latest | |
| permissions: write-all | |
| steps: | |
| - name: Check out repository | |
| uses: actions/checkout@v4 | |
| - name: Get addon 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: Replace placeholders in addon 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 artifact | |
| uses: actions/upload-artifact@v4 | |
| if: ${{ github.ref_type != 'tag' }} | |
| with: | |
| path: ${{ env.ADDON_ZIP_NAME }} | |
| retention-days: 3 | |
| - name: Extract latest changelog entry | |
| 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 | |
| uses: ncipollo/release-action@v1 | |
| if: ${{ github.ref_type == 'tag' }} | |
| with: | |
| name: "${{ env.ADDON_VERSION }}" | |
| artifacts: "${{ env.ADDON_ZIP_NAME }}" | |
| artifactContentType: application/zip | |
| bodyFile: latest_changes.md | |
| prerelease: true | |
| makeLatest: true | |
| - name: Upload Addon to ESOUI | |
| env: | |
| addon_id: ${{ vars.ESOUI_ADDON_ID }} | |
| api_key: ${{ secrets.ESOUI_API_KEY }} | |
| version: ${{ env.ADDON_VERSION }} | |
| zip_file: ${{ env.ADDON_ZIP_NAME }} | |
| changelog_file: 'CHANGELOG.md' | |
| run: | | |
| CHANGELOG_PARAM="" | |
| # Check if changelog file exists and is not empty | |
| if [ -s "${{ env.changelog_file }}" ]; then | |
| cat ${{ env.changelog_file }} | |
| CHANGELOG_PARAM="-F \"changelog=$(cat ${{ env.changelog_file }})\"" | |
| fi | |
| curl --fail -X POST \ | |
| -H "x-api-token: ${{ env.api_key }}" \ | |
| -F "id=${{ env.addon_id }}" \ | |
| -F "version=${{ env.version }}" \ | |
| -F "updatefile=@${{ env.zip_file }}" \ | |
| $CHANGELOG_PARAM \ | |
| https://api.esoui.com/addons/updatetest |