Skip to content

feat(*): introduce new tasks (Push, Tag, Compose)#86

Merged
Malaydewangan09 merged 8 commits into
mainfrom
feat/issue-79
Nov 20, 2025
Merged

feat(*): introduce new tasks (Push, Tag, Compose)#86
Malaydewangan09 merged 8 commits into
mainfrom
feat/issue-79

Conversation

@Malaydewangan09

@Malaydewangan09 Malaydewangan09 commented Nov 19, 2025

Copy link
Copy Markdown
Member

closes #79

What changes are being made and why?


How the changes have been QAed?


Setup Instructions


Contributor Checklist ✅

  • PR Title and commits follows conventional commits
  • Add a closes #ISSUE_ID or fixes #ISSUE_ID in the description if the PR relates to an opened issue.
  • Documentation updated (plugin docs from @Schema for properties and outputs, @Plugin with examples, README.md file with basic knowledge and specifics).
  • Setup instructions included if needed (API keys, accounts, etc.).
  • Prefix all rendered properties by r not rendered (eg: rHost).
  • Use runContext.logger() to log enough important infos where it's needed and with the best level (DEBUG, INFO, WARN or ERROR).

⚙️ Properties

  • Properties are declared with Property<T> carrier type, do not use @PluginProperty.
  • Mandatory properties must be annotated with @NotNull and checked during the rendering.
  • You can model a JSON thanks to a simple Property<Map<String, Object>>.

🌐 HTTP

  • Must use Kestra’s internal HTTP client from io.kestra.core.http.client

📦 JSON

  • If you are serializing response from an external API, you may have to add a @JsonIgnoreProperties(ignoreUnknown = true) at the mapped class level. So that we will avoid to crash the plugin if the provider add a new field suddenly.
  • Must use Jackson mappers provided by core (io.kestra.core.serializers)

New plugins / subplugins

  • Make sure your new plugin is configured like mentioned here.
  • Add a package-info.java under each sub package respecting this format and choosing the right category.
  • Every time you use runContext.metric(...) you have to add a @Metric (see this doc)
  • Docs don't support to have both tasks/triggers in the root package (e.g. io.kestra.plugin.kubernetes) and in a sub package (e.g. io.kestra.plugin.kubernetes.kubectl), whether it's: all tasks/triggers in the root package OR only tasks/triggers in sub packages.
  • Icons added in src/main/resources/icons in SVG format and not in thumbnail (keep it big):
    • plugin-icon.svg
    • One icon per package, e.g. io.kestra.plugin.aws.svg
    • For subpackages, e.g. io.kestra.plugin.aws.s3, add io.kestra.plugin.aws.s3.svg
      See example here.
  • Use "{{ secret('YOUR_SECRET') }}" in the examples for sensible infos such as an API KEY.
  • If you are fetching data (one, many or too many), you must add a Property<FetchType> fetchType to be able to use FETCH_ONE, FETCH and even STORE to store big amount of data in the internal storage.
  • Align the """ to close examples blocks with the flow id.

🧪 Tests

  • Unit Tests added or updated to cover the change (using the RunContext to actually run tasks).
  • Add sanity checks if possible with a YAML flow inside src/test/resources/flows.
  • Avoid disabling tests for CI. Instead, configure a local environment whenever it's possible with .github/setup-unit.sh (to be set executable with chmod +x setup-unit.sh) (which can be executed locally and in the CI) all along with a new docker-compose-ci.yml file (do not edit the existing docker-compose.yml). If needed, create an executable (chmod +x cleanup-unit.sh) cleanup-unit.sh to remove the potential costly resources (tables, datasets, etc).
  • Provide screenshots from your QA / tests locally in the PR description. The goal here is to use the JAR of the plugin and directly test it locally in Kestra UI to ensure it integrates well.

📤 Outputs

  • Do not send back as outputs the same infos you already have in your properties.
  • If you do not have any output use VoidOutput.
  • Do not output twice the same infos (eg: a status code, an error code saying the same thing...).

@github-project-automation github-project-automation Bot moved this to To review in Pull Requests Nov 19, 2025
@github-actions

github-actions Bot commented Nov 19, 2025

Copy link
Copy Markdown
Contributor

📦 Artifacts

Name Size Updated Expiration
jar 65.75 KB Nov 20, 25, 3:45:31 PM UTC Nov 27, 25, 3:45:31 PM UTC

🧪 Java Unit Tests

TestsPassed ✅SkippedFailedTime ⏱
Java Tests Report16 ran16 ✅0 ⚠️0 ❌2m 26s 971ms

🔁 Unreleased Commits

4 commits since v1.1.1

SHA Title Author Date
67ce5a2 docs(docker): remove deprecated example (#81) Will Russell Nov 3, 25, 1:16:24 PM UTC
d52e688 chore: remove unused RunnerUtils Loïc Mathieu Nov 4, 25, 10:16:14 AM UTC
dc7e0af chore: update contributor guidelines in PR template Malay Dewangan Nov 7, 25, 9:21:15 AM UTC
acd5fcc ci: sync release.yml from plugin-template François Delbrayelle Nov 12, 25, 1:53:30 PM UTC

@Malaydewangan09 Malaydewangan09 marked this pull request as ready for review November 20, 2025 15:35
@Malaydewangan09 Malaydewangan09 merged commit e86433b into main Nov 20, 2025
6 checks passed
@Malaydewangan09 Malaydewangan09 deleted the feat/issue-79 branch November 20, 2025 21:26
@github-project-automation github-project-automation Bot moved this from To review to Done in Pull Requests Nov 20, 2025
@caxefaizan

Copy link
Copy Markdown

Will this be released in 1.2 or would be available in 1.1 as well?

@Malaydewangan09 Malaydewangan09 changed the title feat(*): introduce new tasks (Push, Image, Compose) feat(*): introduce new tasks (Push, Tag, Compose) Nov 24, 2025
@Malaydewangan09

Malaydewangan09 commented Nov 24, 2025

Copy link
Copy Markdown
Member Author

Hey @caxefaizan 👋, the plugin is already released as 1.2.0, customer could install the new plugin version from their UI.
So, plugin-docker 1.2.0 is available too in Kestra 1.1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

Add methods for Docker Plugin

3 participants