microservices-demo/.github/workflows
2020-04-09 17:21:37 -07:00
..
ci.yml Improve smoke test (#319) 2020-04-09 17:21:37 -07:00
README.md GitHub Actions smoke tests (#288) 2020-02-21 15:26:03 -08:00

GitHub Actions Workflows

Setup

  • workloads run using GitHub self-hosted runners
  • project admins maintain a private Google Compute Engine VM for running tests
    • VM should be at least n1-standard-4 with 50GB persistent disk
    • instructions for setting up the VM can be found in repo settings under "Actions"
    • ⚠️ WARNING: VM should be set up with no GCP service account
      • external contributors could contribute malicious PRs to run code on our test VM. Ensure no service accounts or other secrets exist on the VM
      • An empty GCP project should be used for extra security
    • to set up dependencies, run the following commands:
      # install kubectl
      sudo apt-get install kubectl
      
      # install kind
      curl -Lo ./kind "https://github.com/kubernetes-sigs/kind/releases/download/v0.7.0/kind-$(uname)-amd64" && \
      chmod +x ./kind && \
      sudo mv ./kind /usr/local/bin
      
      # install skaffold
      curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/latest/skaffold-linux-amd64 && \
      chmod +x skaffold && \
      sudo mv skaffold /usr/local/bin
      
      # install docker
      sudo apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common && \
      curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add - && \
      sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" && \
      sudo apt update && \
      sudo apt install docker-ce && \
      sudo usermod -aG docker ${USER}
      
      # logout and back on
      exit
      
    • ensure GitHub Actions runs as background service:
      sudo /actions-runner/svc.sh install
      sudo /actions-runner/svc.sh start
      

Workflows

ci.yaml

Triggers

  • commits pushed to master
  • PRs to master
  • PRs to release/ branches

Actions

  • ensures kind cluster is running
  • builds all containers in src/
  • deploys local containers to kind
    • ensures all pods reach ready state
    • ensures HTTP request to frontend returns HTTP status 200
  • deploys manifests from /releases
    • ensures all pods reach ready state
    • ensures HTTP request to frontend returns HTTP status 200