Add initial files

This commit is contained in:
gitea_admin_user 2025-04-09 16:46:07 +00:00
commit cd63345875
3 changed files with 210 additions and 0 deletions

View File

@ -0,0 +1,188 @@
name: Continuous Deployment Workflow
on:
push:
paths:
- "deployment.json"
branches:
- '*'
branches-ignore:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v3
- name: Parse Deployment JSON
id: parse_deployment
run: |
deployment_json=$(cat deployment.json)
echo "namespace=$(echo "$deployment_json" | jq -r '.namespace')" >> $GITHUB_ENV
echo "name=$(echo "$deployment_json" | jq -r '.name')" >> $GITHUB_ENV
echo "repoName=$(echo "$deployment_json" | jq -r '.repoName')" >> $GITHUB_ENV
echo "branchName=$(echo "$deployment_json" | jq -r '.branchName')" >> $GITHUB_ENV
echo "version=$(echo "$deployment_json" | jq -r '.version')" >> $GITHUB_ENV
echo "shortVersion=\"$(echo "$deployment_json" | jq -r '.version' | cut -c1-10)\"" >> $GITHUB_ENV
echo "secrets=$(echo "$deployment_json" | jq -r '.environment.secrets[]' | paste -sd ",")" >> $GITHUB_ENV # Updated
echo "variables=$(echo "$deployment_json" | jq -r '.environment.variables[]' | paste -sd ",")" >> $GITHUB_ENV # Updated
echo "resources=$(echo "$deployment_json" | jq -c '.resources')" >> $GITHUB_ENV
- name: Generate values.yaml
env:
CI_USER: ${{ secrets.CI_USER }}
CI_USER_TOKEN: ${{ secrets.CI_USER_TOKEN }}
secrets: ${{ env.secrets }}
variables: ${{ env.variables }}
resources: ${{ env.resources }}
namespace: ${{ env.namespace }}
name: ${{ env.name }}
repoName: ${{ env.repoName }}
branchName: ${{ env.branchName }}
version: ${{ env.version }}
shortVersion: ${{ env.shortVersion }}
run: |
set -euo pipefail
echo "namespace: $namespace" > values.yaml
echo "name: $name" >> values.yaml
echo "repoName: $repoName" >> values.yaml
echo "branchName: $branchName" >> values.yaml
echo "version: $version" >> values.yaml
echo "shortVersion: $shortVersion" >> values.yaml
echo "environment:" >> values.yaml
# Process secrets
echo " secrets:" >> values.yaml
IFS=',' read -ra SECRET_NAMES <<< "$secrets"
for secret_name in "${SECRET_NAMES[@]}"; do
secret_value="${!secret_name}"
echo " - name: $secret_name" >> values.yaml
echo " value: \"$secret_value\"" >> values.yaml
done
# echo " - name: CI_USER" >> values.yaml
# echo " value: \"$CI_USER\"" >> values.yaml
# echo " - name: CI_USER_TOKEN" >> values.yaml
# echo " value: \"$CI_USER_TOKEN\"" >> values.yaml
# Process variables
# echo " variables:" >> values.yaml
# IFS=',' read -ra VARIABLE_NAMES <<< "$variables"
# for variable_name in "${VARIABLE_NAMES[@]}"; do
# variable_value="${!variable_name}" # Access the actual value dynamically
# echo " - name: $variable_name" >> values.yaml
# echo " value: \"$variable_value\"" >> values.yaml
# done
echo " variables:" >> values.yaml
echo " - name: REPO_NAME" >> values.yaml
echo " value: \"$repoName\"" >> values.yaml
echo " - name: BRANCH_NAME" >> values.yaml
echo " value: \"$branchName\"" >> values.yaml
echo " - name: VERSION" >> values.yaml
echo " value: \"$version\"" >> values.yaml
echo " - name: NAMESPACE" >> values.yaml
echo " value: \"$namespace\"" >> values.yaml
echo " - name: FLOWX_ENGINE_ADDRESS" >> values.yaml
echo " value: centurion-workflow-frontend.default.svc.cluster.local:7233" >> values.yaml
# Process resources
echo "resources:" >> values.yaml
echo "$resources" | jq -r '
. as $root |
" limits:\n cpu: \($root.limits.cpu)\n memory: \($root.limits.memory)\n requests:\n cpu: \($root.requests.cpu)\n memory: \($root.requests.memory)"
' >> values.yaml
echo "Generated values.yaml:"
cat values.yaml
- name: Install Helm
run: |
if ! command -v helm >/dev/null 2>&1; then
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
fi
- name: Ensure kubectl is Installed
run: |
if ! command -v kubectl >/dev/null 2>&1; then
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin/
fi
- name: Set Up Kubeconfig
run: |
echo "${{ secrets.KUBECONFIG_CONTENT }}" > kubeconfig
chmod 600 kubeconfig
export KUBECONFIG=$(pwd)/kubeconfig
kubectl config use-context ci-cd-user-context
echo "KUBECONFIG=$(pwd)/kubeconfig" >> $GITHUB_ENV
kubectl config view
- name: Deploy with Helm
env:
CI_USER: ${{ secrets.CI_USER }}
CI_USER_TOKEN: ${{ secrets.CI_USER_TOKEN }}
namespace: ${{ env.namespace }}
repoName: ${{ env.repoName }}
branchName: ${{ env.branchName }}
version: ${{ env.version }}
run: |
set -euo pipefail
# Sanitize and construct the release name
RELEASE_NAME=$(echo "${repoName}-${branchName}" | tr '_' '-' | tr '[:upper:]' '[:lower:]')
# Ensure the release name meets Helm's naming conventions
if ! echo "$RELEASE_NAME" | grep -Eq '^[a-z]([-a-z0-9]*[a-z0-9])?$'; then
echo "Error: Release name '$RELEASE_NAME' is invalid."
exit 1
fi
# Login to the OCI registry
echo "$CI_USER_TOKEN" | helm registry login centurion-version-control.default.svc.cluster.local:3000 \
--username "$CI_USER" --password-stdin --insecure
pwd
ls -l
chmod 644 values.yaml
yq eval values.yaml
# Pull the chart from the OCI registry
helm pull oci://centurion-version-control.default.svc.cluster.local:3000/centurion/helm/block-worker \
--version 0.1.4 \
--plain-http \
--untar
# helm upgrade --install "$RELEASE_NAME" \
# ./block-worker \
# --version 0.1.4 \
# --namespace "$namespace" \
# --values values.yaml \
# --plain-http \
# --debug \
# --wait \
# --create-namespace
# --timeout 300s
{
helm upgrade --install "$RELEASE_NAME" \
./block-worker \
--version 0.1.4 \
--namespace "$namespace" \
--values values.yaml \
--set imageRegistry.server="version-control.mcard.hudsondata.ai" \
--set imageRegistry.username="$CI_USER" \
--set imageRegistry.password="$CI_USER_TOKEN" \
--debug \
--atomic \
--create-namespace \
--timeout 150s
} || {
echo "Deployment failed. Cleaning up..."
helm uninstall "$RELEASE_NAME" -n "$namespace" --debug || true
kubectl delete all --selector "app.kubernetes.io/instance=$RELEASE_NAME" -n "$namespace" || true
exit 1
}

1
README.md Normal file
View File

@ -0,0 +1 @@
ReadMe

21
deployment.json Normal file
View File

@ -0,0 +1,21 @@
{
"namespace": "default",
"name": "name",
"version": "sha",
"repoName": "repoName",
"branchName": "branchName",
"environment": {
"secrets": [],
"variables": []
},
"resources": {
"limits": {
"cpu": "500m",
"memory": "512Mi"
},
"requests": {
"cpu": "250m",
"memory": "256Mi"
}
}
}