For development and testing, you can run Semaphore locally using Minikube:
-
Install and configure mkcert
mkcert -install mkcert '*.semaphore.localhost' -
Start Minikube
minikube start --cpus 8 --memory 16384 --profile semaphore minikube profile semaphore minikube ip # Note this IP for later minikube addons enable ingress minikube tunnel # Run in separate terminal
-
Install Emissary Ingress CRDs
kubectl apply -f https://app.getambassador.io/yaml/emissary/3.9.1/emissary-crds.yaml kubectl wait --timeout=90s --for=condition=available deployment emissary-apiext -n emissary-system -
Setup Helm
cd helm-chart && make helm.create && cd .. helm repo add ambassador https://app.getambassador.io helm repo add semaphore https://renderedtext.github.io/helm-charts
-
Configure and start
Update
skaffold.yamlwith your minikube IP and certificates:- Set
global.domain.ipto the output of minikube ip. - Set
ingress.ssl.crtandingress.ssl.keyto the contents of the .pem and .key files generated by mkcert.
skaffold dev # Initial startup takes 30-60 minutes depending on your machine - Set
-
Access Semaphore
# Get credentials kubectl get secret semaphore-authentication -n default -o jsonpath='{.data.ROOT_USER_EMAIL}' | base64 -d kubectl get secret semaphore-authentication -n default -o jsonpath='{.data.ROOT_USER_PASSWORD}' | base64 -d kubectl get secret semaphore-authentication -n default -o jsonpath='{.data.ROOT_USER_TOKEN}' | base64 -d
Open https://id.semaphore.localhost and log in!