GH Actions release + Changelog integration (#3)

pull/5/head
Jakub Chrzanowski 4 years ago committed by GitHub
parent 4aa3db2ba6
commit 67df09b137
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -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

@ -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…
Cancel
Save