mirror of
https://github.com/JetBrains/intellij-platform-plugin-template.git
synced 2024-10-27 20:44:05 +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
|
||||||
|
|
||||||
![official JetBrains project](https://jb.gg/badges/official-flat-square.svg)
|
[![official JetBrains project](https://jb.gg/badges/official.svg)](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub)
|
||||||
![Build](https://github.com/hsz/intellij-plugin-template/workflows/Build/badge.svg)
|
![Build](https://github.com/hsz/intellij-plugin-template/workflows/Build/badge.svg)
|
||||||
|
|
||||||
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