Giter Club home page Giter Club logo

idea-envfile's Introduction

IDEA Envfile plugin

With this plugin you can run your java code with environment variables from .env file in project root. Repository https://github.com/cm-kazup0n/IDEA-Envfile

How to use

Build plugin package

  1. Build plugin package with buildPlugin task.
  2. Built package will be generated in ./build/distributions/.
  3. Then install plugin from disk.

NOTE: This plugin is not published in plugin repository.

> ./gradlew buildPlugin
> ls build/distributions/
IdeaEnvFile-X.X.X.zip

Usage

If there's an .env file in project root. The plugin automatically load its contents into environment variable when program runs.

For plugin developers

Predefined Run/Debug configurations

Within the default project structure, there is a .run directory provided containing three predefined Run/Debug configurations that expose corresponding Gradle tasks:

Run/Debug configurations

Configuration name Description
Run Plugin Runs :runIde Gradle IntelliJ Plugin task. Use the Debug icon for plugin debugging.
Run Tests Runs :check Gradle task that invokes :test and detekt/ktlint code inspections.
Run Verifications Runs :runPluginVerifier Gradle IntelliJ Plugin task to check the plugin compatibility against the specified IntelliJ IDEs.

TIP: You can find the logs from the running task in the idea.log tab.

Run/Debug configuration logs

Continuous integration

Continuous integration depends on GitHub Actions, a set of workflows that make it possible to automate your testing and release process. Thanks to such automation, you can delegate the testing and verification phases to the CI and instead focus on development (and writing more tests).

In the .github/workflows directory, you can find definitions for the following GitHub Actions workflows:

  • Build
    • Triggered on push and pull_request events.
    • Runs the Gradle Wrapper Validation Action to verify the wrapper's checksum.
    • Runs the verifyPlugin and test Gradle tasks.
    • Builds the plugin with the buildPlugin Gradle task and provides the artifact for the next jobs in the workflow.
    • Verifies the plugin using the IntelliJ Plugin Verifier tool.
    • Prepares a draft release of the GitHub Releases page for manual verification.
  • Release
    • Triggered on released event.
    • Publishes the plugin to the Marketplace using the provided PUBLISH_TOKEN.
    • Sets publish channel depending on the plugin version, i.e. 1.0.0-beta -> beta channel.
    • Patches the Changelog and commits.

All the workflow files have accurate documentation, so it's a good idea to take a look through their sources.

Dependencies management

This project depends on Gradle plugins and external libraries – and during the development, you will add more of them. Keeping the project in good shape and having all the dependencies up-to-date requires time and effort, but it is possible to automate that process using dependabot. Dependabot is a bot provided by GitHub for checking the build configuration files and reviewing any outdated or insecure dependencies of yours – in case if any update is available, it creates a new pull request providing the proper change.

Note: Dependabot doesn't yet support checking of the Gradle Wrapper. Check the Gradle Releases page and update it with:

./gradlew wrapper --gradle-version 6.8

Changelog maintenance

When releasing an update, it is important to let your users know what the new version offers. The best way to do this is to provide release notes.

The changelog is a curated list that contains information about any new features, fixes, and deprecations. When they are provided, these lists are available in a few different places: the CHANGELOG.md file, the Releases page, the What's new section of the Marketplace Plugin page, and inside of the Plugin Manager's item details.

There are many methods for handling the project's changelog. The one used in the current template project is the Keep a Changelog approach.

Release flow

The release process depends on the workflows already described above. When your main branch receives a new pull request or a regular push, the Build workflow runs multiple tests on your plugin and prepares a draft release.

Release draft

The draft release is a working copy of a release, which you can review before publishing. It includes a predefined title and git tag, which is the current version of the plugin, for example, v0.0.1. The changelog is provided automatically using the gradle-changelog-plugin. An artifact file is also built with the plugin attached. Every new Build overrides the previous draft to keep your Releases page clean.

When you edit the draft and use the Publish release button, GitHub will tag your repository with the given version and add a new entry to the Releases tab. Next, it will notify users that are watching the repository, and it will trigger the final Release workflow.

Publishing the plugin

Releasing a plugin to the Marketplace is a straightforward operation that uses the publishPlugin Gradle task provided by the gradle-intellij-plugin. The Release workflow automates this process by running the task when a new release appears in the GitHub Releases section.

TIP: Set a suffix to the plugin version to publish it in the custom repository channel, i.e. v1.0.0-beta will push your plugin to the beta release channel.

The authorization process relies on the PUBLISH_TOKEN secret environment variable, which has to be acquired through the Secrets section of the repository Settings.

Settings > Secrets

You can get that token in the My Tokens tab within your Marketplace profile dashboard.

Important: Before using the automated deployment process, it is necessary to manually create a new plugin in the Marketplace to specify options like the license, repository URL, etc. Please follow the Publishing a Plugin instructions.

FAQ

How to use Java in my project?

Java language is supported by default along with Kotlin. Initially, there's /src/main/kotlin directory available with some minimal examples. You can still replace it or add next to it the /src/main/java to start working with Java language instead.

How to disable tests or build job using the [skip ci] commit message?

Since the February 2021, GitHub Actions support the skip CI feature. If the message contains one of the following strings: [skip ci], [ci skip], [no ci], [skip actions], or [actions skip] – workflows will not be triggered.

Useful links

idea-envfile's People

Contributors

cm-kazup0n avatar renovate[bot] avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.