Compare commits
39 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| fce2468b2b | |||
| 30ff44c33b | |||
| 11fd063f95 | |||
| 70758f1d74 | |||
| 395bf58622 | |||
| 358bf3b06f | |||
| 298834cd9f | |||
| a6dc98df0d | |||
| 04d506533e | |||
| a8797ceedb | |||
| c75c6f5172 | |||
| bac8715813 | |||
| 975efe3d37 | |||
| 87626040ca | |||
| e7d71f95bf | |||
| 1d6a9e5763 | |||
| 2e9a99fe8f | |||
| 107f3c70f5 | |||
| b394f79057 | |||
| 8c99fa50a9 | |||
| 6b7f573880 | |||
| b296b7af40 | |||
| 40dd6f9675 | |||
| 5b5522f3e0 | |||
| 37b5363e63 | |||
| 188aa399a6 | |||
| 67072f822e | |||
| 094e27b8ce | |||
| d33b5db759 | |||
| 98f5b830e2 | |||
| 2b68567518 | |||
| 2a98963df8 | |||
| ea84f7e741 | |||
| 62ee7dcb72 | |||
| 49a9d89b19 | |||
| d40431fb35 | |||
| 2e1c5764da | |||
| 67460d7eda | |||
| e8dfe952ff |
@@ -3,7 +3,6 @@ ACTIONS := \
|
||||
node \
|
||||
git/create_tag \
|
||||
helm/diff \
|
||||
helm/set_deployment_image \
|
||||
helm/template \
|
||||
helm/upgrade \
|
||||
infisical/fetch-secret \
|
||||
|
||||
@@ -21,9 +21,8 @@ Reusable composite actions for Gitea CI/CD pipelines.
|
||||
| Action | Description |
|
||||
|---|---|
|
||||
| [helm/diff](helm/diff/README.md) | Diff a Helm chart against a running deployment |
|
||||
| [helm/set_deployment_image](helm/set_deployment_image/README.md) | Set the image for a Kubernetes deployment via Helm |
|
||||
| [helm/template](helm/template/README.md) | Render a Helm chart for a deployment |
|
||||
| [helm/upgrade](helm/upgrade/README.md) | Log in to an OCI registry and run `helm upgrade` for the chart in the current directory |
|
||||
| [helm/upgrade](helm/upgrade/README.md) | Log in to an OCI registry, update chart dependencies, and run `helm upgrade` |
|
||||
|
||||
### Infisical
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@ Build a Docker image and push it to the Gitea container registry
|
||||
| `ARTIFACT_NAME` | <p>Name of the build artifact to download</p> | `false` | `dist` |
|
||||
| `ARTIFACT_PATH` | <p>Destination path for the downloaded artifact</p> | `false` | `dist` |
|
||||
| `TAG_LATEST` | <p>Also tag and push the image as latest</p> | `false` | `false` |
|
||||
| `TAG_PREFIX` | <p>Optional prefix to prepend to IMAGE_TAG (e.g. 'dev' produces 'dev-<tag>'). Does not affect the latest tag.</p> | `false` | `""` |
|
||||
| `WORKING_DIRECTORY` | <p>Working directory for the Docker build</p> | `false` | `.` |
|
||||
<!-- action-docs-inputs source="action.yml" -->
|
||||
|
||||
|
||||
+8
-1
@@ -28,6 +28,9 @@ inputs:
|
||||
TAG_LATEST:
|
||||
description: "Also tag and push the image as latest"
|
||||
default: "false"
|
||||
TAG_PREFIX:
|
||||
description: "Optional prefix to prepend to IMAGE_TAG (e.g. 'dev' produces 'dev-<tag>'). Does not affect the latest tag."
|
||||
default: ""
|
||||
WORKING_DIRECTORY:
|
||||
description: "Working directory for the Docker build"
|
||||
default: "."
|
||||
@@ -51,7 +54,11 @@ runs:
|
||||
- name: Docker Build and Push
|
||||
shell: sh
|
||||
run: |
|
||||
TAGS="-t ${{ inputs.IMAGE_PATH }}:${{ inputs.IMAGE_TAG }}"
|
||||
TAG="${{ inputs.IMAGE_TAG }}"
|
||||
if [ -n "${{ inputs.TAG_PREFIX }}" ]; then
|
||||
TAG="${{ inputs.TAG_PREFIX }}-${TAG}"
|
||||
fi
|
||||
TAGS="-t ${{ inputs.IMAGE_PATH }}:${TAG}"
|
||||
if [ "${{ inputs.TAG_LATEST }}" = "true" ]; then
|
||||
TAGS="$TAGS -t ${{ inputs.IMAGE_PATH }}:latest"
|
||||
fi
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
# git
|
||||
|
||||
Composite actions for Git operations.
|
||||
|
||||
| action | description |
|
||||
| --- | --- |
|
||||
| [create_tag](create_tag/README.md) | Creates and pushes a git tag in the current repository |
|
||||
@@ -0,0 +1,9 @@
|
||||
# helm
|
||||
|
||||
Composite actions for managing Helm chart deployments.
|
||||
|
||||
| action | description |
|
||||
| --- | --- |
|
||||
| [diff](diff/README.md) | Diff a Helm chart for a deployment in a Kubernetes cluster |
|
||||
| [template](template/README.md) | Template a Helm chart for a deployment in a Kubernetes cluster |
|
||||
| [upgrade](upgrade/README.md) | Login to an OCI registry, update chart dependencies, and run helm upgrade |
|
||||
+9
-6
@@ -11,13 +11,16 @@ Diff a Helm chart for a deployment in a Kubernetes cluster
|
||||
|
||||
| name | description | required | default |
|
||||
| --- | --- | --- | --- |
|
||||
| `DEPLOYMENT_NAME` | <p>The Kubernetes Deployment to update</p> | `true` | `""` |
|
||||
| `DEPLOYMENT_NAMESPACE` | <p>The Kubernetes namespace of the Deployment</p> | `true` | `""` |
|
||||
| `IMAGE_PATH` | <p>The registry path to the image</p> | `true` | `""` |
|
||||
| `IMAGE_TAG` | <p>The image tag to deploy</p> | `true` | `""` |
|
||||
| `CONTAINER_NAME` | <p>The container component to update</p> | `true` | `""` |
|
||||
| `VALUES_FILE` | <p>The values file to use</p> | `false` | `./helm/values.yaml` |
|
||||
| `DEPLOYMENT_NAME` | <p>The Helm release name</p> | `true` | `""` |
|
||||
| `DEPLOYMENT_NAMESPACE` | <p>The Kubernetes namespace (defaults to DEPLOYMENT_NAME)</p> | `false` | `""` |
|
||||
| `REGISTRY` | <p>OCI registry hostname for helm dependency login</p> | `true` | `""` |
|
||||
| `REGISTRY_USERNAME` | <p>Username for OCI registry login</p> | `true` | `""` |
|
||||
| `REGISTRY_TOKEN` | <p>Token for OCI registry login</p> | `true` | `""` |
|
||||
| `CHART_PATH` | <p>Path to the Helm chart</p> | `false` | `./helm` |
|
||||
| `VALUES_FILE` | <p>The values file to use</p> | `false` | `./helm/values.yaml` |
|
||||
| `IMAGE_PATH` | <p>The registry path to the image (optional)</p> | `false` | `""` |
|
||||
| `IMAGE_TAG` | <p>The image tag to deploy (optional)</p> | `false` | `""` |
|
||||
| `TAG_KEY` | <p>Helm --set key for the image tag (e.g. deploy.api.tag)</p> | `false` | `""` |
|
||||
<!-- action-docs-inputs source="action.yml" -->
|
||||
|
||||
<!-- action-docs-runs source="action.yml" -->
|
||||
|
||||
+52
-15
@@ -2,37 +2,74 @@ name: Helm Diff Deployment
|
||||
description: Diff a Helm chart for a deployment in a Kubernetes cluster
|
||||
inputs:
|
||||
DEPLOYMENT_NAME:
|
||||
description: "The Kubernetes Deployment to update"
|
||||
description: "The Helm release name"
|
||||
required: true
|
||||
DEPLOYMENT_NAMESPACE:
|
||||
description: "The Kubernetes namespace of the Deployment"
|
||||
description: "The Kubernetes namespace (defaults to DEPLOYMENT_NAME)"
|
||||
default: ""
|
||||
REGISTRY:
|
||||
description: "OCI registry hostname for helm dependency login"
|
||||
required: true
|
||||
IMAGE_PATH:
|
||||
description: "The registry path to the image"
|
||||
REGISTRY_USERNAME:
|
||||
description: "Username for OCI registry login"
|
||||
required: true
|
||||
IMAGE_TAG:
|
||||
description: "The image tag to deploy"
|
||||
REGISTRY_TOKEN:
|
||||
description: "Token for OCI registry login"
|
||||
required: true
|
||||
CONTAINER_NAME:
|
||||
description: "The container component to update"
|
||||
required: true
|
||||
VALUES_FILE:
|
||||
description: "The values file to use"
|
||||
default: "./helm/values.yaml"
|
||||
CHART_PATH:
|
||||
description: "Path to the Helm chart"
|
||||
default: "./helm"
|
||||
VALUES_FILE:
|
||||
description: "The values file to use"
|
||||
default: "./helm/values.yaml"
|
||||
IMAGE_PATH:
|
||||
description: "The registry path to the image (optional)"
|
||||
default: ""
|
||||
IMAGE_TAG:
|
||||
description: "The image tag to deploy (optional)"
|
||||
default: ""
|
||||
TAG_KEY:
|
||||
description: "Helm --set key for the image tag (e.g. deploy.api.tag)"
|
||||
default: ""
|
||||
|
||||
runs:
|
||||
using: composite
|
||||
steps:
|
||||
- name: Helm OCI Login
|
||||
shell: sh
|
||||
env:
|
||||
REGISTRY: ${{ inputs.REGISTRY }}
|
||||
REGISTRY_USERNAME: ${{ inputs.REGISTRY_USERNAME }}
|
||||
REGISTRY_TOKEN: ${{ inputs.REGISTRY_TOKEN }}
|
||||
run: |
|
||||
echo "$REGISTRY_TOKEN" | helm registry login "$REGISTRY" \
|
||||
--username "$REGISTRY_USERNAME" \
|
||||
--password-stdin
|
||||
|
||||
- name: Install Helm Diff
|
||||
shell: sh
|
||||
run: |
|
||||
helm plugin list | grep -q diff || helm plugin install https://github.com/databus23/helm-diff
|
||||
|
||||
- name: Helm Diff
|
||||
shell: sh
|
||||
env:
|
||||
DEPLOYMENT_NAME: ${{ inputs.DEPLOYMENT_NAME }}
|
||||
DEPLOYMENT_NAMESPACE: ${{ inputs.DEPLOYMENT_NAMESPACE }}
|
||||
CHART_PATH: ${{ inputs.CHART_PATH }}
|
||||
VALUES_FILE: ${{ inputs.VALUES_FILE }}
|
||||
IMAGE_PATH: ${{ inputs.IMAGE_PATH }}
|
||||
IMAGE_TAG: ${{ inputs.IMAGE_TAG }}
|
||||
TAG_KEY: ${{ inputs.TAG_KEY }}
|
||||
run: |
|
||||
CMD="helm diff upgrade ${{ inputs.DEPLOYMENT_NAME }} ${{ inputs.CHART_PATH }} -n ${{ inputs.DEPLOYMENT_NAMESPACE }} --values ${{ inputs.VALUES_FILE }} --set deploy.${{ inputs.CONTAINER_NAME }}.tag=${{ inputs.IMAGE_TAG }} --set image.repository=${{ inputs.IMAGE_PATH }} --context 5"
|
||||
echo "Running: $CMD"
|
||||
eval "$CMD"
|
||||
NAMESPACE="$DEPLOYMENT_NAMESPACE"
|
||||
if [ -z "$NAMESPACE" ]; then NAMESPACE="$DEPLOYMENT_NAME"; fi
|
||||
SET_FLAGS=""
|
||||
if [ -n "$TAG_KEY" ] && [ -n "$IMAGE_TAG" ]; then
|
||||
SET_FLAGS="$SET_FLAGS --set $TAG_KEY=$IMAGE_TAG"
|
||||
fi
|
||||
if [ -n "$IMAGE_PATH" ]; then
|
||||
SET_FLAGS="$SET_FLAGS --set image.repository=$IMAGE_PATH"
|
||||
fi
|
||||
helm dependency update "$CHART_PATH"
|
||||
helm diff upgrade "$DEPLOYMENT_NAME" "$CHART_PATH" -n "$NAMESPACE" --values "$VALUES_FILE" $SET_FLAGS --context 5
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
# Helm Upgrade Deployment Image
|
||||
|
||||
<!-- action-docs-description source="action.yml" -->
|
||||
## Description
|
||||
|
||||
Set the image for a deployment in a Kubernetes
|
||||
<!-- action-docs-description source="action.yml" -->
|
||||
|
||||
<!-- action-docs-inputs source="action.yml" -->
|
||||
## Inputs
|
||||
|
||||
| name | description | required | default |
|
||||
| --- | --- | --- | --- |
|
||||
| `DEPLOYMENT_NAME` | <p>The Kubernetes Deployment to update</p> | `true` | `""` |
|
||||
| `DEPLOYMENT_NAMESPACE` | <p>The Kubernetes namespace of the Deployment</p> | `true` | `""` |
|
||||
| `IMAGE_PATH` | <p>The registry path to the image</p> | `true` | `""` |
|
||||
| `IMAGE_TAG` | <p>The image tag to deploy</p> | `true` | `""` |
|
||||
| `CONTAINER_NAME` | <p>The container component to update</p> | `true` | `""` |
|
||||
| `VALUES_FILE` | <p>The values file to use</p> | `false` | `./helm/values.yaml` |
|
||||
| `CHART_PATH` | <p>Path to the Helm chart</p> | `false` | `./helm` |
|
||||
<!-- action-docs-inputs source="action.yml" -->
|
||||
|
||||
<!-- action-docs-runs source="action.yml" -->
|
||||
## Runs
|
||||
|
||||
This action is a `composite` action.
|
||||
<!-- action-docs-runs source="action.yml" -->
|
||||
@@ -1,34 +0,0 @@
|
||||
name: Helm Upgrade Deployment Image
|
||||
description: Set the image for a deployment in a Kubernetes
|
||||
inputs:
|
||||
DEPLOYMENT_NAME:
|
||||
description: "The Kubernetes Deployment to update"
|
||||
required: true
|
||||
DEPLOYMENT_NAMESPACE:
|
||||
description: "The Kubernetes namespace of the Deployment"
|
||||
required: true
|
||||
IMAGE_PATH:
|
||||
description: "The registry path to the image"
|
||||
required: true
|
||||
IMAGE_TAG:
|
||||
description: "The image tag to deploy"
|
||||
required: true
|
||||
CONTAINER_NAME:
|
||||
description: "The container component to update"
|
||||
required: true
|
||||
VALUES_FILE:
|
||||
description: "The values file to use"
|
||||
default: "./helm/values.yaml"
|
||||
CHART_PATH:
|
||||
description: "Path to the Helm chart"
|
||||
default: "./helm"
|
||||
|
||||
runs:
|
||||
using: composite
|
||||
steps:
|
||||
- name: Helm Set Image
|
||||
shell: sh
|
||||
run: |
|
||||
CMD="helm upgrade ${{ inputs.DEPLOYMENT_NAME }} ${{ inputs.CHART_PATH }} -n ${{ inputs.DEPLOYMENT_NAMESPACE }} --values ${{ inputs.VALUES_FILE }} --set deploy.${{ inputs.CONTAINER_NAME }}.tag=${{ inputs.IMAGE_TAG }} --set image.repository=${{ inputs.IMAGE_PATH }}"
|
||||
echo "Running: $CMD"
|
||||
eval "$CMD"
|
||||
@@ -11,13 +11,16 @@ Template a Helm chart for a deployment in a Kubernetes cluster
|
||||
|
||||
| name | description | required | default |
|
||||
| --- | --- | --- | --- |
|
||||
| `DEPLOYMENT_NAME` | <p>The Kubernetes Deployment to update</p> | `true` | `""` |
|
||||
| `DEPLOYMENT_NAMESPACE` | <p>The Kubernetes namespace of the Deployment</p> | `true` | `""` |
|
||||
| `IMAGE_PATH` | <p>The registry path to the image</p> | `true` | `""` |
|
||||
| `IMAGE_TAG` | <p>The image tag to deploy</p> | `true` | `""` |
|
||||
| `CONTAINER_NAME` | <p>The container component to update</p> | `true` | `""` |
|
||||
| `VALUES_FILE` | <p>The values file to use</p> | `false` | `./helm/values.yaml` |
|
||||
| `DEPLOYMENT_NAME` | <p>The Helm release name</p> | `true` | `""` |
|
||||
| `DEPLOYMENT_NAMESPACE` | <p>The Kubernetes namespace (defaults to DEPLOYMENT_NAME)</p> | `false` | `""` |
|
||||
| `REGISTRY` | <p>OCI registry hostname for helm dependency login</p> | `true` | `""` |
|
||||
| `REGISTRY_USERNAME` | <p>Username for OCI registry login</p> | `true` | `""` |
|
||||
| `REGISTRY_TOKEN` | <p>Token for OCI registry login</p> | `true` | `""` |
|
||||
| `CHART_PATH` | <p>Path to the Helm chart</p> | `false` | `./helm` |
|
||||
| `VALUES_FILE` | <p>The values file to use</p> | `false` | `./helm/values.yaml` |
|
||||
| `IMAGE_PATH` | <p>The registry path to the image (optional)</p> | `false` | `""` |
|
||||
| `IMAGE_TAG` | <p>The image tag to deploy (optional)</p> | `false` | `""` |
|
||||
| `TAG_KEY` | <p>Helm --set key for the image tag (e.g. deploy.api.tag)</p> | `false` | `""` |
|
||||
<!-- action-docs-inputs source="action.yml" -->
|
||||
|
||||
<!-- action-docs-runs source="action.yml" -->
|
||||
|
||||
+51
-15
@@ -2,33 +2,69 @@ name: Helm Template Deployment
|
||||
description: Template a Helm chart for a deployment in a Kubernetes cluster
|
||||
inputs:
|
||||
DEPLOYMENT_NAME:
|
||||
description: "The Kubernetes Deployment to update"
|
||||
description: "The Helm release name"
|
||||
required: true
|
||||
DEPLOYMENT_NAMESPACE:
|
||||
description: "The Kubernetes namespace of the Deployment"
|
||||
description: "The Kubernetes namespace (defaults to DEPLOYMENT_NAME)"
|
||||
default: ""
|
||||
REGISTRY:
|
||||
description: "OCI registry hostname for helm dependency login"
|
||||
required: true
|
||||
IMAGE_PATH:
|
||||
description: "The registry path to the image"
|
||||
REGISTRY_USERNAME:
|
||||
description: "Username for OCI registry login"
|
||||
required: true
|
||||
IMAGE_TAG:
|
||||
description: "The image tag to deploy"
|
||||
REGISTRY_TOKEN:
|
||||
description: "Token for OCI registry login"
|
||||
required: true
|
||||
CONTAINER_NAME:
|
||||
description: "The container component to update"
|
||||
required: true
|
||||
VALUES_FILE:
|
||||
description: "The values file to use"
|
||||
default: "./helm/values.yaml"
|
||||
CHART_PATH:
|
||||
description: "Path to the Helm chart"
|
||||
default: "./helm"
|
||||
VALUES_FILE:
|
||||
description: "The values file to use"
|
||||
default: "./helm/values.yaml"
|
||||
IMAGE_PATH:
|
||||
description: "The registry path to the image (optional)"
|
||||
default: ""
|
||||
IMAGE_TAG:
|
||||
description: "The image tag to deploy (optional)"
|
||||
default: ""
|
||||
TAG_KEY:
|
||||
description: "Helm --set key for the image tag (e.g. deploy.api.tag)"
|
||||
default: ""
|
||||
|
||||
runs:
|
||||
using: composite
|
||||
steps:
|
||||
- name: Helm OCI Login
|
||||
shell: sh
|
||||
env:
|
||||
REGISTRY: ${{ inputs.REGISTRY }}
|
||||
REGISTRY_USERNAME: ${{ inputs.REGISTRY_USERNAME }}
|
||||
REGISTRY_TOKEN: ${{ inputs.REGISTRY_TOKEN }}
|
||||
run: |
|
||||
echo "$REGISTRY_TOKEN" | helm registry login "$REGISTRY" \
|
||||
--username "$REGISTRY_USERNAME" \
|
||||
--password-stdin
|
||||
|
||||
- name: Helm Template
|
||||
shell: sh
|
||||
env:
|
||||
DEPLOYMENT_NAME: ${{ inputs.DEPLOYMENT_NAME }}
|
||||
DEPLOYMENT_NAMESPACE: ${{ inputs.DEPLOYMENT_NAMESPACE }}
|
||||
CHART_PATH: ${{ inputs.CHART_PATH }}
|
||||
VALUES_FILE: ${{ inputs.VALUES_FILE }}
|
||||
IMAGE_PATH: ${{ inputs.IMAGE_PATH }}
|
||||
IMAGE_TAG: ${{ inputs.IMAGE_TAG }}
|
||||
TAG_KEY: ${{ inputs.TAG_KEY }}
|
||||
run: |
|
||||
CMD="helm template ${{ inputs.DEPLOYMENT_NAME }} ${{ inputs.CHART_PATH }} -n ${{ inputs.DEPLOYMENT_NAMESPACE }} --values ${{ inputs.VALUES_FILE }} --set deploy.${{ inputs.CONTAINER_NAME }}.tag=${{ inputs.IMAGE_TAG }} --set image.repository=${{ inputs.IMAGE_PATH }}"
|
||||
echo "Running: $CMD"
|
||||
eval "$CMD"
|
||||
NAMESPACE="$DEPLOYMENT_NAMESPACE"
|
||||
if [ -z "$NAMESPACE" ]; then NAMESPACE="$DEPLOYMENT_NAME"; fi
|
||||
SET_FLAGS=""
|
||||
if [ -n "$TAG_KEY" ] && [ -n "$IMAGE_TAG" ]; then
|
||||
SET_FLAGS="$SET_FLAGS --set $TAG_KEY=$IMAGE_TAG"
|
||||
fi
|
||||
if [ -n "$IMAGE_PATH" ]; then
|
||||
SET_FLAGS="$SET_FLAGS --set image.repository=$IMAGE_PATH"
|
||||
fi
|
||||
helm dependency update "$CHART_PATH"
|
||||
helm template "$DEPLOYMENT_NAME" "$CHART_PATH" -n "$NAMESPACE" --values "$VALUES_FILE" $SET_FLAGS
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<!-- action-docs-description source="action.yml" -->
|
||||
## Description
|
||||
|
||||
Login to an OCI registry, update chart dependencies, and run helm upgrade for the chart in the current directory
|
||||
Login to an OCI registry, update chart dependencies, and run helm upgrade
|
||||
<!-- action-docs-description source="action.yml" -->
|
||||
|
||||
<!-- action-docs-inputs source="action.yml" -->
|
||||
@@ -11,12 +11,16 @@ Login to an OCI registry, update chart dependencies, and run helm upgrade for th
|
||||
|
||||
| name | description | required | default |
|
||||
| --- | --- | --- | --- |
|
||||
| `DEPLOYMENT_NAME` | <p>The Helm release name and target namespace</p> | `true` | `""` |
|
||||
| `DEPLOYMENT_NAME` | <p>The Helm release name</p> | `true` | `""` |
|
||||
| `DEPLOYMENT_NAMESPACE` | <p>The Kubernetes namespace (defaults to DEPLOYMENT_NAME)</p> | `false` | `""` |
|
||||
| `REGISTRY` | <p>OCI registry hostname for helm dependency login</p> | `true` | `""` |
|
||||
| `REGISTRY_USERNAME` | <p>Username for OCI registry login</p> | `true` | `""` |
|
||||
| `REGISTRY_TOKEN` | <p>Token for OCI registry login</p> | `true` | `""` |
|
||||
| `CHART_PATH` | <p>Path to the Helm chart</p> | `false` | `./helm` |
|
||||
| `VALUES_FILE` | <p>The values file to use</p> | `false` | `./helm/values.yaml` |
|
||||
| `IMAGE_PATH` | <p>The registry path to the image (optional)</p> | `false` | `""` |
|
||||
| `IMAGE_TAG` | <p>The image tag to deploy (optional)</p> | `false` | `""` |
|
||||
| `TAG_KEY` | <p>Helm --set key for the image tag (e.g. deploy.api.tag)</p> | `false` | `""` |
|
||||
<!-- action-docs-inputs source="action.yml" -->
|
||||
|
||||
<!-- action-docs-runs source="action.yml" -->
|
||||
|
||||
+39
-7
@@ -1,9 +1,12 @@
|
||||
name: Helm Upgrade
|
||||
description: Login to an OCI registry, update chart dependencies, and run helm upgrade for the chart in the current directory
|
||||
description: Login to an OCI registry, update chart dependencies, and run helm upgrade
|
||||
inputs:
|
||||
DEPLOYMENT_NAME:
|
||||
description: "The Helm release name and target namespace"
|
||||
description: "The Helm release name"
|
||||
required: true
|
||||
DEPLOYMENT_NAMESPACE:
|
||||
description: "The Kubernetes namespace (defaults to DEPLOYMENT_NAME)"
|
||||
default: ""
|
||||
REGISTRY:
|
||||
description: "OCI registry hostname for helm dependency login"
|
||||
required: true
|
||||
@@ -19,23 +22,52 @@ inputs:
|
||||
VALUES_FILE:
|
||||
description: "The values file to use"
|
||||
default: "./helm/values.yaml"
|
||||
IMAGE_PATH:
|
||||
description: "The registry path to the image (optional)"
|
||||
default: ""
|
||||
IMAGE_TAG:
|
||||
description: "The image tag to deploy (optional)"
|
||||
default: ""
|
||||
TAG_KEY:
|
||||
description: "Helm --set key for the image tag (e.g. deploy.api.tag)"
|
||||
default: ""
|
||||
|
||||
runs:
|
||||
using: composite
|
||||
steps:
|
||||
- name: Helm OCI Login
|
||||
shell: sh
|
||||
env:
|
||||
REGISTRY: ${{ inputs.REGISTRY }}
|
||||
REGISTRY_USERNAME: ${{ inputs.REGISTRY_USERNAME }}
|
||||
REGISTRY_TOKEN: ${{ inputs.REGISTRY_TOKEN }}
|
||||
run: |
|
||||
echo "${{ inputs.REGISTRY_TOKEN }}" | helm registry login ${{ inputs.REGISTRY }} \
|
||||
--username ${{ inputs.REGISTRY_USERNAME }} \
|
||||
echo "$REGISTRY_TOKEN" | helm registry login "$REGISTRY" \
|
||||
--username "$REGISTRY_USERNAME" \
|
||||
--password-stdin
|
||||
|
||||
- name: Helm Upgrade
|
||||
shell: sh
|
||||
env:
|
||||
DEPLOYMENT_NAME: ${{ inputs.DEPLOYMENT_NAME }}
|
||||
DEPLOYMENT_NAMESPACE: ${{ inputs.DEPLOYMENT_NAMESPACE }}
|
||||
CHART_PATH: ${{ inputs.CHART_PATH }}
|
||||
VALUES_FILE: ${{ inputs.VALUES_FILE }}
|
||||
IMAGE_PATH: ${{ inputs.IMAGE_PATH }}
|
||||
IMAGE_TAG: ${{ inputs.IMAGE_TAG }}
|
||||
TAG_KEY: ${{ inputs.TAG_KEY }}
|
||||
run: |
|
||||
helm dependency update ${{ inputs.CHART_PATH }}
|
||||
echo "Running: helm upgrade ${{ inputs.DEPLOYMENT_NAME }} ${{ inputs.CHART_PATH }} -n ${{ inputs.DEPLOYMENT_NAME }} --values ${{ inputs.VALUES_FILE }}"
|
||||
helm upgrade ${{ inputs.DEPLOYMENT_NAME }} ${{ inputs.CHART_PATH }} -n ${{ inputs.DEPLOYMENT_NAME }} --values ${{ inputs.VALUES_FILE }}
|
||||
NAMESPACE="$DEPLOYMENT_NAMESPACE"
|
||||
if [ -z "$NAMESPACE" ]; then NAMESPACE="$DEPLOYMENT_NAME"; fi
|
||||
SET_FLAGS=""
|
||||
if [ -n "$TAG_KEY" ] && [ -n "$IMAGE_TAG" ]; then
|
||||
SET_FLAGS="$SET_FLAGS --set $TAG_KEY=$IMAGE_TAG"
|
||||
fi
|
||||
if [ -n "$IMAGE_PATH" ]; then
|
||||
SET_FLAGS="$SET_FLAGS --set image.repository=$IMAGE_PATH"
|
||||
fi
|
||||
helm dependency update "$CHART_PATH"
|
||||
helm upgrade "$DEPLOYMENT_NAME" "$CHART_PATH" -n "$NAMESPACE" --values "$VALUES_FILE" $SET_FLAGS
|
||||
|
||||
- name: Remove kubeconfig
|
||||
if: always()
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
# infisical
|
||||
|
||||
Composite actions for Infisical secret management.
|
||||
|
||||
| action | description |
|
||||
| --- | --- |
|
||||
| [fetch-secret](fetch-secret/README.md) | Fetches a single secret value from Infisical using a machine identity token |
|
||||
@@ -24,7 +24,7 @@ inputs:
|
||||
default: "/"
|
||||
outputs:
|
||||
value:
|
||||
description: "The fetched secret value"
|
||||
description: "The fetched secret value (base64-encoded)"
|
||||
value: ${{ steps.fetch.outputs.value }}
|
||||
|
||||
runs:
|
||||
@@ -61,8 +61,11 @@ runs:
|
||||
exit 1
|
||||
fi
|
||||
|
||||
B64=$(printf '%s' "$VALUE" | base64 | tr -d '\n')
|
||||
echo "::add-mask::$B64"
|
||||
|
||||
DELIMITER="INFISICAL_EOF_$$"
|
||||
echo "value<<${DELIMITER}" >> "$GITHUB_OUTPUT"
|
||||
echo "$VALUE" >> "$GITHUB_OUTPUT"
|
||||
printf '%s\n' "$B64" >> "$GITHUB_OUTPUT"
|
||||
echo "${DELIMITER}" >> "$GITHUB_OUTPUT"
|
||||
echo "Successfully fetched secret '${{ inputs.SECRET_NAME }}'"
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
# infra
|
||||
|
||||
Composite actions for infrastructure management.
|
||||
|
||||
| action | description |
|
||||
| --- | --- |
|
||||
| [update_version](update_version/README.md) | Updates the service tag in the stat-tackler-infra releases/versions.yaml |
|
||||
@@ -0,0 +1,7 @@
|
||||
# kubectl
|
||||
|
||||
Composite actions for kubectl configuration.
|
||||
|
||||
| action | description |
|
||||
| --- | --- |
|
||||
| [configure](configure/README.md) | Configure kubectl for use with Kubernetes |
|
||||
@@ -2,7 +2,7 @@ name: Configure Kubectl
|
||||
description: Configure kubectl for use with Kubernetes
|
||||
inputs:
|
||||
K8S_CONFIG:
|
||||
description: "The RAW Kubernetes config"
|
||||
description: "The base64-encoded Kubernetes config"
|
||||
required: true
|
||||
K8S_NAMESPACE:
|
||||
description: "The K8S namespace"
|
||||
@@ -14,20 +14,21 @@ inputs:
|
||||
runs:
|
||||
using: composite
|
||||
steps:
|
||||
- name: Mask kubeconfig
|
||||
shell: sh
|
||||
env:
|
||||
K8S_CONFIG: ${{ inputs.K8S_CONFIG }}
|
||||
run: echo "::add-mask::$K8S_CONFIG"
|
||||
|
||||
- name: Configure kubectl
|
||||
shell: sh
|
||||
env:
|
||||
K8S_CONFIG: ${{ inputs.K8S_CONFIG }}
|
||||
run: |
|
||||
echo "Remove existing kubeconfig"
|
||||
echo "Configuring kubectl for context=${{ inputs.K8S_CONTEXT }} namespace=${{ inputs.K8S_NAMESPACE }}"
|
||||
rm -f ~/.kube/config
|
||||
|
||||
echo "Re-creating .kube directory"
|
||||
mkdir -p ~/.kube
|
||||
|
||||
echo "Set kubeconfig"
|
||||
echo "${{ inputs.K8S_CONFIG }}" > ~/.kube/config
|
||||
|
||||
echo "Set kubeconfig context"
|
||||
printf '%s' "$K8S_CONFIG" | base64 -d > ~/.kube/config
|
||||
kubectl config set-context ${{ inputs.K8S_CONTEXT }} --cluster=${{ inputs.K8S_CONTEXT }} --namespace=${{ inputs.K8S_NAMESPACE }}
|
||||
|
||||
echo "Use kubeconfig context ${{ inputs.K8S_CONTEXT }}"
|
||||
kubectl config use-context ${{ inputs.K8S_CONTEXT }}
|
||||
echo "kubectl configured successfully"
|
||||
|
||||
@@ -18,6 +18,7 @@ Install dependencies, build, and upload a build artifact
|
||||
| `ARTIFACT_PATH` | <p>Path to upload as the artifact</p> | `false` | `dist` |
|
||||
| `COPY_PRISMA_ENGINE` | <p>Copy the Prisma query engine binaries into the build directory</p> | `false` | `false` |
|
||||
| `WORKING_DIRECTORY` | <p>Working directory for install, build, and artifact steps</p> | `false` | `.` |
|
||||
| `UPLOAD_ARTIFACT` | <p>Whether to upload the build artifact</p> | `false` | `true` |
|
||||
<!-- action-docs-inputs source="action.yml" -->
|
||||
|
||||
<!-- action-docs-runs source="action.yml" -->
|
||||
|
||||
@@ -22,6 +22,9 @@ inputs:
|
||||
WORKING_DIRECTORY:
|
||||
description: "Working directory for install, build, and artifact steps"
|
||||
default: "."
|
||||
UPLOAD_ARTIFACT:
|
||||
description: "Whether to upload the build artifact"
|
||||
default: "true"
|
||||
|
||||
runs:
|
||||
using: composite
|
||||
@@ -56,6 +59,7 @@ runs:
|
||||
cp node_modules/.prisma/client/libquery_engine-* build/prisma/
|
||||
|
||||
- name: Upload Build Artifact
|
||||
if: inputs.UPLOAD_ARTIFACT != 'false'
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: ${{ inputs.ARTIFACT_NAME }}
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
# test
|
||||
|
||||
Composite actions for running tests.
|
||||
|
||||
| action | description |
|
||||
| --- | --- |
|
||||
| [npm](npm/README.md) | Install dependencies and run npm tests |
|
||||
@@ -8,6 +8,7 @@ Composite action: install dependencies and run an npm test script.
|
||||
|---|---|---|
|
||||
| `INSTALL_CMD` | Install command | `npm ci` |
|
||||
| `TEST_SCRIPT` | npm script to run (must exist in `package.json`) | `test` |
|
||||
| `TEST_ARGS` | Additional arguments passed after `--` to the test script | `` |
|
||||
| `WORKING_DIRECTORY` | Directory to run commands in | `.` |
|
||||
|
||||
## Usage
|
||||
@@ -18,6 +19,15 @@ Composite action: install dependencies and run an npm test script.
|
||||
TEST_SCRIPT: test:unit
|
||||
```
|
||||
|
||||
With extra args:
|
||||
|
||||
```yaml
|
||||
- uses: stat-tackler/stat-tackler-infra/test/npm@main
|
||||
with:
|
||||
TEST_SCRIPT: test:coverage
|
||||
TEST_ARGS: --silent --reporter=dot --test-timeout=30000
|
||||
```
|
||||
|
||||
### Common test scripts by project
|
||||
|
||||
| Project | Script | Runner |
|
||||
|
||||
+4
-1
@@ -8,6 +8,9 @@ inputs:
|
||||
TEST_SCRIPT:
|
||||
description: "npm script to run (must exist in package.json)"
|
||||
default: "test"
|
||||
TEST_ARGS:
|
||||
description: "Additional arguments to pass after -- to the test script"
|
||||
default: ""
|
||||
WORKING_DIRECTORY:
|
||||
description: "Directory to run commands in"
|
||||
default: "."
|
||||
@@ -37,4 +40,4 @@ runs:
|
||||
- name: Test
|
||||
shell: sh
|
||||
working-directory: ${{ inputs.WORKING_DIRECTORY }}
|
||||
run: npm run ${{ inputs.TEST_SCRIPT }}
|
||||
run: npm run ${{ inputs.TEST_SCRIPT }}${{ inputs.TEST_ARGS != '' && format(' -- {0}', inputs.TEST_ARGS) || '' }}
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
# trivy
|
||||
|
||||
Composite actions for Trivy vulnerability scanning.
|
||||
|
||||
| action | description |
|
||||
| --- | --- |
|
||||
| [image_scan](image_scan/README.md) | Scan a container image with Trivy |
|
||||
| [namespace_scan](namespace_scan/README.md) | Scan a Kubernetes namespace for vulnerabilities |
|
||||
Reference in New Issue
Block a user