mirror of
				https://github.com/JetBrains/intellij-platform-plugin-template.git
				synced 2025-06-13 13:04:09 +00:00 
			
		
		
		
	GH Actions release + Changelog integration (#3)
This commit is contained in:
		
							parent
							
								
									4aa3db2ba6
								
							
						
					
					
						commit
						67df09b137
					
				
							
								
								
									
										91
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										91
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							@ -14,9 +14,22 @@ on: [push, pull_request]
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
jobs:
 | 
					jobs:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # Run Gradle Wrapper Validation Action to verify the wrapper's checksum
 | 
				
			||||||
 | 
					  gradleValidation:
 | 
				
			||||||
 | 
					    name: Gradle Wrapper
 | 
				
			||||||
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
 | 
					    steps:
 | 
				
			||||||
 | 
					      # Check out current repository
 | 
				
			||||||
 | 
					      - name: Fetch Sources
 | 
				
			||||||
 | 
					        uses: actions/checkout@v2
 | 
				
			||||||
 | 
					      # Validate wrapper
 | 
				
			||||||
 | 
					      - name: Gradle Wrapper Validation
 | 
				
			||||||
 | 
					        uses: gradle/wrapper-validation-action@v1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # Run verifyPlugin and test Gradle tasks.
 | 
					  # Run verifyPlugin and test Gradle tasks.
 | 
				
			||||||
  test:
 | 
					  test:
 | 
				
			||||||
    name: Test
 | 
					    name: Test
 | 
				
			||||||
 | 
					    needs: gradleValidation
 | 
				
			||||||
    runs-on: ubuntu-latest
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
      # Check out current repository
 | 
					      # Check out current repository
 | 
				
			||||||
@ -33,8 +46,7 @@ jobs:
 | 
				
			|||||||
        with:
 | 
					        with:
 | 
				
			||||||
          path: ~/.gradle/caches
 | 
					          path: ~/.gradle/caches
 | 
				
			||||||
          key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
 | 
					          key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
 | 
				
			||||||
          restore-keys: |
 | 
					          restore-keys: ${{ runner.os }}-gradle-
 | 
				
			||||||
            ${{ runner.os }}-gradle-
 | 
					 | 
				
			||||||
      # Run detekt
 | 
					      # Run detekt
 | 
				
			||||||
      - name: Run Linter
 | 
					      - name: Run Linter
 | 
				
			||||||
        run: ./gradlew detekt
 | 
					        run: ./gradlew detekt
 | 
				
			||||||
@ -51,6 +63,11 @@ jobs:
 | 
				
			|||||||
    name: Build
 | 
					    name: Build
 | 
				
			||||||
    needs: test
 | 
					    needs: test
 | 
				
			||||||
    runs-on: ubuntu-latest
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
 | 
					    outputs:
 | 
				
			||||||
 | 
					      name: ${{ steps.properties.outputs.name }}
 | 
				
			||||||
 | 
					      version: ${{ steps.properties.outputs.version }}
 | 
				
			||||||
 | 
					      artifact: ${{ steps.properties.outputs.name }}-${{ steps.properties.outputs.version }}.zip
 | 
				
			||||||
 | 
					      changelog: ${{ steps.properties.outputs.changelog }}
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
      # Check out current repository
 | 
					      # Check out current repository
 | 
				
			||||||
      - name: Fetch Sources
 | 
					      - name: Fetch Sources
 | 
				
			||||||
@ -66,13 +83,14 @@ jobs:
 | 
				
			|||||||
        with:
 | 
					        with:
 | 
				
			||||||
          path: ~/.gradle/caches
 | 
					          path: ~/.gradle/caches
 | 
				
			||||||
          key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
 | 
					          key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
 | 
				
			||||||
          restore-keys: |
 | 
					          restore-keys: ${{ runner.os }}-gradle-
 | 
				
			||||||
            ${{ runner.os }}-gradle-
 | 
					 | 
				
			||||||
      # Set VERSION and NAME environment variables for the steps reading properties directly from Gradle setup
 | 
					      # Set VERSION and NAME environment variables for the steps reading properties directly from Gradle setup
 | 
				
			||||||
      - name: Export Properties
 | 
					      - name: Export Properties
 | 
				
			||||||
 | 
					        id: properties
 | 
				
			||||||
        run: |
 | 
					        run: |
 | 
				
			||||||
          echo "::set-env name=VERSION::$(./gradlew properties --no-daemon --console=plain -q | grep "^version:" | awk '{printf $2}')"
 | 
					          echo "::set-output name=version::$(./gradlew properties --no-daemon --console=plain -q | grep "^version:" | awk '{printf $2}')"
 | 
				
			||||||
          echo "::set-env name=NAME::$(./gradlew properties --no-daemon --console=plain -q | grep "^name:" | awk '{printf $2}')"
 | 
					          echo "::set-output name=name::$(./gradlew properties --no-daemon --console=plain -q | grep "^name:" | awk '{printf $2}')"
 | 
				
			||||||
 | 
					          echo "::set-output name=changelog::$(./gradlew getChangelog --no-daemon --console=plain -q)"
 | 
				
			||||||
      # Build artifact using buildPlugin Gradle task
 | 
					      # Build artifact using buildPlugin Gradle task
 | 
				
			||||||
      - name: Build Plugin
 | 
					      - name: Build Plugin
 | 
				
			||||||
        run: ./gradlew buildPlugin --no-daemon
 | 
					        run: ./gradlew buildPlugin --no-daemon
 | 
				
			||||||
@ -81,7 +99,7 @@ jobs:
 | 
				
			|||||||
        uses: actions/upload-artifact@v1
 | 
					        uses: actions/upload-artifact@v1
 | 
				
			||||||
        with:
 | 
					        with:
 | 
				
			||||||
          name: plugin-artifact
 | 
					          name: plugin-artifact
 | 
				
			||||||
          path: ./build/distributions/${{ env.NAME }}-${{ env.VERSION }}.zip
 | 
					          path: ./build/distributions/${{ needs.build.outputs.artifact }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # Verify built plugin using IntelliJ Plugin Verifier tool.
 | 
					  # Verify built plugin using IntelliJ Plugin Verifier tool.
 | 
				
			||||||
  # Requires build job to be passed.
 | 
					  # Requires build job to be passed.
 | 
				
			||||||
@ -91,7 +109,7 @@ jobs:
 | 
				
			|||||||
    runs-on: ubuntu-latest
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
      # Download plugin artifact provided by the previous job
 | 
					      # Download plugin artifact provided by the previous job
 | 
				
			||||||
      - name: Download artifact
 | 
					      - name: Download Artifact
 | 
				
			||||||
        uses: actions/download-artifact@v1
 | 
					        uses: actions/download-artifact@v1
 | 
				
			||||||
        with:
 | 
					        with:
 | 
				
			||||||
          name: plugin-artifact
 | 
					          name: plugin-artifact
 | 
				
			||||||
@ -100,12 +118,63 @@ jobs:
 | 
				
			|||||||
        id: verify
 | 
					        id: verify
 | 
				
			||||||
        uses: ChrisCarini/intellij-platform-plugin-verifier-action@v0.0.2
 | 
					        uses: ChrisCarini/intellij-platform-plugin-verifier-action@v0.0.2
 | 
				
			||||||
        with:
 | 
					        with:
 | 
				
			||||||
          plugin-location: plugin-artifact.zip
 | 
					          plugin-location: plugin-artifact/${{ needs.build.outputs.artifact }}
 | 
				
			||||||
          ide-versions: |
 | 
					          ide-versions: |
 | 
				
			||||||
            ideaIC:2020.1
 | 
					            ideaIC:2020.1
 | 
				
			||||||
#            ideaIC:LATEST-EAP-SNAPSHOT
 | 
					#            ideaIC:LATEST-EAP-SNAPSHOT
 | 
				
			||||||
      # Print the output of the verify step
 | 
					      # Print the output of the verify step
 | 
				
			||||||
      - name: Print Logs
 | 
					      - name: Print Logs
 | 
				
			||||||
 | 
					        env:
 | 
				
			||||||
 | 
					          OUTPUT_LOG: ${{ steps.verify.outputs.verification-output-log-filename }}
 | 
				
			||||||
        run: |
 | 
					        run: |
 | 
				
			||||||
          echo "The verifier log file [${{steps.verify.outputs.verification-output-log-filename}}] contents : " ;
 | 
					          echo "The verifier log file [$OUTPUT_LOG] contents : " ;
 | 
				
			||||||
          cat ${{steps.verify.outputs.verification-output-log-filename}}
 | 
					          cat $OUTPUT_LOG
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # Prepare a draft release for GitHub Releases page for the manual verification.
 | 
				
			||||||
 | 
					  # If accepted and published, release workflow would be triggered.
 | 
				
			||||||
 | 
					  releaseDraft:
 | 
				
			||||||
 | 
					    name: Release Draft
 | 
				
			||||||
 | 
					#    if: github.ref == 'refs/heads/master'
 | 
				
			||||||
 | 
					    needs: [build, verify]
 | 
				
			||||||
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
 | 
					    steps:
 | 
				
			||||||
 | 
					      # Check out current repository
 | 
				
			||||||
 | 
					      - name: Fetch Sources
 | 
				
			||||||
 | 
					        uses: actions/checkout@v2
 | 
				
			||||||
 | 
					      # Remove old release drafts by using the curl request for the available releases with draft flag
 | 
				
			||||||
 | 
					      - name: Remove Old Release Drafts
 | 
				
			||||||
 | 
					        env:
 | 
				
			||||||
 | 
					          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | 
				
			||||||
 | 
					        run: |
 | 
				
			||||||
 | 
					          curl -H "Authorization: Bearer $GITHUB_TOKEN" https://api.github.com/repos/$GITHUB_REPOSITORY/releases \
 | 
				
			||||||
 | 
					            | tr '\r\n' ' ' \
 | 
				
			||||||
 | 
					            | jq '.[] | select(.draft == true) | .id' \
 | 
				
			||||||
 | 
					            | xargs -I '{}' \
 | 
				
			||||||
 | 
					          curl -X DELETE -H "Authorization: Bearer $GITHUB_TOKEN" https://api.github.com/repos/$GITHUB_REPOSITORY/releases/{}
 | 
				
			||||||
 | 
					      # Create new release draft - which is not publicly visible and requires manual acceptance
 | 
				
			||||||
 | 
					      - name: Create Release Draft
 | 
				
			||||||
 | 
					        id: createDraft
 | 
				
			||||||
 | 
					        uses: actions/create-release@v1
 | 
				
			||||||
 | 
					        env:
 | 
				
			||||||
 | 
					          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          tag_name: v${{ needs.build.outputs.version }}
 | 
				
			||||||
 | 
					          release_name: v${{ needs.build.outputs.version }}
 | 
				
			||||||
 | 
					          body: ${{ needs.build.outputs.changelog }}
 | 
				
			||||||
 | 
					          draft: true
 | 
				
			||||||
 | 
					      # Download plugin artifact provided by the previous job
 | 
				
			||||||
 | 
					      - name: Download Artifact
 | 
				
			||||||
 | 
					        uses: actions/download-artifact@v1
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          name: plugin-artifact
 | 
				
			||||||
 | 
					      # Upload artifact as a release asset
 | 
				
			||||||
 | 
					      - name: Upload Release Asset
 | 
				
			||||||
 | 
					        id: upload-release-asset
 | 
				
			||||||
 | 
					        uses: actions/upload-release-asset@v1
 | 
				
			||||||
 | 
					        env:
 | 
				
			||||||
 | 
					          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          upload_url: ${{ steps.createDraft.outputs.upload_url }}
 | 
				
			||||||
 | 
					          asset_path: ./plugin-artifact/${{ needs.build.outputs.artifact }}
 | 
				
			||||||
 | 
					          asset_name: ${{ needs.build.outputs.artifact }}
 | 
				
			||||||
 | 
					          asset_content_type: application/zip
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										15
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								CHANGELOG.md
									
									
									
									
									
								
							@ -1,2 +1,17 @@
 | 
				
			|||||||
 | 
					<!-- Keep a Changelog guide -> https://keepachangelog.com -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# IntelliJ Plugin Template Changelog
 | 
					# IntelliJ Plugin Template Changelog
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## [Unreleased]
 | 
				
			||||||
 | 
					### Added
 | 
				
			||||||
 | 
					- [Gradle Changelog Plugin](https://github.com/JetBrains/gradle-changelog-plugin) integration
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Changed
 | 
				
			||||||
 | 
					- Bump Detekt version
 | 
				
			||||||
 | 
					- Change pluginSinceBuild to 193
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## [0.0.1]
 | 
				
			||||||
 | 
					### Added
 | 
				
			||||||
 | 
					- Initial project scaffold
 | 
				
			||||||
 | 
					- GitHub Actions to automate testing and deployment
 | 
				
			||||||
 | 
					- Kotlin support
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
# IntelliJ Plugin Template
 | 
					# IntelliJ Plugin Template
 | 
				
			||||||
 | 
					
 | 
				
			||||||

 | 
					[](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub)
 | 
				
			||||||

 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
IntelliJ Plugin Template is a repository that provides a pure boilerplate for creating a plugin project with ease
 | 
					IntelliJ Plugin Template is a repository that provides a pure boilerplate for creating a plugin project with ease
 | 
				
			||||||
 | 
				
			|||||||
@ -1,3 +1,5 @@
 | 
				
			|||||||
 | 
					import io.gitlab.arturbosch.detekt.Detekt
 | 
				
			||||||
 | 
					import org.jetbrains.changelog.closure
 | 
				
			||||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
 | 
					import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
 | 
				
			||||||
 | 
					
 | 
				
			||||||
plugins {
 | 
					plugins {
 | 
				
			||||||
@ -6,9 +8,11 @@ plugins {
 | 
				
			|||||||
    // Kotlin support
 | 
					    // Kotlin support
 | 
				
			||||||
    id("org.jetbrains.kotlin.jvm") version "1.3.72"
 | 
					    id("org.jetbrains.kotlin.jvm") version "1.3.72"
 | 
				
			||||||
    // gradle-intellij-plugin - read more: https://github.com/JetBrains/gradle-intellij-plugin
 | 
					    // gradle-intellij-plugin - read more: https://github.com/JetBrains/gradle-intellij-plugin
 | 
				
			||||||
    id("org.jetbrains.intellij") version "0.4.18"
 | 
					    id("org.jetbrains.intellij") version "0.4.21"
 | 
				
			||||||
 | 
					    // gradle-changelog-plugin - read more: https://github.com/JetBrains/gradle-changelog-plugin
 | 
				
			||||||
 | 
					    id("org.jetbrains.changelog") version "0.3.0"
 | 
				
			||||||
    // detekt linter - read more: https://detekt.github.io/detekt/kotlindsl.html
 | 
					    // detekt linter - read more: https://detekt.github.io/detekt/kotlindsl.html
 | 
				
			||||||
    id("io.gitlab.arturbosch.detekt") version "1.8.0"
 | 
					    id("io.gitlab.arturbosch.detekt") version "1.10.0-RC1"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Import variables from gradle.properties file
 | 
					// Import variables from gradle.properties file
 | 
				
			||||||
@ -24,17 +28,6 @@ val sources: String by project
 | 
				
			|||||||
group = pluginGroup
 | 
					group = pluginGroup
 | 
				
			||||||
version = pluginVersion
 | 
					version = pluginVersion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Set the compatibility versions to 1.8
 | 
					 | 
				
			||||||
tasks.withType<JavaCompile> {
 | 
					 | 
				
			||||||
    sourceCompatibility = "1.8"
 | 
					 | 
				
			||||||
    targetCompatibility = "1.8"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
listOf("compileKotlin", "compileTestKotlin").forEach {
 | 
					 | 
				
			||||||
    tasks.getByName<KotlinCompile>(it) {
 | 
					 | 
				
			||||||
        kotlinOptions.jvmTarget = "1.8"
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Configure project's dependencies
 | 
					// Configure project's dependencies
 | 
				
			||||||
repositories {
 | 
					repositories {
 | 
				
			||||||
    mavenCentral()
 | 
					    mavenCentral()
 | 
				
			||||||
@ -42,7 +35,7 @@ repositories {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
dependencies {
 | 
					dependencies {
 | 
				
			||||||
    implementation(kotlin("stdlib-jdk8"))
 | 
					    implementation(kotlin("stdlib-jdk8"))
 | 
				
			||||||
    detektPlugins("io.gitlab.arturbosch.detekt:detekt-formatting:1.8.0")
 | 
					    detektPlugins("io.gitlab.arturbosch.detekt:detekt-formatting:1.10.0-RC1")
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Configure gradle-intellij-plugin plugin. Read more: https://github.com/JetBrains/gradle-intellij-plugin
 | 
					// Configure gradle-intellij-plugin plugin. Read more: https://github.com/JetBrains/gradle-intellij-plugin
 | 
				
			||||||
@ -58,18 +51,36 @@ intellij {
 | 
				
			|||||||
// Configure detekt plugin. Read more: https://detekt.github.io/detekt/kotlindsl.html
 | 
					// Configure detekt plugin. Read more: https://detekt.github.io/detekt/kotlindsl.html
 | 
				
			||||||
detekt {
 | 
					detekt {
 | 
				
			||||||
    config = files("./detekt-config.yml")
 | 
					    config = files("./detekt-config.yml")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    reports {
 | 
				
			||||||
 | 
					        html.enabled = false
 | 
				
			||||||
 | 
					        xml.enabled = false
 | 
				
			||||||
 | 
					        txt.enabled = false
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
tasks {
 | 
					tasks {
 | 
				
			||||||
 | 
					    // Set the compatibility versions to 1.8
 | 
				
			||||||
 | 
					    withType<JavaCompile> {
 | 
				
			||||||
 | 
					        sourceCompatibility = "1.8"
 | 
				
			||||||
 | 
					        targetCompatibility = "1.8"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    listOf("compileKotlin", "compileTestKotlin").forEach {
 | 
				
			||||||
 | 
					        getByName<KotlinCompile>(it) {
 | 
				
			||||||
 | 
					            kotlinOptions.jvmTarget = "1.8"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    withType<Detekt> {
 | 
				
			||||||
 | 
					        jvmTarget = "1.8"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    patchPluginXml {
 | 
					    patchPluginXml {
 | 
				
			||||||
        version(pluginVersion)
 | 
					        version(pluginVersion)
 | 
				
			||||||
        sinceBuild(pluginSinceBuild)
 | 
					        sinceBuild(pluginSinceBuild)
 | 
				
			||||||
        untilBuild(pluginUntilBuild)
 | 
					        untilBuild(pluginUntilBuild)
 | 
				
			||||||
//        changeNotes("")
 | 
					        changeNotes(closure {
 | 
				
			||||||
 | 
					            changelog.getUnreleased().toHTML()
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					 | 
				
			||||||
//    publishPlugin {
 | 
					 | 
				
			||||||
//        token("ssdfhasdfASDaq23jhnasdkjh")
 | 
					 | 
				
			||||||
//        channels("nightly")
 | 
					 | 
				
			||||||
//    }
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -4,8 +4,8 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
pluginGroup = org.jetbrains.plugins.template
 | 
					pluginGroup = org.jetbrains.plugins.template
 | 
				
			||||||
pluginName = Template
 | 
					pluginName = Template
 | 
				
			||||||
pluginVersion = 0.0.1
 | 
					pluginVersion = 0.0.2
 | 
				
			||||||
pluginSinceBuild = 201
 | 
					pluginSinceBuild = 193
 | 
				
			||||||
pluginUntilBuild = 202
 | 
					pluginUntilBuild = 202
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ideaVersion = 2020.1
 | 
					ideaVersion = 2020.1
 | 
				
			||||||
 | 
				
			|||||||
@ -6,6 +6,6 @@ import org.jetbrains.plugins.template.TemplateBundle
 | 
				
			|||||||
class MyProjectService(project: Project) {
 | 
					class MyProjectService(project: Project) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    init {
 | 
					    init {
 | 
				
			||||||
println(TemplateBundle.message("projectService", project.name))
 | 
					        println(TemplateBundle.message("projectService", project.name))
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user