Bläddra i källkod

[POR-997] Add CCP build to our preview env (#2831)

* add CCP build to our preview env
Mohammed Nafees 3 år sedan
förälder
incheckning
106023a42a
2 ändrade filer med 123 tillägg och 39 borttagningar
  1. 48 39
      .github/workflows/porter_preview_env.yml
  2. 75 0
      porter.yaml

+ 48 - 39
.github/workflows/porter_preview_env.yml

@@ -22,50 +22,59 @@ jobs:
   porter-preview:
     runs-on: ubuntu-latest
     steps:
-    - name: Checkout code
-      id: checkout-code
-      uses: actions/checkout@v3
-    - name: Create Porter preview env
-      id: preview
-      timeout-minutes: 30
-      uses: porter-dev/porter-preview-action@dev
-      with:
-        action_id: ${{ github.run_id }}
-        cluster: "2489"
-        host: https://dashboard.getporter.dev
-        installation_id: "18533943"
-        namespace: pr-${{ github.event.inputs.pr_number }}-porter
-        pr_branch_from: ${{ github.event.inputs.pr_branch_from }}
-        pr_branch_into: ${{ github.event.inputs.pr_branch_into }}
-        pr_id: ${{ github.event.inputs.pr_number }}
-        pr_name: ${{ github.event.inputs.pr_title }}
-        project: "6680"
-        repo_name: porter
-        repo_owner: porter-dev
-        token: ${{ secrets.PORTER_PREVIEW_6680_2489 }}
-    - name: Attach vcluster
-      run: |
-        sudo apt-get update
-        sudo apt-get install bash curl jq unzip
+      - name: Checkout monorepo code
+        id: checkout-monorepo-code
+        uses: actions/checkout@v3
+      - name: Checkout CCP code
+        id: checkout-ccp-code
+        uses: actions/checkout@v3
+        with:
+          repository: porter-dev/cluster-control-plane
+          token: ${{ secrets.PORTER_DEV_GITHUB_TOKEN }}
+          path: external/ccp
+      - name: Create Porter preview env
+        id: preview
+        timeout-minutes: 30
+        uses: porter-dev/porter-preview-action@dev
+        with:
+          action_id: ${{ github.run_id }}
+          cluster: "2489"
+          host: https://dashboard.getporter.dev
+          installation_id: "18533943"
+          namespace: pr-${{ github.event.inputs.pr_number }}-porter
+          pr_branch_from: ${{ github.event.inputs.pr_branch_from }}
+          pr_branch_into: ${{ github.event.inputs.pr_branch_into }}
+          pr_id: ${{ github.event.inputs.pr_number }}
+          pr_name: ${{ github.event.inputs.pr_title }}
+          project: "6680"
+          repo_name: porter
+          repo_owner: porter-dev
+          token: ${{ secrets.PORTER_PREVIEW_6680_2489 }}
+        env:
+          PORTER_APPLY_HONEYCOMB_PASSWORD: ${{ secrets.HONEYCOMB_PASSWORD_PREVIEW_ENVIRONMENTS }}
+      - name: Attach vcluster
+        run: |
+          sudo apt-get update
+          sudo apt-get install bash curl jq unzip
 
-        /bin/bash -c "$(curl -fsSL https://install.porter.run)"
+          /bin/bash -c "$(curl -fsSL https://install.porter.run)"
 
-        echo "$VCLUSTER_KUBECONFIG" > /tmp/vcluster_kubeconfig
+          echo "$VCLUSTER_KUBECONFIG" > /tmp/vcluster_kubeconfig
 
-        dashboard_domain=$(echo "$DOMAINS" | jq '.subdomains[] | select(test("porter-dashboard*"))')
-        dashboard_domain=$(sed -e 's/^"//' -e 's/"$//' <<<"$dashboard_domain")
+          dashboard_domain=$(echo "$DOMAINS" | jq '.subdomains[] | select(test("porter-dashboard*"))')
+          dashboard_domain=$(sed -e 's/^"//' -e 's/"$//' <<<"$dashboard_domain")
 
-        if [ -z "$dashboard_domain" ]; then
-          exit 1
-        fi
+          if [ -z "$dashboard_domain" ]; then
+            exit
+          fi
 
-        export PORTER_HOST="https://${dashboard_domain}"
+          export PORTER_HOST="https://${dashboard_domain}"
 
-        porter connect kubeconfig --kubeconfig /tmp/vcluster_kubeconfig
-      env:
-        PORTER_TOKEN: ${{ secrets.PREVIEW_DEPLOYMENT_PORTER_KEY }}
-        PORTER_PROJECT: 1
-        VCLUSTER_KUBECONFIG: ${{ secrets.VCLUSTER_KUBECONFIG }}
-        DOMAINS: ${{ steps.preview.outputs.domains  }}
+          porter connect kubeconfig --kubeconfig /tmp/vcluster_kubeconfig
+        env:
+          PORTER_TOKEN: ${{ secrets.PREVIEW_DEPLOYMENT_PORTER_KEY }}
+          PORTER_PROJECT: 1
+          VCLUSTER_KUBECONFIG: ${{ secrets.VCLUSTER_KUBECONFIG }}
+          DOMAINS: ${{ steps.preview.outputs.domains  }}
     concurrency:
       group: ${{ github.workflow }}-${{ github.event.inputs.pr_number }}

+ 75 - 0
porter.yaml

@@ -14,6 +14,13 @@ builds:
   env:
     import_from:
       - default/base-env
+- name: ccp
+  method: docker
+  dockerfile: ./external/ccp/zarf/docker/Dockerfile
+  context: ./external/ccp
+  env:
+    import_from:
+      - default/ccp-base-env
 
 apps:
 - name: setup-job
@@ -23,6 +30,22 @@ apps:
   helm_chart:
     name: job
   build_ref: job
+- name: porter-ccp
+  depends_on:
+    - postgres
+    - nats
+  helm_chart:
+    name: web
+  build_ref: ccp
+  helm_values:
+    ingress:
+      enabled: false
+    service:
+      port: 7833
+    container:
+      port: 7833
+      command: ccp
+      args: "start --server --all-consumers"
 - name: porter-dashboard
   depends_on:
     - postgres
@@ -49,3 +72,55 @@ addons:
     postgresqlUsername: postgres
     postgresqlPassword: postgres
     postgresqlDatabase: postgres
+- name: opentelemetry-collector
+  helm_chart:
+    name: opentelemetry-collector
+    url: https://open-telemetry.github.io/opentelemetry-helm-charts
+  helm_values:
+    mode: daemonset
+    config:
+      exporters:
+        otlp/honeycomb:
+          endpoint: api.honeycomb.io:443
+          headers:
+            x-honeycomb-team: p4Xkp5DeAOoDvwDCM7uJNH
+      receivers:
+        jaeger: null
+        otlp:
+          protocols:
+            http: null
+        prometheus: null
+        zipkin: null
+      service:
+        pipelines:
+          logs: null
+          metrics: null
+          traces:
+            exporters:
+              - otlp/honeycomb
+            processors:
+              - batch
+            receivers:
+              - otlp
+- name: nats
+  helm_chart:
+    name: nats
+    url: https://nats-io.github.io/k8s/helm/charts
+  helm_values:
+    cluster:
+      enabled: true
+      replicas: 3
+    nats:
+      jetstream:
+        enabled: true
+        memStorage:
+          enabled: true
+          size: 2Gi
+        fileStorage:
+          enabled: false
+    websocket:
+      enabled: true
+      port: 4223
+      noTLS: true
+    natsbox:
+      enabled: true