Apply validations
This commit is contained in:
113
1
Normal file
113
1
Normal file
@@ -0,0 +1,113 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
deployment.kubernetes.io/revision: "11"
|
||||||
|
labels:
|
||||||
|
app: medicalalert-web
|
||||||
|
name: medicalalert-web
|
||||||
|
namespace: medicalalert-web
|
||||||
|
spec:
|
||||||
|
progressDeadlineSeconds: 600
|
||||||
|
replicas: 3
|
||||||
|
revisionHistoryLimit: 10
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: medicalalert-web
|
||||||
|
strategy:
|
||||||
|
rollingUpdate:
|
||||||
|
maxSurge: 25%
|
||||||
|
maxUnavailable: 25%
|
||||||
|
type: RollingUpdate
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
kubectl.kubernetes.io/restartedAt: "2023-06-08T17:04:19-04:00"
|
||||||
|
creationTimestamp: null
|
||||||
|
labels:
|
||||||
|
app: medicalalert-web
|
||||||
|
spec:
|
||||||
|
affinity:
|
||||||
|
nodeAffinity:
|
||||||
|
requiredDuringSchedulingIgnoredDuringExecution:
|
||||||
|
nodeSelectorTerms:
|
||||||
|
- matchExpressions:
|
||||||
|
- key: kubernetes.io/arch
|
||||||
|
operator: In
|
||||||
|
values:
|
||||||
|
- amd64
|
||||||
|
- arm64
|
||||||
|
containers:
|
||||||
|
- env:
|
||||||
|
- name: ENVIRONMENT
|
||||||
|
value: "$ENV"
|
||||||
|
image: 716593996126.dkr.ecr.us-east-1.amazonaws.com/medicalalert-web:$VERSION
|
||||||
|
envFrom:
|
||||||
|
- secretRef:
|
||||||
|
name: medicalalert-web-secrets
|
||||||
|
- configMapRef:
|
||||||
|
name: medicalalert-web-cm
|
||||||
|
imagePullPolicy: Always
|
||||||
|
name: medicalalert-web
|
||||||
|
ports:
|
||||||
|
- containerPort: 80
|
||||||
|
name: http
|
||||||
|
protocol: TCP
|
||||||
|
startupProbe:
|
||||||
|
exec:
|
||||||
|
command:
|
||||||
|
- /root/redinessprobe-wp.sh
|
||||||
|
initialDelaySeconds: 90
|
||||||
|
periodSeconds: 10
|
||||||
|
timeoutSeconds: 10
|
||||||
|
failureThreshold: 5
|
||||||
|
successThreshold: 1
|
||||||
|
readinessProbe:
|
||||||
|
exec:
|
||||||
|
command:
|
||||||
|
- /bin/sh
|
||||||
|
- -c
|
||||||
|
- "wget -qO- 127.0.0.1/status |grep start && echo redinessprobe-success || exit 9"
|
||||||
|
initialDelaySeconds: 30
|
||||||
|
periodSeconds: 5
|
||||||
|
successThreshold: 1
|
||||||
|
failureThreshold: 5
|
||||||
|
timeoutSeconds: 10
|
||||||
|
livenessProbe:
|
||||||
|
tcpSocket:
|
||||||
|
port: 80
|
||||||
|
initialDelaySeconds: 5
|
||||||
|
periodSeconds: 5
|
||||||
|
successThreshold: 1
|
||||||
|
failureThreshold: 3
|
||||||
|
timeoutSeconds: 10
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpu: 500m
|
||||||
|
memory: 1024Mi
|
||||||
|
requests:
|
||||||
|
cpu: 300m
|
||||||
|
memory: 700Mi
|
||||||
|
terminationMessagePath: /dev/termination-log
|
||||||
|
terminationMessagePolicy: File
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /usr/share/nginx/subdomain/www/wp-content/uploads
|
||||||
|
name: persistent-storage
|
||||||
|
- mountPath: /etc/nginx/conf.d/
|
||||||
|
name: default-conf
|
||||||
|
dnsPolicy: ClusterFirst
|
||||||
|
imagePullSecrets:
|
||||||
|
- name: regcred
|
||||||
|
nodeSelector:
|
||||||
|
kubernetes.io/os: linux
|
||||||
|
restartPolicy: Always
|
||||||
|
schedulerName: default-scheduler
|
||||||
|
terminationGracePeriodSeconds: 30
|
||||||
|
volumes:
|
||||||
|
- name: persistent-storage
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: efs-claim-medicalalert
|
||||||
|
- name: default-conf
|
||||||
|
configMap:
|
||||||
|
defaultMode: 420
|
||||||
|
name: medicalalert-web-default-conf-cm
|
||||||
@@ -4,18 +4,44 @@ definitions:
|
|||||||
- name: VERSION
|
- name: VERSION
|
||||||
default: "latest"
|
default: "latest"
|
||||||
|
|
||||||
set-variables-jobs: &set-variables-jobs
|
set-variables-jobs: &set-variables-jobs-dev
|
||||||
- variables:
|
- variables:
|
||||||
- name: ENV
|
- name: ENV
|
||||||
default: "dev"
|
default: "dev"
|
||||||
allowed-values: # Optionally restrict variable values
|
allowed-values: # Optionally restrict variable values
|
||||||
- "dev"
|
- "dev"
|
||||||
|
- name: JOBNAME
|
||||||
|
default: "mysql-backup"
|
||||||
|
allowed-values: # Optionally restrict variable values
|
||||||
|
- "wp-auto-patch"
|
||||||
|
- "mysql-backup"
|
||||||
|
- "wp-data-backup"
|
||||||
|
- "mysql-restore"
|
||||||
|
- "wp-data-restore"
|
||||||
|
- name: SUBDOMAIN
|
||||||
|
default: dev01
|
||||||
|
allowed-values: # Optionally restrict variable values
|
||||||
|
- "dev01"
|
||||||
|
- "www"
|
||||||
|
- "dev02"
|
||||||
|
- "dev03"
|
||||||
|
- "dev04"
|
||||||
|
- "dev05"
|
||||||
|
- name: RESTORE_VERSION
|
||||||
|
default: "PASTE_RESTORE_VERSION_FILE_NAME"
|
||||||
|
|
||||||
|
set-variables-jobs: &set-variables-jobs
|
||||||
|
- variables:
|
||||||
|
- name: ENV
|
||||||
|
default: "qa"
|
||||||
|
allowed-values: # Optionally restrict variable values
|
||||||
- "qa"
|
- "qa"
|
||||||
- "stage"
|
- "stage"
|
||||||
- "prod"
|
- "prod"
|
||||||
- name: JOBNAME
|
- name: JOBNAME
|
||||||
default: "mysql-backup"
|
default: "mysql-backup"
|
||||||
allowed-values: # Optionally restrict variable values
|
allowed-values: # Optionally restrict variable values
|
||||||
|
- "wp-auto-patch"
|
||||||
- "mysql-backup"
|
- "mysql-backup"
|
||||||
- "wp-data-backup"
|
- "wp-data-backup"
|
||||||
- "mysql-restore"
|
- "mysql-restore"
|
||||||
@@ -24,14 +50,10 @@ definitions:
|
|||||||
default: www
|
default: www
|
||||||
allowed-values: # Optionally restrict variable values
|
allowed-values: # Optionally restrict variable values
|
||||||
- "www"
|
- "www"
|
||||||
- "dev01"
|
|
||||||
- "dev02"
|
|
||||||
- "dev03"
|
|
||||||
- "dev04"
|
|
||||||
- "dev05"
|
|
||||||
- name: RESTORE_VERSION
|
- name: RESTORE_VERSION
|
||||||
default: "PASTE_RESTORE_VERSION_FILE_NAME"
|
default: "PASTE_RESTORE_VERSION_FILE_NAME"
|
||||||
|
|
||||||
|
|
||||||
set-variables-subdomain: &set-variables-subdomain
|
set-variables-subdomain: &set-variables-subdomain
|
||||||
- variables:
|
- variables:
|
||||||
- name: ENV
|
- name: ENV
|
||||||
@@ -51,7 +73,6 @@ definitions:
|
|||||||
- name: STATIC_FILE_NAME
|
- name: STATIC_FILE_NAME
|
||||||
default: "STATIC_FILE_NAME_TO_DEPLOY"
|
default: "STATIC_FILE_NAME_TO_DEPLOY"
|
||||||
|
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- step: &deploy
|
- step: &deploy
|
||||||
name: deploy to $ENV environment
|
name: deploy to $ENV environment
|
||||||
@@ -63,8 +84,10 @@ definitions:
|
|||||||
- source setenv.sh
|
- source setenv.sh
|
||||||
- fi
|
- fi
|
||||||
- echo "This is for $ENV environment"
|
- echo "This is for $ENV environment"
|
||||||
|
- chmod 755 ./validation.sh && ./validation.sh default && echo validation-done || exit 9
|
||||||
- ls -lrth && cd build/${ENV}
|
- ls -lrth && cd build/${ENV}
|
||||||
- curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" && unzip awscliv2.zip && ./aws/install
|
- curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" && unzip awscliv2.zip && ./aws/install
|
||||||
|
- curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl && chmod +x ./kubectl && mv ./kubectl /usr/local/bin/kubectl
|
||||||
- export DB_PASSWORD=$(aws ssm get-parameters --names $ENV-medicalalert-masterdbpass --query "Parameters[*].{Value:Value}" --output text)
|
- export DB_PASSWORD=$(aws ssm get-parameters --names $ENV-medicalalert-masterdbpass --query "Parameters[*].{Value:Value}" --output text)
|
||||||
- export DB_PASSWORD=`echo -n "$DB_PASSWORD" | base64` && sed -i "/DB_PASSWORD/c\ DB_PASSWORD:\ $DB_PASSWORD" secrets.yaml
|
- export DB_PASSWORD=`echo -n "$DB_PASSWORD" | base64` && sed -i "/DB_PASSWORD/c\ DB_PASSWORD:\ $DB_PASSWORD" secrets.yaml
|
||||||
- envsubst < deployment.tpl > deployment.yaml
|
- envsubst < deployment.tpl > deployment.yaml
|
||||||
@@ -80,43 +103,45 @@ definitions:
|
|||||||
KUBECTL_ARGS: ""
|
KUBECTL_ARGS: ""
|
||||||
KUBECTL_APPLY_ARGS: "-f"
|
KUBECTL_APPLY_ARGS: "-f"
|
||||||
DEBUG: "true"
|
DEBUG: "true"
|
||||||
|
after-script:
|
||||||
|
- aws eks update-kubeconfig --name caresage-eks-cluster-$ENV --region us-east-1
|
||||||
|
- sleep 10 && while kubectl get po -A |egrep -i '0/1|crash'; do sleep 10; echo "--- still getting 0/1 or crash pods | fix the issue"; done
|
||||||
|
|
||||||
pipelines:
|
pipelines:
|
||||||
# our custom pipeline, what shows up Bitbucket web app
|
# our custom pipeline, what shows up Bitbucket web app
|
||||||
custom:
|
custom:
|
||||||
deploy-dev:
|
deploy-dev:
|
||||||
- !!merge <<: *set-variables
|
- <<: *set-variables
|
||||||
- step:
|
- step:
|
||||||
!!merge <<: *deploy
|
<<: *deploy
|
||||||
deployment: dev
|
deployment: dev
|
||||||
name: "deploy to dev"
|
name: "deploy to dev"
|
||||||
|
|
||||||
deploy-qa:
|
deploy-qa:
|
||||||
- !!merge <<: *set-variables
|
- <<: *set-variables
|
||||||
- step:
|
- step:
|
||||||
!!merge <<: *deploy
|
<<: *deploy
|
||||||
deployment: qa
|
deployment: qa
|
||||||
name: "deploy to qa"
|
name: "deploy to qa"
|
||||||
|
|
||||||
release-stg:
|
release-stg:
|
||||||
- !!merge <<: *set-variables
|
- <<: *set-variables
|
||||||
- step:
|
- step:
|
||||||
!!merge <<: *deploy
|
<<: *deploy
|
||||||
deployment: stage
|
deployment: stage
|
||||||
name: "deploy to stage"
|
name: "deploy to stage"
|
||||||
|
|
||||||
release-prod:
|
release-prod:
|
||||||
- !!merge <<: *set-variables
|
- <<: *set-variables
|
||||||
- step:
|
- step:
|
||||||
!!merge <<: *deploy
|
<<: *deploy
|
||||||
deployment: prod
|
deployment: prod
|
||||||
name: "deploy to prod"
|
name: "deploy to prod"
|
||||||
|
|
||||||
|
common-jobs-dev:
|
||||||
common-jobs:
|
- <<: *set-variables-jobs-dev
|
||||||
- !!merge <<: *set-variables-jobs
|
|
||||||
- step:
|
- step:
|
||||||
name: vars for common-jobs
|
name: vars for common-jobs-dev
|
||||||
script:
|
script:
|
||||||
- echo "export JOBNAME=$JOBNAME" >> setenv.sh
|
- echo "export JOBNAME=$JOBNAME" >> setenv.sh
|
||||||
- echo "export ENV=$ENV" >> setenv.sh
|
- echo "export ENV=$ENV" >> setenv.sh
|
||||||
@@ -125,6 +150,34 @@ pipelines:
|
|||||||
- echo "export RESTORE_VERSION=$RESTORE_VERSION" >> setenv.sh
|
- echo "export RESTORE_VERSION=$RESTORE_VERSION" >> setenv.sh
|
||||||
- echo "export SUBDOMAIN=$SUBDOMAIN" >> setenv.sh
|
- echo "export SUBDOMAIN=$SUBDOMAIN" >> setenv.sh
|
||||||
- echo "export BITBUCKET_REPO_SLUG=$BITBUCKET_REPO_SLUG" >> setenv.sh
|
- echo "export BITBUCKET_REPO_SLUG=$BITBUCKET_REPO_SLUG" >> setenv.sh
|
||||||
|
- echo "export TOKEN=$TOKEN" >> setenv.sh
|
||||||
|
artifacts: # define the artifacts to be passed to each future step
|
||||||
|
- setenv.sh
|
||||||
|
|
||||||
|
- step:
|
||||||
|
name: common jobs for SQL and WWW backup and restore DEV
|
||||||
|
image: atlassian/pipelines-awscli
|
||||||
|
script:
|
||||||
|
- source setenv.sh && chmod 755 ./common-jobs-bitbucket.sh
|
||||||
|
- if [ "$JOBNAME" = "mysql-restore" ] && [ "$SUBDOMAIN" = "www" ] ; then ./common-jobs-bitbucket.sh subdomain_deploy; fi
|
||||||
|
# - [[ "$SUBDOMAIN" != "www" ]] && [[ "$ENV" = "qa" || "$ENV" = "stage" || "$ENV" = "prod" ]] && exit || echo VALIDATION-PASS
|
||||||
|
- if [[ "$SUBDOMAIN" != "www" ]] && [[ "$ENV" = "qa" || "$ENV" = "stage" || "$ENV" = "prod" ]] ; then echo VALIDATION-FAIL && exit 9 ; else echo VALIDATION-PASS;fi
|
||||||
|
- ./common-jobs-bitbucket.sh $JOBNAME
|
||||||
|
|
||||||
|
|
||||||
|
common-jobs:
|
||||||
|
- <<: *set-variables-jobs
|
||||||
|
- step:
|
||||||
|
name: vars for common-jobs qa/stage/prod
|
||||||
|
script:
|
||||||
|
- echo "export JOBNAME=$JOBNAME" >> setenv.sh
|
||||||
|
- echo "export ENV=$ENV" >> setenv.sh
|
||||||
|
- echo "export CLUSTER=caresage-eks-cluster-$ENV" >> setenv.sh
|
||||||
|
- echo "export VERSION=$BITBUCKET_BUILD_NUMBER" >> setenv.sh
|
||||||
|
- echo "export RESTORE_VERSION=$RESTORE_VERSION" >> setenv.sh
|
||||||
|
- echo "export SUBDOMAIN=$SUBDOMAIN" >> setenv.sh
|
||||||
|
- echo "export BITBUCKET_REPO_SLUG=$BITBUCKET_REPO_SLUG" >> setenv.sh
|
||||||
|
- echo "export TOKEN=$TOKEN" >> setenv.sh
|
||||||
artifacts: # define the artifacts to be passed to each future step
|
artifacts: # define the artifacts to be passed to each future step
|
||||||
- setenv.sh
|
- setenv.sh
|
||||||
|
|
||||||
@@ -138,9 +191,8 @@ pipelines:
|
|||||||
- if [[ "$SUBDOMAIN" != "www" ]] && [[ "$ENV" = "qa" || "$ENV" = "stage" || "$ENV" = "prod" ]] ; then echo VALIDATION-FAIL && exit 9 ; else echo VALIDATION-PASS;fi
|
- if [[ "$SUBDOMAIN" != "www" ]] && [[ "$ENV" = "qa" || "$ENV" = "stage" || "$ENV" = "prod" ]] ; then echo VALIDATION-FAIL && exit 9 ; else echo VALIDATION-PASS;fi
|
||||||
- ./common-jobs-bitbucket.sh $JOBNAME
|
- ./common-jobs-bitbucket.sh $JOBNAME
|
||||||
|
|
||||||
|
|
||||||
subdomain-deploy:
|
subdomain-deploy:
|
||||||
- !!merge <<: *set-variables-subdomain
|
- <<: *set-variables-subdomain
|
||||||
- step:
|
- step:
|
||||||
name: vars for subdomain
|
name: vars for subdomain
|
||||||
script:
|
script:
|
||||||
@@ -153,6 +205,7 @@ pipelines:
|
|||||||
- echo "export MYSQL_FILE_NAME=$MYSQL_FILE_NAME" >> setenv.sh
|
- echo "export MYSQL_FILE_NAME=$MYSQL_FILE_NAME" >> setenv.sh
|
||||||
- echo "export STATIC_FILE_NAME=$STATIC_FILE_NAME" >> setenv.sh
|
- echo "export STATIC_FILE_NAME=$STATIC_FILE_NAME" >> setenv.sh
|
||||||
- echo "export BITBUCKET_REPO_SLUG=$BITBUCKET_REPO_SLUG" >> setenv.sh
|
- echo "export BITBUCKET_REPO_SLUG=$BITBUCKET_REPO_SLUG" >> setenv.sh
|
||||||
|
- echo "export TOKEN=$TOKEN" >> setenv.sh
|
||||||
artifacts:
|
artifacts:
|
||||||
- setenv.sh
|
- setenv.sh
|
||||||
|
|
||||||
@@ -187,11 +240,12 @@ pipelines:
|
|||||||
|
|
||||||
|
|
||||||
release:
|
release:
|
||||||
- !!merge <<: *set-variables
|
- <<: *set-variables
|
||||||
- step:
|
- step:
|
||||||
name: "plan for the release and tag the given version."
|
name: "plan for the release and tag the given version."
|
||||||
image: atlassian/pipelines-awscli
|
image: atlassian/pipelines-awscli
|
||||||
script:
|
script:
|
||||||
|
- chmod 755 ./validation.sh && ./validation.sh default
|
||||||
- echo "make sure that release version file and plan has been added to the release repo"
|
- echo "make sure that release version file and plan has been added to the release repo"
|
||||||
- source release
|
- source release
|
||||||
- export MANIFEST=$(aws ecr batch-get-image --repository-name medicalalert-web --image-ids imageTag=$VERSION --output json | jq --raw-output --join-output '.images[0].imageManifest')
|
- export MANIFEST=$(aws ecr batch-get-image --repository-name medicalalert-web --image-ids imageTag=$VERSION --output json | jq --raw-output --join-output '.images[0].imageManifest')
|
||||||
@@ -201,7 +255,7 @@ pipelines:
|
|||||||
artifacts: # define the artifacts to be passed to each future step
|
artifacts: # define the artifacts to be passed to each future step
|
||||||
- setenv.sh
|
- setenv.sh
|
||||||
- step:
|
- step:
|
||||||
!!merge <<: *deploy
|
<<: *deploy
|
||||||
deployment: stage
|
deployment: stage
|
||||||
name: "deploy the release to stage"
|
name: "deploy the release to stage"
|
||||||
trigger: manual
|
trigger: manual
|
||||||
@@ -214,7 +268,7 @@ pipelines:
|
|||||||
artifacts: # define the artifacts to be passed to each future step
|
artifacts: # define the artifacts to be passed to each future step
|
||||||
- setenv.sh
|
- setenv.sh
|
||||||
- step:
|
- step:
|
||||||
!!merge <<: *deploy
|
<<: *deploy
|
||||||
deployment: prod
|
deployment: prod
|
||||||
name: "deploy the release to production"
|
name: "deploy the release to production"
|
||||||
trigger: manual
|
trigger: manual
|
||||||
@@ -225,6 +279,7 @@ pipelines:
|
|||||||
name: build the application and push that to dev env.
|
name: build the application and push that to dev env.
|
||||||
image: atlassian/default-image:3
|
image: atlassian/default-image:3
|
||||||
script:
|
script:
|
||||||
|
- chmod 755 ./validation.sh && ./validation.sh default
|
||||||
- curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" && unzip awscliv2.zip && ./aws/install
|
- curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" && unzip awscliv2.zip && ./aws/install
|
||||||
- export BUILD_D=$BITBUCKET_BRANCH_$BITBUCKET_COMMIT_$BITBUCKET_BUILD_NUMBER
|
- export BUILD_D=$BITBUCKET_BRANCH_$BITBUCKET_COMMIT_$BITBUCKET_BUILD_NUMBER
|
||||||
- export IMAGE="medicalalert-web" && export VERSION=$BITBUCKET_BUILD_NUMBER
|
- export IMAGE="medicalalert-web" && export VERSION=$BITBUCKET_BUILD_NUMBER
|
||||||
@@ -251,7 +306,7 @@ pipelines:
|
|||||||
artifacts: # define the artifacts to be passed to each future step
|
artifacts: # define the artifacts to be passed to each future step
|
||||||
- setenv.sh
|
- setenv.sh
|
||||||
- step:
|
- step:
|
||||||
!!merge <<: *deploy
|
<<: *deploy
|
||||||
deployment: dev
|
deployment: dev
|
||||||
name: "deploy to dev"
|
name: "deploy to dev"
|
||||||
- step:
|
- step:
|
||||||
@@ -262,7 +317,7 @@ pipelines:
|
|||||||
artifacts:
|
artifacts:
|
||||||
- setenv.sh
|
- setenv.sh
|
||||||
- step:
|
- step:
|
||||||
!!merge <<: *deploy
|
<<: *deploy
|
||||||
deployment: qa
|
deployment: qa
|
||||||
name: "deploy to qa"
|
name: "deploy to qa"
|
||||||
trigger: manual
|
trigger: manual
|
||||||
|
|||||||
@@ -57,10 +57,10 @@ spec:
|
|||||||
exec:
|
exec:
|
||||||
command:
|
command:
|
||||||
- /root/redinessprobe-wp.sh
|
- /root/redinessprobe-wp.sh
|
||||||
initialDelaySeconds: 60
|
initialDelaySeconds: 90
|
||||||
periodSeconds: 15
|
periodSeconds: 10
|
||||||
timeoutSeconds: 30
|
timeoutSeconds: 10
|
||||||
failureThreshold: 10
|
failureThreshold: 5
|
||||||
successThreshold: 1
|
successThreshold: 1
|
||||||
readinessProbe:
|
readinessProbe:
|
||||||
exec:
|
exec:
|
||||||
@@ -68,19 +68,19 @@ spec:
|
|||||||
- /bin/sh
|
- /bin/sh
|
||||||
- -c
|
- -c
|
||||||
- "wget -qO- 127.0.0.1/status |grep start && echo redinessprobe-success || exit 9"
|
- "wget -qO- 127.0.0.1/status |grep start && echo redinessprobe-success || exit 9"
|
||||||
initialDelaySeconds: 120
|
initialDelaySeconds: 30
|
||||||
periodSeconds: 5
|
periodSeconds: 5
|
||||||
successThreshold: 1
|
successThreshold: 1
|
||||||
failureThreshold: 5
|
failureThreshold: 5
|
||||||
timeoutSeconds: 30
|
timeoutSeconds: 10
|
||||||
livenessProbe:
|
livenessProbe:
|
||||||
tcpSocket:
|
tcpSocket:
|
||||||
port: 80
|
port: 80
|
||||||
initialDelaySeconds: 2
|
initialDelaySeconds: 5
|
||||||
periodSeconds: 2
|
periodSeconds: 5
|
||||||
successThreshold: 1
|
successThreshold: 1
|
||||||
failureThreshold: 3
|
failureThreshold: 3
|
||||||
timeoutSeconds: 30
|
timeoutSeconds: 10
|
||||||
resources:
|
resources:
|
||||||
limits:
|
limits:
|
||||||
cpu: 500m
|
cpu: 500m
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ metadata:
|
|||||||
labels:
|
labels:
|
||||||
app: medicalalert-web
|
app: medicalalert-web
|
||||||
data:
|
data:
|
||||||
DB_HOST: medicalalert-ecommerce.c5om7w6xopq1.us-east-1.rds.amazonaws.com
|
DB_HOST: prod-medicalalert-ecommerce.c5om7w6xopq1.us-east-1.rds.amazonaws.com
|
||||||
ENV: qa
|
ENV: prod
|
||||||
WP_DEBUG: "false"
|
WP_DEBUG: "false"
|
||||||
DB_CHARSET: utf8
|
DB_CHARSET: utf8
|
||||||
DB_COLLATE: utf8_general_ci
|
DB_COLLATE: utf8_general_ci
|
||||||
|
|||||||
@@ -57,10 +57,10 @@ spec:
|
|||||||
exec:
|
exec:
|
||||||
command:
|
command:
|
||||||
- /root/redinessprobe-wp.sh
|
- /root/redinessprobe-wp.sh
|
||||||
initialDelaySeconds: 60
|
initialDelaySeconds: 90
|
||||||
periodSeconds: 15
|
periodSeconds: 10
|
||||||
timeoutSeconds: 30
|
timeoutSeconds: 10
|
||||||
failureThreshold: 10
|
failureThreshold: 5
|
||||||
successThreshold: 1
|
successThreshold: 1
|
||||||
readinessProbe:
|
readinessProbe:
|
||||||
exec:
|
exec:
|
||||||
@@ -68,19 +68,19 @@ spec:
|
|||||||
- /bin/sh
|
- /bin/sh
|
||||||
- -c
|
- -c
|
||||||
- "wget -qO- 127.0.0.1/status |grep start && echo redinessprobe-success || exit 9"
|
- "wget -qO- 127.0.0.1/status |grep start && echo redinessprobe-success || exit 9"
|
||||||
initialDelaySeconds: 120
|
initialDelaySeconds: 30
|
||||||
periodSeconds: 5
|
periodSeconds: 5
|
||||||
successThreshold: 1
|
successThreshold: 1
|
||||||
failureThreshold: 5
|
failureThreshold: 5
|
||||||
timeoutSeconds: 30
|
timeoutSeconds: 10
|
||||||
livenessProbe:
|
livenessProbe:
|
||||||
tcpSocket:
|
tcpSocket:
|
||||||
port: 80
|
port: 80
|
||||||
initialDelaySeconds: 2
|
initialDelaySeconds: 5
|
||||||
periodSeconds: 2
|
periodSeconds: 5
|
||||||
successThreshold: 1
|
successThreshold: 1
|
||||||
failureThreshold: 3
|
failureThreshold: 3
|
||||||
timeoutSeconds: 30
|
timeoutSeconds: 10
|
||||||
resources:
|
resources:
|
||||||
limits:
|
limits:
|
||||||
cpu: 500m
|
cpu: 500m
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ metadata:
|
|||||||
spec:
|
spec:
|
||||||
accessModes:
|
accessModes:
|
||||||
- ReadWriteMany
|
- ReadWriteMany
|
||||||
storageClassName: efs-sc-ecommerce
|
storageClassName: efs-sc-prod-ecommerce
|
||||||
resources:
|
resources:
|
||||||
requests:
|
requests:
|
||||||
storage: 5Gi
|
storage: 5Gi
|
||||||
|
|||||||
@@ -57,10 +57,10 @@ spec:
|
|||||||
exec:
|
exec:
|
||||||
command:
|
command:
|
||||||
- /root/redinessprobe-wp.sh
|
- /root/redinessprobe-wp.sh
|
||||||
initialDelaySeconds: 60
|
initialDelaySeconds: 90
|
||||||
periodSeconds: 15
|
periodSeconds: 10
|
||||||
timeoutSeconds: 30
|
timeoutSeconds: 10
|
||||||
failureThreshold: 10
|
failureThreshold: 5
|
||||||
successThreshold: 1
|
successThreshold: 1
|
||||||
readinessProbe:
|
readinessProbe:
|
||||||
exec:
|
exec:
|
||||||
@@ -68,19 +68,19 @@ spec:
|
|||||||
- /bin/sh
|
- /bin/sh
|
||||||
- -c
|
- -c
|
||||||
- "wget -qO- 127.0.0.1/status |grep start && echo redinessprobe-success || exit 9"
|
- "wget -qO- 127.0.0.1/status |grep start && echo redinessprobe-success || exit 9"
|
||||||
initialDelaySeconds: 120
|
initialDelaySeconds: 30
|
||||||
periodSeconds: 5
|
periodSeconds: 5
|
||||||
successThreshold: 1
|
successThreshold: 1
|
||||||
failureThreshold: 5
|
failureThreshold: 5
|
||||||
timeoutSeconds: 30
|
timeoutSeconds: 10
|
||||||
livenessProbe:
|
livenessProbe:
|
||||||
tcpSocket:
|
tcpSocket:
|
||||||
port: 80
|
port: 80
|
||||||
initialDelaySeconds: 2
|
initialDelaySeconds: 5
|
||||||
periodSeconds: 2
|
periodSeconds: 5
|
||||||
successThreshold: 1
|
successThreshold: 1
|
||||||
failureThreshold: 3
|
failureThreshold: 3
|
||||||
timeoutSeconds: 30
|
timeoutSeconds: 10
|
||||||
resources:
|
resources:
|
||||||
limits:
|
limits:
|
||||||
cpu: 500m
|
cpu: 500m
|
||||||
|
|||||||
@@ -53,6 +53,34 @@ spec:
|
|||||||
- containerPort: 80
|
- containerPort: 80
|
||||||
name: http
|
name: http
|
||||||
protocol: TCP
|
protocol: TCP
|
||||||
|
startupProbe:
|
||||||
|
exec:
|
||||||
|
command:
|
||||||
|
- /root/redinessprobe-wp.sh
|
||||||
|
initialDelaySeconds: 90
|
||||||
|
periodSeconds: 10
|
||||||
|
timeoutSeconds: 10
|
||||||
|
failureThreshold: 5
|
||||||
|
successThreshold: 1
|
||||||
|
readinessProbe:
|
||||||
|
exec:
|
||||||
|
command:
|
||||||
|
- /bin/sh
|
||||||
|
- -c
|
||||||
|
- "wget -qO- 127.0.0.1/status |grep start && echo redinessprobe-success || exit 9"
|
||||||
|
initialDelaySeconds: 30
|
||||||
|
periodSeconds: 5
|
||||||
|
successThreshold: 1
|
||||||
|
failureThreshold: 5
|
||||||
|
timeoutSeconds: 10
|
||||||
|
livenessProbe:
|
||||||
|
tcpSocket:
|
||||||
|
port: 80
|
||||||
|
initialDelaySeconds: 5
|
||||||
|
periodSeconds: 5
|
||||||
|
successThreshold: 1
|
||||||
|
failureThreshold: 3
|
||||||
|
timeoutSeconds: 10
|
||||||
resources:
|
resources:
|
||||||
limits:
|
limits:
|
||||||
cpu: 500m
|
cpu: 500m
|
||||||
|
|||||||
@@ -282,4 +282,13 @@ data:
|
|||||||
deny all;
|
deny all;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
location ~ ^/(status|ping)$ {
|
||||||
|
access_log off;
|
||||||
|
allow 127.0.0.1;
|
||||||
|
deny all;
|
||||||
|
include fastcgi_params;
|
||||||
|
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
|
||||||
|
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
exec > >(tee -a script.log) 2>&1
|
exec > >(tee -a script.log) 2>&1
|
||||||
|
|
||||||
|
|
||||||
# Install the required packages #
|
# Install the required packages #
|
||||||
# --------------------------------------------------------------
|
# --------------------------------------------------------------
|
||||||
apk upgrade && apk add curl wget zip unzip
|
apk upgrade && apk add curl wget zip unzip
|
||||||
@@ -10,17 +12,33 @@ curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s htt
|
|||||||
# ----------------------------------------------------------------------
|
# ----------------------------------------------------------------------
|
||||||
export NEW_URL=https://$URL_DOMAIN
|
export NEW_URL=https://$URL_DOMAIN
|
||||||
export CLUSTER=caresage-eks-cluster-$ENV
|
export CLUSTER=caresage-eks-cluster-$ENV
|
||||||
|
|
||||||
|
if [[ "$ENV" = "prod" ]] ; then
|
||||||
|
export APP=`echo $URL_DOMAIN | awk -F[.-] '{print $2}'`
|
||||||
|
else
|
||||||
export APP=`echo $URL_DOMAIN | awk -F[.-] '{print $3}'`
|
export APP=`echo $URL_DOMAIN | awk -F[.-] '{print $3}'`
|
||||||
|
fi
|
||||||
|
|
||||||
export NAMESPACE=$APP-web
|
export NAMESPACE=$APP-web
|
||||||
|
|
||||||
export REPO=$BITBUCKET_REPO_SLUG
|
export REPO=$BITBUCKET_REPO_SLUG
|
||||||
export REPLACE=`echo $NEW_URL | awk -F[./] '{print $4"."$5}'`
|
export REPLACE=`echo $NEW_URL | awk -F[./] '{print $4"."$5}'`
|
||||||
|
export MAIN_DOMAIN=`echo $NEW_URL | awk -F[./] '{print $4"."$5}'`
|
||||||
export URL_DOMAIN=$URL_DOMAIN
|
export URL_DOMAIN=$URL_DOMAIN
|
||||||
# ---------------------------
|
# ---------------------------
|
||||||
echo "export NEW_URL=https://$URL_DOMAIN" >> setenv.sh
|
echo "export NEW_URL=https://$URL_DOMAIN" >> setenv.sh
|
||||||
|
|
||||||
|
if [[ "$ENV" = "prod" ]] ; then
|
||||||
|
echo "export APP=`echo $URL_DOMAIN | awk -F[.-] '{print $2}'`" >> setenv.sh
|
||||||
|
else
|
||||||
echo "export APP=`echo $URL_DOMAIN | awk -F[.-] '{print $3}'`" >> setenv.sh
|
echo "export APP=`echo $URL_DOMAIN | awk -F[.-] '{print $3}'`" >> setenv.sh
|
||||||
|
fi
|
||||||
|
|
||||||
echo "export NAMESPACE=$APP-web" >> setenv.sh
|
echo "export NAMESPACE=$APP-web" >> setenv.sh
|
||||||
|
|
||||||
echo "export REPO=$BITBUCKET_REPO_SLUG" >> setenv.sh
|
echo "export REPO=$BITBUCKET_REPO_SLUG" >> setenv.sh
|
||||||
echo "export REPLACE=`echo $NEW_URL | awk -F[./] '{print $4"."$5}'`" >> setenv.sh
|
echo "export REPLACE=`echo $NEW_URL | awk -F[./] '{print $4"."$5}'`" >> setenv.sh
|
||||||
|
echo "export MAIN_DOMAIN=`echo $NEW_URL | awk -F[./] '{print $4"."$5}'`" >> setenv.sh
|
||||||
echo "export URL_DOMAIN=$URL_DOMAIN" >> setenv.sh
|
echo "export URL_DOMAIN=$URL_DOMAIN" >> setenv.sh
|
||||||
echo "export TOKEN=$TOKEN" >> setenv.sh
|
echo "export TOKEN=$TOKEN" >> setenv.sh
|
||||||
# ---------------------------------------------------------------
|
# ---------------------------------------------------------------
|
||||||
@@ -42,21 +60,37 @@ cat ./setenv.sh
|
|||||||
opt=$1
|
opt=$1
|
||||||
deploy_version=$2
|
deploy_version=$2
|
||||||
|
|
||||||
case $opt in
|
# Check if it is already running #
|
||||||
|
# -------------------------------------
|
||||||
|
aws eks update-kubeconfig --name caresage-eks-cluster-$ENV --region us-east-1
|
||||||
|
echo "common-job-pod will be deleted if already there and thus make sure you run single common job for a given repo"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
if ( kubectl get po -A | grep common-job-pod ) && [[ "$SUBDOMAIN" = "www" ]] ; then
|
||||||
|
echo "common-job-pod-running and maindomain is $URL_DOMAIN and common-job-pod will not be deleted"
|
||||||
|
else
|
||||||
|
kubectl get po -A | grep common-job-pod && kubectl delete po common-job-pod -n $NAMESPACE || echo "----common-job-pod-t0-be-created"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# validation checks #
|
||||||
|
#----------------------------------
|
||||||
|
#validation () { chmod 755 ./validation.sh && ./validation.sh; } && validation
|
||||||
|
|
||||||
|
case $opt in
|
||||||
|
|
||||||
wp-auto-patch)
|
wp-auto-patch)
|
||||||
|
|
||||||
|
# The auto patch to be executed for dev01 to be specific
|
||||||
|
# ----------------------------------------------------------
|
||||||
if [[ "$SUBDOMAIN" != "dev01" ]] ; then echo VALIDATION-NOPASS-AUTO-PATCH-IS-FOR-DEV01 && exit 9 ; else echo VALIDATION-PASS-AUTO-PATCH-IS-FOR-DEV01;fi
|
if [[ "$SUBDOMAIN" != "dev01" ]] ; then echo VALIDATION-NOPASS-AUTO-PATCH-IS-FOR-DEV01 && exit 9 ; else echo VALIDATION-PASS-AUTO-PATCH-IS-FOR-DEV01;fi
|
||||||
|
|
||||||
aws eks update-kubeconfig --name caresage-eks-cluster-$ENV --region us-east-1
|
aws eks update-kubeconfig --name caresage-eks-cluster-$ENV --region us-east-1
|
||||||
kubectl apply -f build/$ENV/pod.tpl && sleep 15
|
kubectl apply -f build/$ENV/pod.tpl && kubectl apply -f build/$ENV/pvc.yml && sleep 15
|
||||||
kubectl cp setenv.sh $NAMESPACE/common-job-pod:/tmp/setenv.sh
|
kubectl cp setenv.sh $NAMESPACE/common-job-pod:/tmp/setenv.sh
|
||||||
kubectl exec common-job-pod -n $NAMESPACE -- sh -c 'chmod 755 /tmp/setenv.sh'
|
kubectl exec common-job-pod -n $NAMESPACE -- sh -c 'chmod 755 /tmp/setenv.sh'
|
||||||
kubectl exec common-job-pod -n $NAMESPACE -- apt update
|
kubectl exec common-job-pod -n $NAMESPACE -- apt update
|
||||||
kubectl exec common-job-pod -n $NAMESPACE -- apt install wget zip unzip curl git rsync -y
|
kubectl exec common-job-pod -n $NAMESPACE -- apt install wget zip unzip curl git rsync -y
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------------------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
kubectl exec common-job-pod -n $NAMESPACE -- sh -c '. /tmp/setenv.sh;
|
kubectl exec common-job-pod -n $NAMESPACE -- sh -c '. /tmp/setenv.sh;
|
||||||
cd /tmp;
|
cd /tmp;
|
||||||
@@ -70,22 +104,29 @@ git add --all && git commit -m "auto-patch $VERSION-$ENV-$SUBDOMAIN-$(date +%Y-
|
|||||||
|
|
||||||
kubectl delete po common-job-pod -n $NAMESPACE
|
kubectl delete po common-job-pod -n $NAMESPACE
|
||||||
|
|
||||||
cat script.log | egrep -v -i "warning|SQL|create mode|rewrite" | egrep -i "fail|fatal|exception|terminated|command not found|error|unexpected|cannot access|No such file" && exit 9 || echo VALIDATION_PASS_$opt
|
cat script.log | egrep -v "SQL|rewrite|Rewrite|warning|Warning|create mode" | egrep -i "not in gzip format|fail|fatal|exception|terminated|command not found|error|unexpected|cannot access|No such file" && exit 9 || echo VALIDATION_PASS_$opt
|
||||||
|
|
||||||
;;
|
;;
|
||||||
|
|
||||||
subdomain_deploy)
|
subdomain_deploy)
|
||||||
|
|
||||||
echo "Deploy the wordpress source code fromo the branch to pvc mount of subdomain..."
|
echo "Deploy the wordpress source code from the branch to pvc mount of subdomain..."
|
||||||
|
|
||||||
aws eks update-kubeconfig --name caresage-eks-cluster-$ENV --region us-east-1
|
aws eks update-kubeconfig --name caresage-eks-cluster-$ENV --region us-east-1
|
||||||
kubectl apply -f build/$ENV/pod.tpl && sleep 15 && echo pod-created
|
echo "common-job-pod will be deleted if already there and thus make sure you run single common job for a given repo"
|
||||||
|
echo ""
|
||||||
|
kubectl get po -A | grep common-job-pod && kubectl delete po common-job-pod -n $NAMESPACE || echo ----common-job-pod-t0-be-created
|
||||||
|
|
||||||
|
|
||||||
|
kubectl apply -f build/$ENV/pod.tpl && kubectl apply -f build/$ENV/pvc.yml && sleep 15 && echo pod-created
|
||||||
|
|
||||||
kubectl cp wp $NAMESPACE/common-job-pod:/tmp && echo "wp copy to /tmp done" || exit 9
|
kubectl cp wp $NAMESPACE/common-job-pod:/tmp && echo "wp copy to /tmp done" || exit 9
|
||||||
kubectl cp setenv.sh $NAMESPACE/common-job-pod:/tmp/setenv.sh && echo "setenv copy done" || exit 9
|
kubectl cp setenv.sh $NAMESPACE/common-job-pod:/tmp/setenv.sh && echo "setenv copy done" || exit 9
|
||||||
kubectl exec common-job-pod -n $NAMESPACE -- sh -c 'chmod 755 /tmp/setenv.sh'
|
kubectl exec common-job-pod -n $NAMESPACE -- sh -c 'chmod 755 /tmp/setenv.sh'
|
||||||
kubectl exec common-job-pod -n $NAMESPACE -- sh -c '. /tmp/setenv.sh ; cp -rf /tmp/wp/* /usr/share/nginx/subdomain/$SUBDOMAIN/'
|
kubectl exec common-job-pod -n $NAMESPACE -- sh -c '. /tmp/setenv.sh ; cp -rf /tmp/wp/* /usr/share/nginx/subdomain/$SUBDOMAIN/'
|
||||||
echo $SUBDOMAIN | grep www && echo "maindomain $URL_DOMAIN" || kubectl delete po common-job-pod -n $NAMESPACE
|
echo $SUBDOMAIN | grep www && echo "maindomain $URL_DOMAIN" || kubectl delete po common-job-pod -n $NAMESPACE
|
||||||
|
|
||||||
cat script.log | egrep -v -i "warning|SQL|create mode|rewrite" | egrep -i "fail|fatal|exception|terminated|command not found|error|unexpected|cannot access|No such file" && exit 9 || echo VALIDATION_PASS_$opt
|
cat script.log | egrep -v "SQL|rewrite|Rewrite|warning|Warning|create mode" | egrep -i "not in gzip format|fail|fatal|exception|terminated|command not found|error|unexpected|cannot access|No such file" && exit 9 || echo VALIDATION_PASS_$opt
|
||||||
|
|
||||||
;;
|
;;
|
||||||
|
|
||||||
@@ -94,7 +135,7 @@ mysql-backup)
|
|||||||
|
|
||||||
echo "Running mysql backup with s3..."
|
echo "Running mysql backup with s3..."
|
||||||
aws eks update-kubeconfig --name caresage-eks-cluster-$ENV --region us-east-1
|
aws eks update-kubeconfig --name caresage-eks-cluster-$ENV --region us-east-1
|
||||||
kubectl apply -f build/$ENV/pod.tpl && sleep 15
|
kubectl apply -f build/$ENV/pod.tpl && kubectl apply -f build/$ENV/pvc.yml && sleep 15
|
||||||
|
|
||||||
kubectl cp setenv.sh $NAMESPACE/common-job-pod:/tmp/setenv.sh
|
kubectl cp setenv.sh $NAMESPACE/common-job-pod:/tmp/setenv.sh
|
||||||
kubectl exec common-job-pod -n $NAMESPACE -- sh -c 'chmod 755 /tmp/setenv.sh'
|
kubectl exec common-job-pod -n $NAMESPACE -- sh -c 'chmod 755 /tmp/setenv.sh'
|
||||||
@@ -113,14 +154,14 @@ curl --request POST -F files=@"$FILE" --url "https://api.bitbucket.org/2.0/repo
|
|||||||
|
|
||||||
kubectl delete po common-job-pod -n $NAMESPACE
|
kubectl delete po common-job-pod -n $NAMESPACE
|
||||||
|
|
||||||
cat script.log | egrep -v -i "warning|SQL|create mode|rewrite" | egrep -i "fail|fatal|exception|terminated|command not found|error|unexpected|cannot access|No such file" && exit 9 || echo VALIDATION_PASS_$opt
|
cat script.log | egrep -v "SQL|rewrite|Rewrite|warning|Warning|create mode" | egrep -i "not in gzip format|fail|fatal|exception|terminated|command not found|error|unexpected|cannot access|No such file" && exit 9 || echo VALIDATION_PASS_$opt
|
||||||
|
|
||||||
;;
|
;;
|
||||||
|
|
||||||
wp-data-backup)
|
wp-data-backup)
|
||||||
|
|
||||||
aws eks update-kubeconfig --name caresage-eks-cluster-$ENV --region us-east-1
|
aws eks update-kubeconfig --name caresage-eks-cluster-$ENV --region us-east-1
|
||||||
kubectl apply -f build/$ENV/pod.tpl && sleep 15
|
kubectl apply -f build/$ENV/pod.tpl && kubectl apply -f build/$ENV/pvc.yml && sleep 15
|
||||||
kubectl cp setenv.sh $NAMESPACE/common-job-pod:/tmp/setenv.sh
|
kubectl cp setenv.sh $NAMESPACE/common-job-pod:/tmp/setenv.sh
|
||||||
kubectl exec common-job-pod -n $NAMESPACE -- sh -c 'chmod 755 /tmp/setenv.sh'
|
kubectl exec common-job-pod -n $NAMESPACE -- sh -c 'chmod 755 /tmp/setenv.sh'
|
||||||
kubectl exec common-job-pod -n $NAMESPACE -- apt update
|
kubectl exec common-job-pod -n $NAMESPACE -- apt update
|
||||||
@@ -130,15 +171,13 @@ kubectl cp $NAMESPACE/common-job-pod:/tmp/upload.zip $NAMESPACE-$VERSION-$ENV-$S
|
|||||||
FILE=`ls $NAMESPACE-*.zip`
|
FILE=`ls $NAMESPACE-*.zip`
|
||||||
aws s3 cp $FILE s3://commonjobs/$NAMESPACE/$opt/
|
aws s3 cp $FILE s3://commonjobs/$NAMESPACE/$opt/
|
||||||
kubectl delete po common-job-pod -n $NAMESPACE
|
kubectl delete po common-job-pod -n $NAMESPACE
|
||||||
cat script.log | egrep -v -i "warning|SQL|create mode|rewrite" | egrep -i "fail|fatal|exception|terminated|command not found|error|unexpected|cannot access|No such file" && exit 9 || echo VALIDATION_PASS_$opt
|
cat script.log | egrep -v "SQL|rewrite|Rewrite|warning|Warning|create mode" | egrep -i "not in gzip format|fail|fatal|exception|terminated|command not found|error|unexpected|cannot access|No such file" && exit 9 || echo VALIDATION_PASS_$opt
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
mysql-restore)
|
mysql-restore)
|
||||||
|
|
||||||
aws eks update-kubeconfig --name caresage-eks-cluster-$ENV --region us-east-1
|
aws eks update-kubeconfig --name caresage-eks-cluster-$ENV --region us-east-1
|
||||||
kubectl apply -f build/$ENV/pod.tpl && sleep 15
|
kubectl apply -f build/$ENV/pod.tpl && kubectl apply -f build/$ENV/pvc.yml && sleep 15
|
||||||
kubectl cp setenv.sh $NAMESPACE/common-job-pod:/tmp/setenv.sh
|
kubectl cp setenv.sh $NAMESPACE/common-job-pod:/tmp/setenv.sh
|
||||||
kubectl exec common-job-pod -n $NAMESPACE -- sh -c 'chmod 755 /tmp/setenv.sh'
|
kubectl exec common-job-pod -n $NAMESPACE -- sh -c 'chmod 755 /tmp/setenv.sh'
|
||||||
|
|
||||||
@@ -152,7 +191,6 @@ kubectl exec common-job-pod -n $NAMESPACE -- apt install zip wget unzip curl mar
|
|||||||
curl -s -L -O -H "Authorization: Bearer $TOKEN" https://api.bitbucket.org/2.0/repositories/connectamerica/$REPO/downloads/$FILE && echo file_downloaded || aws s3 cp s3://commonjobs/$NAMESPACE/mysql-backup/$FILE $FILE
|
curl -s -L -O -H "Authorization: Bearer $TOKEN" https://api.bitbucket.org/2.0/repositories/connectamerica/$REPO/downloads/$FILE && echo file_downloaded || aws s3 cp s3://commonjobs/$NAMESPACE/mysql-backup/$FILE $FILE
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
kubectl cp $FILE $NAMESPACE/common-job-pod:/tmp/$FILE
|
kubectl cp $FILE $NAMESPACE/common-job-pod:/tmp/$FILE
|
||||||
|
|
||||||
#Create schema if not present #
|
#Create schema if not present #
|
||||||
@@ -161,29 +199,41 @@ kubectl exec common-job-pod -n $NAMESPACE -- sh -c '. /tmp/setenv.sh; mysql -h $
|
|||||||
kubectl exec common-job-pod -n $NAMESPACE -- sh -c '. /tmp/setenv.sh; export FILE=`ls /tmp/*.sql.gz` ; gunzip -c $FILE | mysql -h $DB_HOST --user=$DB_USER --password=$DB_PASSWORD $SUBDOMAIN'
|
kubectl exec common-job-pod -n $NAMESPACE -- sh -c '. /tmp/setenv.sh; export FILE=`ls /tmp/*.sql.gz` ; gunzip -c $FILE | mysql -h $DB_HOST --user=$DB_USER --password=$DB_PASSWORD $SUBDOMAIN'
|
||||||
kubectl exec common-job-pod -n $NAMESPACE -- sh -c 'wget https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar ; chmod u+x wp-cli.phar;mv wp-cli.phar /usr/local/bin/wp; php /usr/local/bin/wp --info'
|
kubectl exec common-job-pod -n $NAMESPACE -- sh -c 'wget https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar ; chmod u+x wp-cli.phar;mv wp-cli.phar /usr/local/bin/wp; php /usr/local/bin/wp --info'
|
||||||
|
|
||||||
|
|
||||||
# ----------------------------------------------------------------------------------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
kubectl exec common-job-pod -n $NAMESPACE -- sh -c '. /tmp/setenv.sh; OLD_URL=`wp option get siteurl --allow-root --path=/usr/share/nginx/subdomain/$SUBDOMAIN`; echo "export OLD_URL=$OLD_URL" >> /tmp/setenv.sh; echo "export FIND=$(echo $OLD_URL|cut -d. -f2,3)" >> /tmp/setenv.sh; echo "export OLD_URL_DOMAIN=$(echo $OLD_URL| cut -d/ -f3)" >> /tmp/setenv.sh '
|
kubectl exec common-job-pod -n $NAMESPACE -- sh -c '. /tmp/setenv.sh; OLD_URL=`wp option get siteurl --allow-root --path=/usr/share/nginx/subdomain/$SUBDOMAIN`; echo "export OLD_URL=$OLD_URL" >> /tmp/setenv.sh; echo "export FIND=$(echo $OLD_URL|cut -d. -f2,3)" >> /tmp/setenv.sh; echo "export OLD_MAIN_DOMAIN=$(echo $OLD_URL|cut -d. -f2,3)" >> /tmp/setenv.sh; echo "export OLD_URL_DOMAIN=$(echo $OLD_URL| cut -d/ -f3)" >> /tmp/setenv.sh; echo "export OLD_SUBDOMAIN=$(echo $OLD_URL| cut -d/ -f3|cut -d. -f1)" >> /tmp/setenv.sh'
|
||||||
|
# -----------------------------------------------------------------------------------------
|
||||||
kubectl exec common-job-pod -n $NAMESPACE -- sh -c 'cat /tmp/setenv.sh ; . /tmp/setenv.sh; wp search-replace --allow-root --path=/usr/share/nginx/subdomain/$SUBDOMAIN "$FIND" "$REPLACE" --all-tables'
|
kubectl cp $NAMESPACE/common-job-pod:/tmp/setenv.sh setenv.sh && . ./setenv.sh
|
||||||
|
# -----------------------------------------------------------------------------------------
|
||||||
kubectl exec common-job-pod -n $NAMESPACE -- sh -c '. /tmp/setenv.sh; OLD_URL=`wp option get siteurl --allow-root --path=/usr/share/nginx/subdomain/$SUBDOMAIN`; echo "export OLD_URL=$OLD_URL" >> /tmp/setenv.sh; echo "export FIND=$(echo $OLD_URL|cut -d. -f2,3)" >> /tmp/setenv.sh; echo "export OLD_URL_DOMAIN=$(echo $OLD_URL| cut -d/ -f3)" >> /tmp/setenv.sh '
|
if [[ "$OLD_SUBDOMAIN" = "www" ]] && [[ "$SUBDOMAIN" = "www" ]]; then
|
||||||
|
|
||||||
kubectl exec common-job-pod -n $NAMESPACE -- sh -c 'cat /tmp/setenv.sh ; . /tmp/setenv.sh; wp search-replace --allow-root --path=/usr/share/nginx/subdomain/$SUBDOMAIN "$OLD_URL_DOMAIN" "$URL_DOMAIN" --all-tables'
|
kubectl exec common-job-pod -n $NAMESPACE -- sh -c 'cat /tmp/setenv.sh ; . /tmp/setenv.sh; wp search-replace --allow-root --path=/usr/share/nginx/subdomain/$SUBDOMAIN "$OLD_URL_DOMAIN" "$URL_DOMAIN" --all-tables'
|
||||||
# --------------------------------------------------------------------------------------------
|
kubectl exec common-job-pod -n $NAMESPACE -- sh -c 'cat /tmp/setenv.sh ; . /tmp/setenv.sh; wp search-replace --allow-root --path=/usr/share/nginx/subdomain/$SUBDOMAIN ".$OLD_MAIN_DOMAIN" ".$MAIN_DOMAIN" --all-tables'
|
||||||
|
|
||||||
|
elif [[ "$OLD_SUBDOMAIN" = "www" ]] && [[ "$SUBDOMAIN" != "www" ]]; then
|
||||||
|
kubectl exec common-job-pod -n $NAMESPACE -- sh -c 'cat /tmp/setenv.sh ; . /tmp/setenv.sh; wp search-replace --allow-root --path=/usr/share/nginx/subdomain/$SUBDOMAIN "$OLD_URL_DOMAIN" "$URL_DOMAIN" --all-tables'
|
||||||
|
kubectl exec common-job-pod -n $NAMESPACE -- sh -c 'cat /tmp/setenv.sh ; . /tmp/setenv.sh; wp search-replace --allow-root --path=/usr/share/nginx/subdomain/$SUBDOMAIN ".$OLD_MAIN_DOMAIN" ".$URL_DOMAIN" --all-tables'
|
||||||
|
|
||||||
|
elif [[ "$OLD_SUBDOMAIN" != "www" ]] && [[ "$SUBDOMAIN" = "www" ]]; then
|
||||||
|
kubectl exec common-job-pod -n $NAMESPACE -- sh -c 'cat /tmp/setenv.sh ; . /tmp/setenv.sh; wp search-replace --allow-root --path=/usr/share/nginx/subdomain/$SUBDOMAIN ".$OLD_URL_DOMAIN" ".$MAIN_DOMAIN" --all-tables'
|
||||||
|
kubectl exec common-job-pod -n $NAMESPACE -- sh -c 'cat /tmp/setenv.sh ; . /tmp/setenv.sh; wp search-replace --allow-root --path=/usr/share/nginx/subdomain/$SUBDOMAIN "$OLD_URL_DOMAIN" "$URL_DOMAIN" --all-tables'
|
||||||
|
|
||||||
|
elif [[ "$OLD_SUBDOMAIN" != "www" ]] && [[ "$SUBDOMAIN" != "www" ]]; then
|
||||||
|
kubectl exec common-job-pod -n $NAMESPACE -- sh -c 'cat /tmp/setenv.sh ; . /tmp/setenv.sh; wp search-replace --allow-root --path=/usr/share/nginx/subdomain/$SUBDOMAIN "$OLD_URL_DOMAIN" "$URL_DOMAIN" --all-tables'
|
||||||
|
|
||||||
|
else
|
||||||
|
echo "======== fix the issues ============="
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ----------------------------------------------------------------------------------------------------------------------------------------
|
||||||
kubectl exec common-job-pod -n $NAMESPACE -- sh -c '. /tmp/setenv.sh; wp search-replace --allow-root --path=/usr/share/nginx/subdomain/$SUBDOMAIN "http://$URL_DOMAIN" "$NEW_URL" --all-tables'
|
kubectl exec common-job-pod -n $NAMESPACE -- sh -c '. /tmp/setenv.sh; wp search-replace --allow-root --path=/usr/share/nginx/subdomain/$SUBDOMAIN "http://$URL_DOMAIN" "$NEW_URL" --all-tables'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
kubectl delete po common-job-pod -n $NAMESPACE
|
kubectl delete po common-job-pod -n $NAMESPACE
|
||||||
|
|
||||||
cat script.log | egrep -v -i "warning|SQL|create mode|rewrite" | egrep -i "fail|fatal|exception|terminated|command not found|error|unexpected|cannot access|No such file" && exit 9 || echo VALIDATION_PASS_$opt
|
cat script.log | egrep -v "SQL|rewrite|Rewrite|warning|Warning|create mode" | egrep -i "not in gzip format|fail|fatal|exception|terminated|command not found|error|unexpected|cannot access|No such file" && exit 9 || echo VALIDATION_PASS_$opt
|
||||||
;;
|
;;
|
||||||
|
|
||||||
wp-data-restore)
|
wp-data-restore)
|
||||||
aws eks update-kubeconfig --name caresage-eks-cluster-$ENV --region us-east-1
|
aws eks update-kubeconfig --name caresage-eks-cluster-$ENV --region us-east-1
|
||||||
kubectl apply -f build/$ENV/pod.tpl && sleep 60 || exit 9
|
kubectl apply -f build/$ENV/pod.tpl && kubectl apply -f build/$ENV/pvc.yml && sleep 15
|
||||||
kubectl get po common-job-pod -n $NAMESPACE | grep -i pending && exit 9 || echo ----common-pod-NOT-in-pending-state --
|
kubectl get po common-job-pod -n $NAMESPACE | grep -i pending && exit 9 || echo ----common-pod-NOT-in-pending-state --
|
||||||
|
|
||||||
kubectl cp setenv.sh $NAMESPACE/common-job-pod:/tmp/setenv.sh
|
kubectl cp setenv.sh $NAMESPACE/common-job-pod:/tmp/setenv.sh
|
||||||
@@ -198,7 +248,7 @@ kubectl cp $FILE $NAMESPACE/common-job-pod:/tmp/$FILE
|
|||||||
kubectl exec common-job-pod -n $NAMESPACE -- sh -c '. /tmp/setenv.sh; mkdir -p /usr/share/nginx/subdomain/$SUBDOMAIN/wp-content/uploads'
|
kubectl exec common-job-pod -n $NAMESPACE -- sh -c '. /tmp/setenv.sh; mkdir -p /usr/share/nginx/subdomain/$SUBDOMAIN/wp-content/uploads'
|
||||||
kubectl exec common-job-pod -n $NAMESPACE -- sh -c '. /tmp/setenv.sh;export FILE=`ls /tmp/*.zip`;unzip -o $FILE -d /usr/share/nginx/subdomain/$SUBDOMAIN/wp-content/uploads'
|
kubectl exec common-job-pod -n $NAMESPACE -- sh -c '. /tmp/setenv.sh;export FILE=`ls /tmp/*.zip`;unzip -o $FILE -d /usr/share/nginx/subdomain/$SUBDOMAIN/wp-content/uploads'
|
||||||
kubectl delete po common-job-pod -n $NAMESPACE
|
kubectl delete po common-job-pod -n $NAMESPACE
|
||||||
cat script.log | egrep -v -i "warning|SQL|create mode|rewrite" | egrep -i "fail|fatal|exception|terminated|command not found|error|unexpected|cannot access|No such file" && exit 9 || echo VALIDATION_PASS_$opt
|
cat script.log | egrep -v "SQL|rewrite|Rewrite|warning|Warning|create mode" | egrep -i "not in gzip format|fail|fatal|exception|terminated|command not found|error|unexpected|cannot access|No such file" && exit 9 || echo VALIDATION_PASS_$opt
|
||||||
|
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
|||||||
83
validation.sh
Normal file
83
validation.sh
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
export DIR=`pwd`
|
||||||
|
exec > >(tee -a $DIR/script.log) 2>&1
|
||||||
|
|
||||||
|
function install {
|
||||||
|
|
||||||
|
# kubectl
|
||||||
|
# ----------------
|
||||||
|
curl -fsSLO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
|
||||||
|
chmod +x ./kubectl
|
||||||
|
mv ./kubectl /usr/local/bin/kubectl
|
||||||
|
# setenv
|
||||||
|
# -----------
|
||||||
|
. ./setenv.sh
|
||||||
|
|
||||||
|
# krew
|
||||||
|
# ---------
|
||||||
|
set -x; cd "$(mktemp -d)" &&
|
||||||
|
OS="$(uname | tr '[:upper:]' '[:lower:]')" &&
|
||||||
|
ARCH="$(uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/')" &&
|
||||||
|
KREW="krew-${OS}_${ARCH}" &&
|
||||||
|
curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/${KREW}.tar.gz" &&
|
||||||
|
tar zxvf "${KREW}.tar.gz" &&
|
||||||
|
./"${KREW}" install krew &&
|
||||||
|
export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH" >> ~/.bashrc && . ~/.bashrc
|
||||||
|
|
||||||
|
# kubeval
|
||||||
|
# -------------------
|
||||||
|
curl -fsSLO https://github.com/instrumenta/kubeval/releases/latest/download/kubeval-linux-amd64.tar.gz
|
||||||
|
tar xf kubeval-linux-amd64.tar.gz &&
|
||||||
|
cp kubeval /usr/local/bin
|
||||||
|
|
||||||
|
# kube-score
|
||||||
|
# ---------------
|
||||||
|
kubectl krew install score
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
install
|
||||||
|
|
||||||
|
default () {
|
||||||
|
|
||||||
|
cd $DIR/build
|
||||||
|
find . -type f -exec kubeval '{}' \; | tee -a $DIR/script.log
|
||||||
|
|
||||||
|
find . -type f -exec kubectl score --output-format ci '{}' \; | tee -a $DIR/script.log
|
||||||
|
|
||||||
|
cat $DIR/script.log | egrep -v -i "script.log|warning|SQL|create mode|rewrite" | egrep -i "fail|fatal|exception|terminated|command not found|error|unexpected|cannot access|No such file|ERR" && exit 9 || echo VALIDATION_PASS_$opt
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
opt=$1
|
||||||
|
|
||||||
|
case $opt in
|
||||||
|
|
||||||
|
default)
|
||||||
|
|
||||||
|
default
|
||||||
|
;;
|
||||||
|
|
||||||
|
env)
|
||||||
|
|
||||||
|
env
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo "validation job shell script utility taking variables from env"
|
||||||
|
echo "Usage: $0 {default|env}"
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# -------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
#cat $DIR/script.log | egrep -v -i "script.log|warning|SQL|create mode|rewrite" | egrep -i "fail|fatal|exception|terminated|command not found|error|unexpected|cannot access|No such file|ERR" && exit 9 || echo VALIDATION_PASS_$opt
|
||||||
|
# --------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
Reference in New Issue
Block a user