Skip to content

Commit

Permalink
init github action
Browse files Browse the repository at this point in the history
  • Loading branch information
ctr26 committed Aug 12, 2022
1 parent 81e46f6 commit 2c3843a
Show file tree
Hide file tree
Showing 32 changed files with 1,670 additions and 0 deletions.
44 changes: 44 additions & 0 deletions .github/workflows/helm-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name: Release Charts

on:
push:
branches:
- main

jobs:
release:
# depending on default permission settings for your org (contents being read-only or read-write for workloads), you will have to add permissions
# see: https://docs.github.com/en/actions/security-guides/automatic-token-authentication#modifying-the-permissions-for-the-github_token
permissions:
contents: write
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0

- name: Configure Git
run: |
git config user.name "$GITHUB_ACTOR"
git config user.email "[email protected]"
- name: Install Helm
uses: azure/setup-helm@v1
with:
version: v3.8.1
# https://hoetker.engineer/post/helm-github-workflow-dependency/
# This is bad practise, but it works for now. Chart-releaser
# should add the helm repos but doesn't
- name: Add Helm dependency repos
run: |
helm dependency update charts/hypha
helm repo add docker-registry https://helm.twun.io
helm repo add minio https://charts.min.io/
helm repo add redis https://charts.bitnami.com/bitnami
helm repo update
- name: Run chart-releaser
uses: helm/[email protected]
env:
CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
49 changes: 49 additions & 0 deletions .github/workflows/helm-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
name: Helm

on:
push:
branches:
- main
- master
pull_request: ~

jobs:
helm:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: KinD (Kubernetes in Docker) Action
uses: engineerd/[email protected]
- name: Testing
run: |
kubectl cluster-info
kubectl get pods -n kube-system
echo "current-context:" $(kubectl config current-context)
echo "environment-kubeconfig:" ${KUBECONFIG}
- name: kubectl
run: kubectl get pods -A
# - run: sudo apt-get update && sudo apt-get install iptables -y
# - uses: WyriHaximus/github-action-helm3@v2
- name: Install Helmsman
run: 'wget -c https://github.com/Praqma/helmsman/releases/download/v3.8.1/helmsman_3.8.1_linux_amd64.tar.gz -O - | tar -xz -C /usr/local/bin/'
# - run: which helmsman
# - run: ls /usr/local/bin/
- name: Install Helm
uses: azure/setup-helm@v1
with:
version: v3.7.1
# - uses: actions/setup-node@v2
# - uses: actions/setup-python@v2
- name: helm-diff
run: helm plugin install https://github.com/databus23/helm-diff
# - name: install helmsman
# run: 'curl -L https://github.com/Praqma/helmsman/releases/download/v3.8.1/helmsman_3.8.1_linux_amd64.tar.gz | tar zx && mv helmsman /usr/local/bin/helmsman'
# now you can run kubectl to see the pods in the cluster
- run: if [ -f "./Chart.lock" ]; then cat ./Chart.lock | grep repository | awk '{print $2}' | while read -r line ; do helm repo add $line $line; done; fi
- run: helm dependency build helm-chart/hypha
- run: helm install --dry-run --debug --generate-name helm-chart/hypha --dependency-update
- run: helm install --debug --generate-name helm-chart/hypha




2 changes: 2 additions & 0 deletions charts/.env
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
HOST_NAME=
SUB_PATH=
6 changes: 6 additions & 0 deletions charts/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
URLS:

141.80.173.40

