Skip to content

Commit

Permalink
feat: add a "match_tags" option
Browse files Browse the repository at this point in the history
I use this action to release the chart of [Mercure](https://mercure.rocks).
We use a monolithic Git repository containing several projects, including the Helm chart.
Currently, this action isn't compatible with our setup because it computes the changes
made to the chart since the previous tag.

In our case we also use tags for other projects in the same repository,
so this actions is never triggered because there is no changes with the "previous" tag (which usually is for another project in the same repository).

This PR introduces a `match_tags` option allowing to filter the tags to match using a glob.
  • Loading branch information
dunglas committed Jul 12, 2021
1 parent 702702f commit ce00d8a
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 1 deletion.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ For more information on inputs, see the [API Documentation](https://developer.gi
- `config`: Optional config file for chart-releaser
- `charts_dir`: The charts directory
- `charts_repo_url`: The GitHub Pages URL to the charts repo (default: `https://<owner>.github.io/<project>`)
- `match_tags`: The glob to use to filter Git tags, usually used with the `CR_RELEASE_NAME_TEMPLATE` environment variable (default: all tags)

### Example Workflow

Expand Down
11 changes: 11 additions & 0 deletions action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,20 @@ branding:
inputs:
version:
description: "The chart-releaser version to use (default: v1.2.1)"
required: false
config:
description: "The relative path to the chart-releaser config file"
required: false
charts_dir:
description: The charts directory
default: charts
required: false
charts_repo_url:
description: "The GitHub Pages URL to the charts repo (default: https://<owner>.github.io/<repo>)"
required: false
match_tags:
description: "The glob to use to filter Git tags (default: all tags)"
required: false
runs:
using: composite
steps:
Expand All @@ -36,5 +43,9 @@ runs:
args+=(--charts-repo-url "${{ inputs.charts_repo_url }}")
fi
if [[ -n "${{ inputs.match_tags }}" ]]; then
args+=(--match-tags "${{ inputs.match_tags }}")
fi
"$GITHUB_ACTION_PATH/cr.sh" "${args[@]}"
shell: bash
19 changes: 18 additions & 1 deletion cr.sh
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ Usage: $(basename "$0") <options>
-u, --charts-repo-url The GitHub Pages URL to the charts repo (default: https://<owner>.github.io/<repo>)
-o, --owner The repo owner
-r, --repo The repo name
-m, --match-tags The glob to use to filter Git tags (default: all tags)
EOF
}

Expand All @@ -41,6 +42,7 @@ main() {
local owner=
local repo=
local charts_repo_url=
local match_tags=

parse_command_line "$@"

Expand Down Expand Up @@ -151,6 +153,16 @@ parse_command_line() {
exit 1
fi
;;
-m|--match-tags)
if [[ -n "${2:-}" ]]; then
match_tags="$2"
shift
else
echo "ERROR: '--match-tags' cannot be empty." >&2
show_help
exit 1
fi
;;
*)
break
;;
Expand Down Expand Up @@ -202,7 +214,12 @@ install_chart_releaser() {
lookup_latest_tag() {
git fetch --tags > /dev/null 2>&1

if ! git describe --tags --abbrev=0 2> /dev/null; then
args=("describe" "--tags" "--abbrev=0")
if [ -n "$match_tags" ]; then
args+=(--match="$match_tags")
fi

if ! git "${args[@]}" 2> /dev/null; then
git rev-list --max-parents=0 --first-parent HEAD
fi
}
Expand Down

0 comments on commit ce00d8a

Please sign in to comment.