diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ca15143..6243b34 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,80 +1,34 @@ -# Copyright 2020 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -name: "Continuous Integration" +# file: .github/workflows/preview.yaml on: - push: - # run on pushes to master or release/* - branches: - - master - - release/* pull_request: - # run on pull requests targeting master branches: - master + jobs: - run-tests: - runs-on: self-hosted + preview: + runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - name: License Check - run: | - set -x - git init - git add --all - git -c user.name="CI Bot" -c user.email="<>" commit -m "initial state" - addlicense ./ - test -z $(git diff --name-only | tee /dev/stderr) - - name: Setup Cluster - run: | - set -x - kind delete cluster || true - kind create cluster - kubectl get nodes - - name: Deploy From Source - run: | - skaffold config set --global local-cluster true - skaffold run --default-repo local - - name: Wait For Pods - timeout-minutes: 20 - run: | - set -x - kubectl wait --for=condition=available --timeout=500s deployment/adservice - kubectl wait --for=condition=available --timeout=500s deployment/cartservice - kubectl wait --for=condition=available --timeout=500s deployment/checkoutservice - kubectl wait --for=condition=available --timeout=500s deployment/currencyservice - kubectl wait --for=condition=available --timeout=500s deployment/emailservice - kubectl wait --for=condition=available --timeout=500s deployment/frontend - kubectl wait --for=condition=available --timeout=500s deployment/loadgenerator - kubectl wait --for=condition=available --timeout=500s deployment/paymentservice - kubectl wait --for=condition=available --timeout=500s deployment/productcatalogservice - kubectl wait --for=condition=available --timeout=500s deployment/recommendationservice - kubectl wait --for=condition=available --timeout=500s deployment/shippingservice - - name: Smoke Test - timeout-minutes: 5 - run: | - set -x - # start fresh loadgenerator pod - kubectl delete pod -l app=loadgenerator - # wait for requests to come in - REQUEST_COUNT="0" - while [[ "$REQUEST_COUNT" -lt "50" ]]; do - sleep 5 - REQUEST_COUNT=$(kubectl logs -l app=loadgenerator | grep Aggregated | awk '{print $2}') - done - # ensure there are no errors hitting endpoints - ERROR_COUNT=$(kubectl logs -l app=loadgenerator | grep Aggregated | awk '{print $3}' | sed "s/[(][^)]*[)]//g") - if [[ "$ERROR_COUNT" -gt "0" ]]; then - exit 1 - fi + - name: checkout + uses: actions/checkout@master + + - name: Login + uses: okteto/login@master + with: + token: ${{ secrets.OKTETO_TOKEN }} + + - name: Create namespace + uses: okteto/create-namespace@master + with: + namespace: pr-${{ github.event.number }} + + - name: Deploy Application + uses: okteto/pipeline@master + with: + name: pr-${{ github.event.number }} + + - name: comment PR + uses: unsplash/comment-on-pr@master + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + msg: "Preview environment available at https://frontend-pr-${{ github.event.number }}.sf.okteto.net" \ No newline at end of file diff --git a/README.md b/README.md index 358f868..db8c05c 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,11 @@

+

+ + Develop on Okteto + +

**Online Boutique** is a cloud-native microservices demo application. diff --git a/kustomization.yaml b/kustomization.yaml new file mode 100644 index 0000000..9436f51 --- /dev/null +++ b/kustomization.yaml @@ -0,0 +1,8 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: +- release/kubernetes-manifests.yaml +images: +- name: frontend + newName: okteto.dev/frontend + newTag: foo diff --git a/okteto-pipelines.yaml b/okteto-pipelines.yaml new file mode 100644 index 0000000..2af963c --- /dev/null +++ b/okteto-pipelines.yaml @@ -0,0 +1,9 @@ +icon: https://raw.githubusercontent.com/rberrelleza/microservices-demo/master/src/frontend/static/icons/Hipster_HeroLogoCyan.svg +deploy: + - okteto build -t okteto.dev/frontend:${OKTETO_GIT_COMMIT} src/frontend + - kustomize edit set image frontend=okteto.dev/frontend:${OKTETO_GIT_COMMIT} + - kustomize build --output release/kubernetes-manifests.yaml + - kubectl apply -f release/kubernetes-manifests.yaml + - kubectl annotate service frontend dev.okteto.com/auto-ingress=true --overwrite +devs: + - src/frontend/okteto.yml \ No newline at end of file diff --git a/release/kubernetes-manifests.yaml b/release/kubernetes-manifests.yaml index eb29927..906e7e7 100644 --- a/release/kubernetes-manifests.yaml +++ b/release/kubernetes-manifests.yaml @@ -215,7 +215,7 @@ spec: spec: containers: - name: server - image: gcr.io/google-samples/microservices-demo/frontend:v0.2.0 + image: frontend ports: - containerPort: 8080 readinessProbe: @@ -280,19 +280,6 @@ spec: port: 80 targetPort: 8080 --- -apiVersion: v1 -kind: Service -metadata: - name: frontend-external -spec: - type: LoadBalancer - selector: - app: frontend - ports: - - name: http - port: 80 - targetPort: 8080 ---- apiVersion: apps/v1 kind: Deployment metadata: diff --git a/src/frontend/.stignore b/src/frontend/.stignore new file mode 100644 index 0000000..e41f6e7 --- /dev/null +++ b/src/frontend/.stignore @@ -0,0 +1,16 @@ +.git +*.exe +*.exe~ +*.dll +*.so +*.dylib + +# Test binary, built with go test -c +*.test + +# Output of the go coverage tool, specifically when used with LiteIDE +*.out + +# dlv binary +__debug_bin +vendor \ No newline at end of file diff --git a/src/frontend/okteto.yml b/src/frontend/okteto.yml new file mode 100644 index 0000000..e2d3400 --- /dev/null +++ b/src/frontend/okteto.yml @@ -0,0 +1,21 @@ +name: frontend +image: ramiro/frontend:okteto +command: +- sh +workdir: /go/src/github.com/GoogleCloudPlatform/microservices-demo/src/frontend +forward: +- 2345:2345 +- 8080:8080 +volumes: +- /go/pkg/ +- /root/.cache/go-build/ +persistentVolume: + enabled: true +resources: + limits: + cpu: "1" + memory: 2Gi +securityContext: + capabilities: + add: + - SYS_PTRACE