Shared GitHub Actions composite actions and reusable workflows for JTL repositories. This repository is public so consumer repositories of any visibility can reference its artefacts.
This is the public-visibility counterpart to the internal jtl-software/jtl-platform-gh-workflows. GitHub only allows public repositories to consume reusable workflows and composite actions from public or internal source repositories. Anything that must be callable from a public repo (for example connector-prestashop, connector-woocommerce3) lives here.
- No prefix - public API, safe to reference from any repository
- Underscore prefix (
_) - internal to this repository (CI, integration tests), not part of the public API and may change without notice
.github/
actions/<name>/ # Composite actions - public API
action.yaml
*.sh / *.ps1 # Helper scripts called by the action
workflows/
<name>.yaml # Public reusable workflows
_lint.yaml # Internal: actionlint on PRs
_test-<name>.yaml # Internal: integration tests for each public artefact
docs/
<name>.md # Full documentation per public action or workflow
workflow-templates/
<name>.yaml # Example consumer workflows
Opens a draft pull request when a feature branch is pushed (GitLab auto-MR parity for repositories that migrated from GitLab to GitHub). Idempotent: re-pushes to the same branch do not create duplicates.
Usage:
name: Auto draft PR
on:
push:
branches-ignore:
- master
- main
- '**/gh-readonly-queue/**'
tags-ignore:
- '**'
jobs:
draft-pr:
uses: jtl-software/actions/.github/workflows/auto-draft-pr.yaml@v1The reusable workflow declares its own permissions:, if: guard against the default branch, and runs-on:. The caller only supplies the trigger.
Actions and workflows are referenced by:
@main- latest version (not recommended for production)@v1/@v2- rolling major-version tags (auto-updated to the latest compatible release)@<commit-sha>- exact pin (recommended for production callers; let dependabot bump the pin)
Recommended consumer pattern:
uses: jtl-software/actions/.github/workflows/auto-draft-pr.yaml@<sha> # v1.0.0Releases are tag-driven. Pushing a tag matching v* triggers
.github/workflows/release.yaml, which creates the GitHub Release with
auto-generated notes (PRs since the previous release, grouped by label
according to .github/release.yml) and force-updates the rolling major
tag (v1, v2, ...) for strict SemVer releases.
Steps:
# Bump the version in your head, then:
git tag v1.2.3
git push origin v1.2.3Or, if you also want the GitHub Release created from the local CLI rather than waiting for the workflow:
gh release create v1.2.3 --generate-notes(The workflow runs idempotently in either case.)
Pre-release tags (v1.0.0-rc.1, v2.0.0-beta.3, ...) are detected by the
hyphen, marked as pre-release, and do not roll the major tag.
PRs should carry one of the labels listed in .github/release.yml
(enhancement, bug, breaking-change, documentation, chore,
dependencies, ...) so the auto-generated notes group them under the right
heading.
_lint.yamlruns actionlint (and shellcheck when.shfiles exist) on every push and PR._test-<name>.yamlintegration tests cover each public action/workflow with mocked CLIs where appropriate.
- Create
.github/workflows/<name>.yaml(no underscore prefix for public workflows). - Add an integration test workflow
.github/workflows/_test-<name>.yaml. - Add documentation to
docs/<name>.md. - Mention the new workflow in this README.
- Create
.github/actions/<name>/action.yaml. - Add helper scripts in the same directory (shell scripts must pass shellcheck; PowerShell scripts must pass PSScriptAnalyzer where applicable).
- Add an integration test workflow
.github/workflows/_test-<name>.yaml. - Add documentation to
docs/<name>.md. - Mention the new action in this README.