Add initial files
This commit is contained in:
commit
cd63345875
188
.gitea/workflows/cd_workflows.yml
Normal file
188
.gitea/workflows/cd_workflows.yml
Normal 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
|
||||
}
|
||||
21
deployment.json
Normal file
21
deployment.json
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user