feat: add helm-chart name extraction action
This commit is contained in:
19
.gitea/actions/extract-chart-name-from-repo-name/action.yaml
Normal file
19
.gitea/actions/extract-chart-name-from-repo-name/action.yaml
Normal file
@@ -0,0 +1,19 @@
|
||||
name: Extract chart name from repo name
|
||||
description: Extracts the chart name from the repo name, based on the convention of helm-<chart-name>
|
||||
inputs:
|
||||
repo:
|
||||
description: The full repository name (e.g., "helm-my-chart")
|
||||
required: true
|
||||
outputs:
|
||||
chart-name:
|
||||
description: The extracted chart name
|
||||
value: ${{ steps.extract.outputs.suffix }}
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
- id: extract
|
||||
shell: bash
|
||||
run: |
|
||||
full_repo="${{ inputs.repo }}"
|
||||
suffix="${full_repo##*helm-}"
|
||||
echo "suffix=$suffix" >> $GITHUB_OUTPUT
|
||||
54
README.md
54
README.md
@@ -36,8 +36,8 @@ jobs:
|
||||
ci:
|
||||
uses: ./.gitea/workflows/ci.yaml
|
||||
with:
|
||||
k8s_dir: 'kubernetes/'
|
||||
helmfile_path: 'helm/helmfile.yaml'
|
||||
k8s_dir: "kubernetes/"
|
||||
helmfile_path: "helm/helmfile.yaml"
|
||||
```
|
||||
|
||||
### Force Skip Helm Validation
|
||||
@@ -54,15 +54,16 @@ jobs:
|
||||
|
||||
## Input Parameters
|
||||
|
||||
| Parameter | Description | Default | Required |
|
||||
|-----------|-------------|---------|----------|
|
||||
| `k8s_dir` | Path to Kubernetes manifests directory | `k8s/` | No |
|
||||
| `helmfile_path` | Path to helmfile.yaml | `helmfile.yaml` | No |
|
||||
| `skip_helm_validation` | Skip Helm validation even if helmfile exists | `false` | No |
|
||||
| Parameter | Description | Default | Required |
|
||||
| ---------------------- | -------------------------------------------- | --------------- | -------- |
|
||||
| `k8s_dir` | Path to Kubernetes manifests directory | `k8s/` | No |
|
||||
| `helmfile_path` | Path to helmfile.yaml | `helmfile.yaml` | No |
|
||||
| `skip_helm_validation` | Skip Helm validation even if helmfile exists | `false` | No |
|
||||
|
||||
## Directory Structure Requirements
|
||||
|
||||
### For Kubernetes-only services:
|
||||
|
||||
```
|
||||
your-service/
|
||||
├── k8s/
|
||||
@@ -73,6 +74,7 @@ your-service/
|
||||
```
|
||||
|
||||
### For Helm + Kubernetes services:
|
||||
|
||||
```
|
||||
your-service/
|
||||
├── k8s/
|
||||
@@ -86,11 +88,13 @@ your-service/
|
||||
## What Gets Validated
|
||||
|
||||
### Always (if k8s/ directory exists):
|
||||
|
||||
- Kubernetes manifest validation using `kubectl --dry-run`
|
||||
- Namespace extraction from repository name
|
||||
- Basic Kubernetes syntax and schema validation
|
||||
|
||||
### Conditionally (if helmfile.yaml exists and Helm validation not skipped):
|
||||
|
||||
- Helm chart validation using `helmfile diff`
|
||||
- Kubernetes manifests in Helm context
|
||||
- Helm-specific configurations and values
|
||||
@@ -99,24 +103,60 @@ your-service/
|
||||
|
||||
See `example-usage.yaml` for complete examples of how to use this workflow in different scenarios.
|
||||
|
||||
## Available Actions
|
||||
|
||||
### Extract Chart Name from Repository Name
|
||||
|
||||
The `extract-chart-name-from-repo-name` action extracts the chart name from repository names following the `helm-<chart-name>` convention.
|
||||
|
||||
#### Usage
|
||||
|
||||
```yaml
|
||||
- name: Extract chart name
|
||||
uses: ./.gitea/actions/extract-chart-name-from-repo-name
|
||||
with:
|
||||
repo: ${{ github.repository_name }} # e.g., "helm-my-service"
|
||||
```
|
||||
|
||||
#### Inputs
|
||||
|
||||
| Parameter | Description | Required |
|
||||
| --------- | ------------------------------------------------ | -------- |
|
||||
| `repo` | The full repository name (e.g., "helm-my-chart") | Yes |
|
||||
|
||||
#### Outputs
|
||||
|
||||
| Output | Description |
|
||||
| ------------ | ---------------------------------------------------------------- |
|
||||
| `chart-name` | The extracted chart name (e.g., "my-chart" from "helm-my-chart") |
|
||||
|
||||
#### Example
|
||||
|
||||
For a repository named `helm-user-service`, this action will extract `user-service` as the chart name.
|
||||
|
||||
## Dependencies
|
||||
|
||||
This workflow requires:
|
||||
|
||||
- `./.gitea/actions/extract-namespace-from-repo-name` action
|
||||
- `./.gitea/actions/extract-chart-name-from-repo-name` action
|
||||
- `KUBECONFIG` secret configured in your repository
|
||||
- Access to your Kubernetes cluster
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Helm validation skipped unexpectedly
|
||||
|
||||
- Check if `helmfile.yaml` exists in the expected location
|
||||
- Verify the `skip_helm_validation` parameter is not set to `true`
|
||||
- Ensure the file path is correct if using custom paths
|
||||
|
||||
### Kubernetes validation skipped
|
||||
|
||||
- Verify the `k8s/` directory (or custom path) exists
|
||||
- Check the directory contains valid Kubernetes manifests
|
||||
|
||||
### Permission issues
|
||||
|
||||
- Ensure the `KUBECONFIG` secret is properly configured
|
||||
- Verify the workflow has access to your Kubernetes cluster
|
||||
|
||||
Reference in New Issue
Block a user