Merge pull request #1 from rberrelleza/develop-on-okteto

Signed-off-by: Ramiro Berrelleza <rberrelleza@gmail.com>
This commit is contained in:
Ramiro Berrelleza 2020-09-09 17:25:31 -07:00
commit 175ce9ef4e
No known key found for this signature in database
GPG key ID: 8F443F5203A4B9A3
7 changed files with 88 additions and 88 deletions

View file

@ -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"

View file

@ -2,6 +2,11 @@
<img src="src/frontend/static/icons/Hipster_HeroLogoCyan.svg" width="300"/>
</p>
<p align="center">
<a href="https://okteto.sf.okteto.net/deploy">
<img src="https://okteto.com/develop-okteto.svg" alt="Develop on Okteto">
</a>
</p>
**Online Boutique** is a cloud-native microservices demo application.

8
kustomization.yaml Normal file
View file

@ -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

9
okteto-pipelines.yaml Normal file
View file

@ -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

View file

@ -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:

16
src/frontend/.stignore Normal file
View file

@ -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

21
src/frontend/okteto.yml Normal file
View file

@ -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