51 lines
1.9 KiB
YAML
51 lines
1.9 KiB
YAML
|
name: multi-semantic-release
|
||
|
|
||
|
# This monorepo only tags releases from the main branch
|
||
|
on:
|
||
|
push:
|
||
|
branches:
|
||
|
- 'main'
|
||
|
|
||
|
jobs:
|
||
|
multi-semantic-release:
|
||
|
runs-on: docker
|
||
|
container:
|
||
|
image: forgejo.mixinet.net/oci/multi-semantic-release:latest
|
||
|
steps:
|
||
|
- name: Checkout the repo
|
||
|
uses: actions/checkout@v4
|
||
|
|
||
|
- name: Generate multi-semantic-release configuration
|
||
|
shell: sh
|
||
|
run: |
|
||
|
# Get the list of kustomize applications to work with (the folders that have a kustomization.yaml file)
|
||
|
applications="$(for app in */kustomization.yaml; do dirname "$app"; done)"
|
||
|
# Generate a values.yaml file for the main packages.json file
|
||
|
package_json_values_yaml=".package.json-values.yaml"
|
||
|
echo "applications:" >"$package_json_values_yaml"
|
||
|
for app in $applications; do
|
||
|
echo " - $app" >>"$package_json_values_yaml";
|
||
|
done
|
||
|
echo "::group::Generated values.yaml for the project"
|
||
|
cat "$package_json_values_yaml"
|
||
|
echo "::endgroup::"
|
||
|
# Generate the package.json file validating that is a good json file with jq
|
||
|
tmpl -f "$package_json_values_yaml" ".forgejo/package.json.tmpl" | jq . > "package.json"
|
||
|
echo "::group::Generated package.json for the project"
|
||
|
cat "package.json"
|
||
|
echo "::endgroup::"
|
||
|
# Remove the temporary values file
|
||
|
rm -f "$package_json_values_yaml"
|
||
|
# Generate the package.json file for each image
|
||
|
for app in $applications; do
|
||
|
tmpl -v "app_name=$app" -v "app_path=$app" ".forgejo/ws-package.json.tmpl" | jq . > "$app/package.json"
|
||
|
echo "::group::Generated package.json for the '$app' application"
|
||
|
cat "$app/package.json"
|
||
|
echo "::endgroup::"
|
||
|
done
|
||
|
|
||
|
- name: Run multi-semantic-release
|
||
|
shell: sh
|
||
|
run: |
|
||
|
multi-semantic-release | tee .multi-semantic-release.log
|