https://hypha.imjoy.io/
https://staging-hypha.imjoy.io/
64 changes: 64 additions & 0 deletions charts/chartpress.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
charts:
# list of charts by name
# each name should be a directory containing a helm chart
- name: hypha
# the prefix to use for built images
imagePrefix: hypha/k8s-
# tag to use when resetting the chart values
# with the --reset flag. It defaults to "set-by-chartpress".
resetTag: latest
# version to use when resetting the Chart.yaml's version field with the
# --reset flag. It defaults to "0.0.1-set.by.chartpress". This is a valid
# SemVer 2 version, which is required for a helm lint command to succeed.
resetVersion: 1.2.3
# The git repo whose gh-pages contains the charts. This can be a local
# path such as "." as well but if matching <organization>/<repo> will be
# assumed to be a separate GitHub repository.
repo:
git: hypha/helm-chart
published: https://imjoy.github.io/helm-chart
# Additional paths that when modified should lead to an updated Chart.yaml
# version, other than the chart directory in <chart name> or any path that
# influence the images of the chart. These paths should be set relative to
# chartpress.yaml's directory.
# paths:
# - ../setup.py
# - ../binderhub
# # images to build for this chart (optional)
# # images:
# # hypha:
# # # imageName overrides the default name of the image. The default name
# # # is the imagePrefix augmented with the key of this configuration. It
# # # would be jupyterhub/k8s-binderhub in this case.
# # imageName: imjoy/hypha
# # # Build arguments to be passed using docker's --build-arg flag as
# # # --build-arg <key>=<value>. TAG and LAST_COMMIT are expandable.
# # # buildArgs:
# # # MY_STATIC_BUILD_ARG: "hello world"
# # # MY_DYNAMIC_BUILD_ARG: "{TAG}-{LAST_COMMIT}"
# # # contextPath is the path to the directory that is to be considered the
# # # current working directory during the build process of the Dockerfile.
# # # This is by default the folder of the Dockerfile. This path should be
# # # set relative to chartpress.yaml.
# # contextPath: ..
# # # By default, changes to the contextPath will make chartpress rebuild
# # # the image, but this option make that configurable.
# # rebuildOnContextPathChanges: false
# # # Path to the Dockerfile, relative to chartpress.yaml. Defaults to
# # # "images/<image name>/Dockerfile".
# # dockerfilePath: .../Dockerfile
# # # Path(s) in <chart name>/values.yaml to be updated with image name and
# # # tag.
# # # valuesPath:
# # # - singleuser.image
# # # - singleuser.profileList.0.kubespawner_override.image
# # # Additional paths, relative to chartpress.yaml's directory, that should
# # # be used to indicate that a new tag of the image is required, aside
# # # from the contextPath and dockerfilePath for building the image itself.
# # paths:
# # - assets
# # # If chartpress is used to build images for multiple architectures but
# # # not all of those architectures are supported by an image they can be
# # # skipped
# # skipPlatforms:
# # - linux/arm64
6 changes: 6 additions & 0 deletions charts/cr.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
owner: amun-ai
git-repo: helm-charts
package-path: .deploy
# token: 123456789
git-base-url: https://api.github.com/
git-upload-url: https://uploads.github.com/
188 changes: 188 additions & 0 deletions charts/denbi.helmsman.yaml.old
Original file line number Diff line number Diff line change
@@ -0,0 +1,188 @@
# version: v3.4.0

# context defines the context of this Desired State File.
# It is used to allow Helmsman identify which releases are managed by which DSF.
# Therefore, it is important that each DSF uses a unique context.
context: denbi # defaults to "production" if not provided

# metadata -- add as many key/value pairs as you want
metadata:
maintainer: "imjoy-team([email protected])"
description: "Desired State File for ImJoy App Engine K8s deploy"

# paths to the certificate for connecting to the cluster
# You can skip this if you use Helmsman on a machine with kubectl already connected to your k8s cluster.
# you have to use exact key names here : 'caCrt' for certificate and 'caKey' for the key and caClient for the client certificate
# certificates:
#caClient: "gs://mybucket/client.crt" # GCS bucket path
#caCrt: "s3://mybucket/ca.crt" # S3 bucket path
#caKey: "../ca.key" # valid local file relative path

helmRepos:
daskgateway: "https://dask.org/dask-gateway-helm-repo/"
jetstack: "https://charts.jetstack.io"
nginx-stable: "https://helm.nginx.com/stable"
ingress-nginx: "https://kubernetes.github.io/ingress-nginx"
# trow: "https://trow.io"
twuni: "https://helm.twun.io"
nvidia-triton: "https://helm.ngc.nvidia.com/nvidia"
triton: "https://ctr26.github.io/tritoninferenceserver/"
prometheus-community: "https://prometheus-community.github.io/helm-charts"
nvdp: "https://nvidia.github.io/k8s-device-plugin"
nvidia: "https://nvidia.github.io/gpu-operator"
minio-operator: "https://operator.min.io/"
minio: "https://charts.min.io/"

# imjoy: https://github.com/imjoy-team/imjoy-app-engine/charts

settings:
# kubeContext: "minikube" # will try connect to this context first, if it does not exist, it will be created using the details below
#username: "admin"
#password: "$K8S_PASSWORD" # the name of an environment variable containing the k8s password
#clusterURI: "$SET_URI" # the name of an environment variable containing the cluster API
#clusterURI: "https://192.168.99.100:8443" # equivalent to the above
#storageBackend: "secret"
#slackWebhook: "$slack" # or your slack webhook url
#reverseDelete: false # reverse the priorities on delete
#### to use bearer token:
# bearerToken: true
# clusterURI: "https://kubernetes.default"
# globalHooks:
# successCondition: "Initialized"
# deleteOnSuccess: true
# postInstall: "job.yaml"
# globalMaxHistory: 5

