Skip to main content
Version: Community Edition v1.4 (latest)

Development Build

A development build is intended only for developers who want to run a Semaphore locally for test and development purposes. Do not use this installation method for production.

Requirements

Preparation

  1. Install and configure mkcert

    mkcert -install
    mkcert '*.semaphore.localhost'
  2. Start Minikube with 8 CPUs and 16 GB of RAM

    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
  3. 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
  4. 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

Install Semaphore

  1. Configure Skaffold

    Update skaffold.yaml with your minikube IP and certificates:

    • Set global.domain.ip to the output of minikube ip.
    • Set ingress.ssl.crt and ingress.ssl.key to the contents of the .pem and .key files generated by mkcert.
  2. Start Semaphore

    skaffold dev  # Initial startup takes 30-60 minutes depending on your machine
  3. Obtain login credentials

    # 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
  4. Open https://id.semaphore.localhost and log in

See also