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:
|
||||
|
||||
# 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.
|
||||
test:
|
||||
name: Test
|
||||
needs: gradleValidation
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
# Check out current repository
|
||||
@ -33,8 +46,7 @@ jobs:
|
||||
with:
|
||||
path: ~/.gradle/caches
|
||||
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-gradle-
|
||||
restore-keys: ${{ runner.os }}-gradle-
|
||||
# Run detekt
|
||||
- name: Run Linter
|
||||
run: ./gradlew detekt
|
||||
@ -51,6 +63,11 @@ jobs:
|
||||
name: Build
|
||||
needs: test
|
||||
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:
|
||||
# Check out current repository
|
||||
- name: Fetch Sources
|
||||
@ -66,13 +83,14 @@ jobs:
|
||||
with:
|
||||
path: ~/.gradle/caches
|
||||
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-gradle-
|
||||
restore-keys: ${{ runner.os }}-gradle-
|
||||
# Set VERSION and NAME environment variables for the steps reading properties directly from Gradle setup
|
||||
- name: Export Properties
|
||||
id: properties
|
||||
run: |
|
||||
echo "::set-env 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=version::$(./gradlew properties --no-daemon --console=plain -q | grep "^version:" | 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
|
||||
- name: Build Plugin
|
||||
run: ./gradlew buildPlugin --no-daemon
|
||||
@ -81,7 +99,7 @@ jobs:
|
||||
uses: actions/upload-artifact@v1
|
||||
with:
|
||||
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.
|
||||
# Requires build job to be passed.
|
||||
@ -91,7 +109,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
# Download plugin artifact provided by the previous job
|
||||
- name: Download artifact
|
||||
- name: Download Artifact
|
||||
uses: actions/download-artifact@v1
|
||||
with:
|
||||
name: plugin-artifact
|
||||
@ -100,12 +118,63 @@ jobs:
|
||||
id: verify
|
||||
uses: ChrisCarini/intellij-platform-plugin-verifier-action@v0.0.2
|
||||
with:
|
||||
plugin-location: plugin-artifact.zip
|
||||
plugin-location: plugin-artifact/${{ needs.build.outputs.artifact }}
|
||||
ide-versions: |
|
||||
ideaIC:2020.1
|
||||
# ideaIC:LATEST-EAP-SNAPSHOT
|
||||
# Print the output of the verify step
|
||||
- name: Print Logs
|
||||
env:
|
||||
OUTPUT_LOG: ${{ steps.verify.outputs.verification-output-log-filename }}
|
||||
run: |
|
||||
echo "The verifier log file [${{steps.verify.outputs.verification-output-log-filename}}] contents : " ;
|
||||
cat ${{steps.verify.outputs.verification-output-log-filename}}
|
||||
echo "The verifier log file [$OUTPUT_LOG] contents : " ;
|
||||
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
|
||||
|
||||
## [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
|
||||
|
||||
![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)
|
||||
|
||||
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
|
||||
|
||||
plugins {
|
||||
@ -6,9 +8,11 @@ plugins {
|
||||
// Kotlin support
|
||||
id("org.jetbrains.kotlin.jvm") version "1.3.72"
|
||||
// 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
|
||||
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
|
||||
@ -24,17 +28,6 @@ val sources: String by project
|
||||
group = pluginGroup
|
||||
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
|
||||
repositories {
|
||||
mavenCentral()
|
||||
@ -42,7 +35,7 @@ repositories {
|
||||
}
|
||||
dependencies {
|
||||
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
|
||||
@ -58,18 +51,36 @@ intellij {
|
||||
// Configure detekt plugin. Read more: https://detekt.github.io/detekt/kotlindsl.html
|
||||
detekt {
|
||||
config = files("./detekt-config.yml")
|
||||
|
||||
reports {
|
||||
html.enabled = false
|
||||
xml.enabled = false
|
||||
txt.enabled = false
|
||||
}
|
||||
}
|
||||
|
||||
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 {
|
||||
version(pluginVersion)
|
||||
sinceBuild(pluginSinceBuild)
|
||||
untilBuild(pluginUntilBuild)
|
||||
// changeNotes("")
|
||||
changeNotes(closure {
|
||||
changelog.getUnreleased().toHTML()
|
||||
})
|
||||
}
|
||||
|
||||
// publishPlugin {
|
||||
// token("ssdfhasdfASDaq23jhnasdkjh")
|
||||
// channels("nightly")
|
||||
// }
|
||||
}
|
||||
|
@ -4,8 +4,8 @@
|
||||
|
||||
pluginGroup = org.jetbrains.plugins.template
|
||||
pluginName = Template
|
||||
pluginVersion = 0.0.1
|
||||
pluginSinceBuild = 201
|
||||
pluginVersion = 0.0.2
|
||||
pluginSinceBuild = 193
|
||||
pluginUntilBuild = 202
|
||||
|
||||
ideaVersion = 2020.1
|
||||
|
@ -6,6 +6,6 @@ import org.jetbrains.plugins.template.TemplateBundle
|
||||
class MyProjectService(project: Project) {
|
||||
|
||||
init {
|
||||
println(TemplateBundle.message("projectService", project.name))
|
||||
println(TemplateBundle.message("projectService", project.name))
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user