# define your environments and their k8s namespaces


# define any private/public helm charts repos you would like to get charts from
# syntax: repo_name: "repo_url"
# only private repos hosted in s3 buckets are now supported
# helmRepos:
# jetstack: "https://charts.jetstack.io"
# t83714: "https://t83714.github.io/docker-registry-mirror"
# define the desired state of your applications helm charts
# each contains the following:

apps:
# cert-manager:
# namespace: "cert-manager" # maps to the namespace as defined in namespaces above
# enabled: true # change to false if you want to delete this app release empty: false:
# chart: "jetstack/cert-manager" # changing the chart name means delete and recreate this chart
# version: "v1.3.1" # chart version
# ### Optional values below
# valuesFile: "" # leaving it empty uses the default chart values
# test: false
# # protected: false
# priority: -3
# wait: true
# hooks:
# successCondition: "Complete"
# successTimeout: "90s"
# deleteOnSuccess: true
# # preInstall: "https://github.com/jetstack/cert-manager/releases/download/v0.14.0/cert-manager.crds.yaml"
# set:
# "installCRDs": true

cert-manager:
name: "cert-manager"
chart: "jetstack/cert-manager"
enabled: false
priority: 0
# timeout: 120
version: "v1.4.2"
wait: true
group: "production"
namespace: "cert-manager"
set:
installCRDs: true
ingressShim.defaultIssuerKind: "ClusterIssuer"
ingressShim.defaultIssuerName: "letsencrypt-production"
hooks:
postUpgrade: "cert-managment/cluster_issuer/values.yaml"
postInstall: "cert-managment/cluster_issuer/values.yaml"

# docker-registry:
# name: "docker-registry"
# namespace: "docker-registry"
# chart: "twuni/docker-registry"
# group: "production"
# enabled: true
# version: "1.11.0"
# set:
# proxy:enabled: true
# proxy.username: "$CI_REGISTRY_USER"
# proxy.password: "$CI_REGISTRY_PASSWORD"
# valuesFiles:
# - docker-registry/values.yaml

imjoy-app-engine:
namespace: "imjoy-app-engine" # maps to the namespace as defined in namespaces above
enabled: false # change to false if you want to delete this app release empty: false:
chart: "imjoy-app-engine/imjoy-app-engine" # changing the chart name means delete and recreate this chart
version: "0.1.0" # chart version
group: "production"
# protected: false
### Optional values below
# valuesFile: ""
# test: false
# priority: -2
# noHooks: false
# timeout: 300
# maxHistory: 4
# additional helm flags for this release
# helmFlags:
# - "--devel"

tritoninferenceserver:
name: "tritoninferenceserver"
namespace: "tritoninferenceserver"
chart: "triton/tritoninferenceserver"
# chart: "nvidia-triton/tritoninferenceserver"
group: "production"
enabled: false
version: "1.0.1"
valuesFiles:
- tritoninferenceserver/values.yaml

nvidia-device-plugin:
name: "nvidia-device-plugin"
namespace: "nvidia-device-plugin"
chart: "nvdp/nvidia-device-plugin"
enabled: false
version: "0.10.0"
group: "production"

nvidia-gpu-operator:
name: "nvidia-gpu-operator"
namespace: "nvidia-gpu-operator"
chart: "nvidia/gpu-operator"
enabled: false
version: "1.8.2"
group: "production"

ingress-nginx:
name: "ingress-nginx"
namespace: "ingress-nginx"
chart: "ingress-nginx/ingress-nginx"
group: "production"
enabled: false
version: "3.35.0"
valuesFiles:
- ingress/nginx-ingress.yaml

# minio:
# name: "minio"
# namespace: "minio"
# chart: "minio/minio"
# group: "production"
# # wait: true
# enabled: false
# timeout: 4800
# version: "3.3.0"
# valuesFiles:
# - minio/values.yaml
# set:
# rootUser: rootuser
# rootPassword: rootpass123
24 changes: 24 additions & 0 deletions charts/hypha/.helmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*.orig
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/
*.ignore
Loading

0 comments on commit 2c3843a

Please sign in to comment.