name: create-release.yml on: workflow_dispatch: jobs: build-and-release: name: Build and Release runs-on: ubuntu-latest env: JAVA_TOOL_OPTIONS: -Djavax.net.ssl.trustStoreType=JKS -Djavax.net.ssl.trustStore=/etc/ssl/certs/java/cacerts -Djavax.net.ssl.trustStorePassword=changeit steps: - uses: actions/checkout@v5 - name: Set up JDK 21 uses: actions/setup-java@v5 with: java-version: '21' distribution: 'zulu' - name: Set up Gradle uses: gradle/actions/setup-gradle@v4 with: gradle-version: '9.4.1' - name: Build run: gradle build --no-daemon env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Get Version Number from Gradle id: get_version run: | VERSION=$(gradle properties -q | awk -F': ' '/^version:/ {print $2; exit}') echo "VERSION=$VERSION" >> "$GITHUB_ENV" - name: Extract latest CHANGELOG entry id: changelog run: | CHANGELOG_CONTENT=$(awk 'BEGIN {print_section=0;} /^## \[/ {if (print_section == 0) {print_section=1;} else {exit;}} print_section {print;}' CHANGELOG.md) CHANGELOG_ESCAPED=$(echo "$CHANGELOG_CONTENT" | sed ':a;N;$!ba;s/\n/%0A/g') echo "Extracted latest release notes from CHANGELOG.md:" echo -e "$CHANGELOG_CONTENT" echo "content=$CHANGELOG_ESCAPED" >> "$GITHUB_OUTPUT" - name: Create Release uses: actions/create-release@v1 id: create_release env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: v${{ env.VERSION }} release_name: Release v${{ env.VERSION }} draft: false prerelease: false body: ${{ steps.changelog.outputs.content }} - uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} asset_path: ./build/libs/AntiVPN-${{ env.VERSION }}-universal.jar asset_name: AntiVPN-v${{ env.VERSION }}.jar asset_content_type: application/java-archive