name: Release on: push: tags: - "v**" jobs: build: runs-on: ubuntu-latest steps: - name: Get tag name uses: olegtarasov/get-tag@v2.1 id: tagName - name: Validate semver run: | echo $GIT_TAG_NAME | grep -oP '^v(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$' - name: Checkout repository uses: actions/checkout@v2 - name: Validate Gradle wrapper uses: gradle/wrapper-validation-action@v1 - name: Setup JDK 17 uses: actions/setup-java@v1 with: java-version: 17 - name: Make Gradle wrapper executable if: ${{ runner.os != 'Windows' }} run: chmod +x ./gradlew - name: Build run: ./gradlew build env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} RELEASE: ${{ steps.tagName.outputs.tag }} - name: Build documentation run: ./gradlew javadoc env: RELEASE: ${{ steps.tagName.outputs.tag }} - name: Publish documentation uses: JamesIves/github-pages-deploy-action@4.1.5 with: branch: gh-pages folder: build/docs/javadoc - name: Publish run: ./gradlew publish env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} CREEPERHOST_MAVEN_USERNAME: ${{ secrets.CREEPERHOST_MAVEN_USERNAME }} CREEPERHOST_MAVEN_TOKEN: ${{ secrets.CREEPERHOST_MAVEN_TOKEN }} RELEASE: ${{ steps.tagName.outputs.tag }} - name: Retrieve changelog id: changelog_reader uses: mindsers/changelog-reader-action@v2 with: version: 'Unreleased' path: ./CHANGELOG.md - name: Release on GitHub uses: softprops/action-gh-release@v1 id: ghRelease with: body: ${{ steps.changelog_reader.outputs.changes }} name: ${{ steps.tagName.outputs.tag }} files: | build/libs/*.jar - name: Release on CurseForge run: ./gradlew curseforge env: RELEASE: ${{ steps.tagName.outputs.tag }} CHANGELOG: ${{ steps.changelog_reader.outputs.changes }} CURSEFORGE_TOKEN: ${{ secrets.CURSEFORGE_TOKEN }} # This is necessary because the Discord action doesn't support GH actions variable expansion? - name: Set release URL run: | echo "RELEASE_URL=${{ steps.ghRelease.outputs.url }}" >> $GITHUB_ENV - name: Notify Discord uses: Ilshidur/action-discord@0.3.2 with: args: 'Refined Storage {{ GIT_TAG_NAME }} has been released! {{ RELEASE_URL }}' env: DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} - name: Notify Twitter uses: ethomson/send-tweet-action@v1 with: status: Refined Storage ${{ env.GIT_TAG_NAME }} has been released! ${{ env.RELEASE_URL }} consumer-key: ${{ secrets.TWITTER_CONSUMER_API_KEY }} consumer-secret: ${{ secrets.TWITTER_CONSUMER_API_SECRET }} access-token: ${{ secrets.TWITTER_ACCESS_TOKEN }} access-token-secret: ${{ secrets.TWITTER_ACCESS_TOKEN_SECRET }}