diff --git a/.gitea/workflows/lightless-tag-and-release.yml b/.gitea/workflows/lightless-tag-and-release.yml index 63b4fb0..adf40b3 100644 --- a/.gitea/workflows/lightless-tag-and-release.yml +++ b/.gitea/workflows/lightless-tag-and-release.yml @@ -2,7 +2,7 @@ name: Tag and Release Lightless on: push: - branches: [ master ] + branches: [ master, dev ] env: PLUGIN_NAME: LightlessSync @@ -33,6 +33,11 @@ jobs: curl -O https://goatcorp.github.io/dalamud-distrib/stg/latest.zip unzip latest.zip -d /root/.xlcore/dalamud/Hooks/dev + - name: Checkout Dev branch (only for dev) + if: github.ref == 'refs/heads/dev' + run: | + git checkout dev + - name: Lets Build Lightless! run: | dotnet restore @@ -62,7 +67,8 @@ jobs: mkdir -p output (cd /workspace/Lightless-Sync/LightlessClient/LightlessSync/bin/x64/Release/ && zip -r $OLDPWD/output/LightlessClient.zip *) - - name: Create Git tag if not exists + - name: Create Git tag if not exists (master) + if: github.ref == 'refs/heads/master' run: | tag="${{ steps.package_version.outputs.version }}" git fetch --tags @@ -76,7 +82,23 @@ jobs: echo "Tag $tag already exists. Skipping tag creation." fi - - name: Create Release + - name: Create Git tag if not exists (dev) + if: github.ref == 'refs/heads/dev' + run: | + tag="${{ steps.package_version.outputs.version }}-Dev" + git fetch --tags + if ! git tag -l "$tag" | grep -q "$tag"; then + echo "Tag $tag does not exist. Creating and pushing..." + git config user.name "GitHub Action" + git config user.email "action@github.com" + git tag "$tag" + git push origin "$tag" + else + echo "Tag $tag already exists. Skipping tag creation." + fi + + - name: Create Release (master) + if: github.ref == 'refs/heads/master' id: create_release run: | echo "=== Searching for existing release ${{ steps.package_version.outputs.version }}===" @@ -107,6 +129,35 @@ jobs: release_id=$(echo "$response" | jq -r .id) echo "release_id=$release_id" >> "$GITHUB_OUTPUT" + - name: Create Release (dev) + if: github.ref == 'refs/heads/dev' + id: create_release + run: | + version="${{ steps.package_version.outputs.version }}-Dev" + echo "=== Searching for existing release $version===" + release_id=$(curl -s -H "Authorization: token ${{ secrets.GITEA_TOKEN }}" \ + "https://git.lightless-sync.org/api/v1/repos/${GITHUB_REPOSITORY}/releases/tags/$version" | jq -r .id) + if [ "$release_id" != "null" ]; then + echo "=== Deleting existing release $version===" + curl -X DELETE -H "Authorization: token ${{ secrets.GITEA_TOKEN }}" \ + "https://git.lightless-sync.org/api/v1/repos/${GITHUB_REPOSITORY}/releases/$release_id" + fi + echo "=== Creating new release $version===" + response=$( + curl --fail-with-body -X POST \ + -H "Content-Type: application/json" \ + -H "Authorization: token ${{ secrets.GITEA_TOKEN }}" \ + -d '{ + "tag_name": "'"$version"'", + "name": "'"$version"'", + "draft": false, + "prerelease": false + }' \ + "https://git.lightless-sync.org/api/v1/repos/${GITHUB_REPOSITORY}/releases" + ) + release_id=$(echo "$response" | jq -r .id) + echo "release_id=$release_id" >> "$GITHUB_OUTPUT" + - name: Upload Assets to release run: | curl --fail-with-body -s -X POST \ @@ -122,7 +173,8 @@ jobs: env: GIT_TERMINAL_PROMPT: 0 - - name: Update plogonmaster.json with version + - name: Update plogonmaster.json with version (master) + if: github.ref == 'refs/heads/master' env: VERSION: ${{ steps.package_version.outputs.version }} run: | @@ -159,7 +211,6 @@ jobs: .DalamudApiLevel = $dalamudApiLevel | .AssemblyVersion = $version | .DownloadLinkInstall = $downloadUrl - | .DownloadLinkTesting = $downloadUrl | .DownloadLinkUpdate = $downloadUrl else . @@ -172,6 +223,46 @@ jobs: # Output the content of the file cat "$repoJsonPath" + - name: Update plogonmaster.json with version (dev) + if: github.ref == 'refs/heads/dev' + env: + VERSION: ${{ steps.package_version.outputs.version }} + run: | + set -e + pluginJsonPath="${PLUGIN_NAME}/bin/x64/Release/${PLUGIN_NAME}.json" + repoJsonPath="LightlessSyncRepo/LightlessSync/plogonmaster.json" + assemblyVersion="${VERSION}" + version="${VERSION}-Dev" + downloadUrl="https://git.lightless-sync.org/${{ gitea.repository_owner }}/LightlessClient/releases/download/$version/LightlessClient.zip" + pluginJson=$(cat "$pluginJsonPath") + internalName=$(jq -r '.InternalName' <<< "$pluginJson") + dalamudApiLevel=$(jq -r '.DalamudApiLevel' <<< "$pluginJson") + repoJsonRaw=$(cat "$repoJsonPath") + if echo "$repoJsonRaw" | jq 'type' | grep -q '"array"'; then + repoJson="$repoJsonRaw" + else + repoJson="[$repoJsonRaw]" + fi + updatedRepoJson=$(jq \ + --arg internalName "$internalName" \ + --arg dalamudApiLevel "$dalamudApiLevel" \ + --arg version "$version" \ + --arg downloadUrl "$downloadUrl" \ + ' + map( + if .InternalName == $internalName + then + .DalamudApiLevel = $dalamudApiLevel + | .TestingAssemblyVersion = $assemblyVersion + | .DownloadLinkTesting = $downloadUrl + else + . + end + ) + ' <<< "$repoJson") + echo "$updatedRepoJson" > "$repoJsonPath" + cat "$repoJsonPath" + - name: Commit and push to LightlessSync run: | cd LightlessSyncRepo/LightlessSync