diff --git a/.github/workflows/build-and-release.yml b/.github/workflows/build-and-release.yml new file mode 100644 index 0000000..6989da5 --- /dev/null +++ b/.github/workflows/build-and-release.yml @@ -0,0 +1,104 @@ +name: Build and Release + +on: + push: + branches: + - master + tags: + - 'v*' + +jobs: + build: + runs-on: windows-latest + + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Setup .NET + uses: actions/setup-dotnet@v1 + with: + dotnet-version: "8.x" + + - name: Restore dependencies + run: dotnet restore NebulaAuth.sln + + - name: Build + run: dotnet build NebulaAuth.sln --configuration Release + + - name: Get version from assembly + id: get-version + run: | + VERSION=$(grep -oP '(?<=)[^<]+' NebulaAuth/NebulaAuth.csproj) + echo "VERSION=$VERSION" >> $GITHUB_ENV + + - name: Check if tag exists + id: tag_exists + run: | + if git tag -l | grep -q "^${{ env.VERSION }}$"; then + echo "Version ${{ env.VERSION }} already exists." + exit 1 + fi + + - name: Check changelog + run: | + if [ ! -f "changelog/${{ env.VERSION }}.html" ]; then + echo "Changelog file changelog/${{ env.VERSION }}.html does not exist." + exit 1 + fi + + - name: Insert date into changelog + run: | + DATE=$(date +"%d.%m.%Y") + sed -i "s|
.*
|
$DATE
|" changelog/${{ env.VERSION }}.html + + - name: Extract changelog description + id: extract_description + run: | + DESCRIPTION=$(grep -oP '(?<=
).*(?=
)' changelog/${{ env.VERSION }}.html | sed 's//\n/g') + echo "DESCRIPTION=$DESCRIPTION" >> $GITHUB_ENV + + + - name: Create ZIP + run: | + mkdir -p release + zip -r release/NebulaAuth.${{ env.VERSION }}.zip NebulaAuth/bin/Release + + - name: Create GitHub Release + id: create_release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ env.VERSION }} + release_name: NebulaAuth ${{ env.VERSION }} + body: | + ${{ env.DESCRIPTION }} + [Download NebulaAuth.${{ env.VERSION }}.zip](https://github.com/${{ github.repository }}/releases/download/${{ env.VERSION }}/NebulaAuth.${{ env.VERSION }}.zip) + draft: false + prerelease: false + + - name: Upload Release Asset + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: release/NebulaAuth.${{ env.VERSION }}.zip + asset_name: NebulaAuth.${{ env.VERSION }}.zip + asset_content_type: application/zip + + - name: Update XML and Changelog html + run: | + echo "" > update.xml + echo "" >> update.xml + echo " ${{ env.VERSION }}.0" >> update.xml + echo " https://github.com/${{ github.repository }}/releases/download/${{ env.VERSION }}/NebulaAuth.${{ env.VERSION }}.zip" >> update.xml + echo " https://achiez.github.io/NebulaAuth-Steam-Desktop-Authenticator-by-Achies/changelog/${{ env.VERSION }}.html" >> update.xml + echo " false" >> update.xml + echo "" >> update.xml + git config --global user.name 'github-actions' + git config --global user.email 'github-actions@github.com' + git add changelog/${{ env.VERSION }}.html update.xml + git commit -m "Update version to ${{ env.VERSION }} and add changelog" + git push origin master