Release #7
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: ESOUI Release | |
| on: | |
| workflow_dispatch: | |
| schedule: | |
| # every sunday at 22:15am | |
| - cron: "15 22 * * 0" | |
| jobs: | |
| test: | |
| if: github.repository_owner == 'm00nyONE' | |
| uses: ./.github/workflows/_tests.yml | |
| docs: | |
| if: github.repository_owner == 'm00nyONE' | |
| uses: ./.github/workflows/_generate-docs.yml | |
| permissions: | |
| contents: write | |
| release: | |
| if: github.repository_owner == 'm00nyONE' | |
| name: "release" | |
| runs-on: ubuntu-latest | |
| permissions: write-all | |
| needs: [ 'test' ] | |
| steps: | |
| - name: Check out repository | |
| uses: actions/checkout@v4 | |
| - name: Check for changes since last release | |
| id: check_changes | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| echo "🔍 Checking for changes since the last release..." | |
| REPO="$GITHUB_REPOSITORY" | |
| LAST_RELEASE_TAG=$(gh api repos/${GITHUB_REPOSITORY}/releases/latest --jq .tag_name || echo "") | |
| if [ -z "$LAST_RELEASE_TAG" ] || [ "$LAST_RELEASE_TAG" = "null" ]; then | |
| echo "⚠️ No previous release found, proceeding with release." | |
| echo "should_release=true" >> $GITHUB_OUTPUT | |
| exit 0 | |
| fi | |
| echo "Last release tag: $LAST_RELEASE_TAG" | |
| git fetch --quiet --tags | |
| CHANGED=$(git diff --name-only "$LAST_RELEASE_TAG" HEAD | grep -E '\.(lua|txt|md|xml|addon|dds)$' || true) | |
| if [ -z "$CHANGED" ]; then | |
| echo "✅ No relevant file changes since $LAST_RELEASE_TAG." | |
| echo "should_release=false" >> $GITHUB_OUTPUT | |
| else | |
| echo "✅ Changes detected:" | |
| echo "$CHANGED" | |
| echo "should_release=true" >> $GITHUB_OUTPUT | |
| fi | |
| - name: Get current year, month and day | |
| if: steps.check_changes.outputs.should_release == 'true' | |
| run: | | |
| echo "BUILD_DATE_YEAR=$(date -u +'%Y')" >> $GITHUB_ENV | |
| echo "BUILD_DATE_MONTH=$(date -u +'%m')" >> $GITHUB_ENV | |
| echo "BUILD_DATE_DAY=$(date -u +'%d')" >> $GITHUB_ENV | |
| echo "BUILD_DATE_NUMBER=$(date +'%Y%m%d')" >> $GITHUB_ENV | |
| echo "BUILD_DATE_WITH_DOT=$(date +'%Y.%m.%d')" >> $GITHUB_ENV | |
| echo "BUILD_DATE_WITH_HYPHEN=$(date +'%Y-%m-%d')" >> $GITHUB_ENV | |
| - name: Create env variables | |
| if: steps.check_changes.outputs.should_release == 'true' | |
| run: | | |
| addon_name="LibCustomNames" | |
| version="${{ env.BUILD_DATE_WITH_HYPHEN }}" | |
| echo "ADDON_NAME=$addon_name" >> $GITHUB_ENV | |
| echo "ADDON_VERSION=$version" >> $GITHUB_ENV | |
| echo "ZIP_FULL_NAME=${addon_name}-${version}.zip" >> $GITHUB_ENV | |
| - name: Replace placeholders with current date | |
| if: steps.check_changes.outputs.should_release == 'true' | |
| run: | | |
| 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 | |
| sed -i "s/## AddOnVersion: 99999999/## AddOnVersion: ${{ env.BUILD_DATE_NUMBER }}/g" ${{ env.ADDON_NAME }}.addon | |
| - name: Create ZIP archive | |
| if: steps.check_changes.outputs.should_release == 'true' | |
| run: | | |
| REPO_FOLDER=$(pwd) | |
| TMP_FOLDER="/tmp/${{ env.ADDON_NAME }}" | |
| # Define the path to the ignore pattern file | |
| ignore_file=".build-ignore" | |
| # Read and process ignore patterns into a single line | |
| exclude_patterns=$(cat "$ignore_file" | awk '{print "--exclude " $0}' | tr '\n' ' ') | |
| # Make folder and copy content | |
| mkdir -p $TMP_FOLDER | |
| rsync -a --quiet $exclude_patterns "$REPO_FOLDER/" "$TMP_FOLDER/" | |
| # create zip | |
| (cd /tmp && zip -r --quiet "$REPO_FOLDER/${{ env.ZIP_FULL_NAME }}" "${{ env.ADDON_NAME }}") | |
| - name: Extract latest changelog entry | |
| if: steps.check_changes.outputs.should_release == 'true' | |
| 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: steps.check_changes.outputs.should_release == 'true' | |
| uses: ncipollo/release-action@v1 | |
| with: | |
| name: "${{ env.ADDON_VERSION }}" | |
| commit: ${{ github.ref }} | |
| tag: "${{ env.ADDON_VERSION }}" | |
| artifacts: "${{ env.ZIP_FULL_NAME }}" | |
| artifactContentType: application/zip | |
| bodyFile: latest_changes.md | |
| allowUpdates: true | |
| makeLatest: true | |
| - name: Test Upload to ESOUI | |
| uses: m00nyONE/esoui-upload@v2 | |
| if: steps.check_changes.outputs.should_release == 'true' | |
| with: | |
| api_key: ${{ secrets.ESOUI_API_KEY }} | |
| addon_id: '4155' | |
| version: ${{ env.ADDON_VERSION }} | |
| zip_file: ${{ env.ZIP_FULL_NAME }} | |
| changelog_file: 'CHANGELOG.md' | |
| test: true | |
| - name: Upload to ESOUI | |
| uses: m00nyONE/esoui-upload@v2 | |
| if: steps.check_changes.outputs.should_release == 'true' | |
| with: | |
| api_key: ${{ secrets.ESOUI_API_KEY }} | |
| addon_id: '4155' | |
| version: ${{ env.ADDON_VERSION }} | |
| zip_file: ${{ env.ZIP_FULL_NAME }} | |
| changelog_file: 'CHANGELOG.md' |