name: Nightly Build and Release on: push: branches: - master workflow_dispatch: jobs: build-releases: name: 'Build and Release Nightly' runs-on: Debian-x86 permissions: contents: write steps: - name: Checkout Code uses: actions/checkout@v4 - name: Setup .NET 11.0 uses: actions/setup-dotnet@v4 with: dotnet-version: '11.0.100-preview.4.26230.115' # Authenticate with your private Gitea NuGet registry - name: Add Gitea NuGet Source run: | dotnet nuget remove source "GiteaRegistry" || true dotnet nuget add source "https://git.main.qwsdcvghyu.com/api/packages/riley/nuget/index.json" --name "GiteaRegistry" --username "riley" --password "${{ secrets.PACKAGES_KEY }}" --store-password-in-clear-text - name: 'Execute .NET Publish Target' run: dotnet build aeqw89.tools.Publish/aeqw89.tools.Publish.csproj -p:ArchiveVersion=nightly -t:Archive # NEW STEP: Nuke the old release so the next step always runs on a clean slate - name: Clean up previous Nightly Release run: | # 1. Ask the Gitea API for the internal ID of the 'nightly' release RELEASE_JSON=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" ${{ github.api_url }}/repos/${{ github.repository }}/releases/tags/nightly) RELEASE_ID=$(echo "$RELEASE_JSON" | grep -o '"id": *[0-9]*' | head -n 1 | awk '{print $2}') # 2. If it found one, tell Gitea to delete the release and all its assets if [ -n "$RELEASE_ID" ]; then echo "Deleting old release ID: $RELEASE_ID" curl -s -X DELETE -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" ${{ github.api_url }}/repos/${{ github.repository }}/releases/$RELEASE_ID fi # 3. Delete the tag from the repository itself git push --delete origin nightly || true - name: Update Nightly Release uses: softprops/action-gh-release@v2 with: tag_name: nightly name: "Nightly Development Build" body: | Automated rolling nightly build from the latest commit on `main`. **Commit:** ${{ github.sha }} prerelease: true files: | aeqw89.tools.Publish/dist/*.zip aeqw89.tools.Publish/dist/*.tar.gz env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}