diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/NetflixFrontend.iml b/.idea/NetflixFrontend.iml new file mode 100644 index 0000000..d0876a7 --- /dev/null +++ b/.idea/NetflixFrontend.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..db8786c --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..a62c735 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..c9814a1 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,6 @@ +FROM node:14-alpine +WORKDIR /app +COPY . . +RUN npm install +RUN npm run build +CMD ["npm", "start"] \ No newline at end of file diff --git a/k8s/deploymentFront.yaml b/k8s/deploymentFront.yaml new file mode 100644 index 0000000..aaa5cf6 --- /dev/null +++ b/k8s/deploymentFront.yaml @@ -0,0 +1,46 @@ +#k8s/service-demo.yaml + +apiVersion: v1 +kind: Service +metadata: + name: service-netflix-movie-front +spec: + selector: + app: netflix-frontend + ports: + - protocol: TCP + port: 3000 + targetPort: 3000 + #ghazalllllllllllllllllllllllllllllll + +--- + + +# k8s/deployment-demo.yaml + +apiVersion: apps/v1 +kind: Deployment +metadata: + name: netflix-frontend + labels: + app: netflix-frontend +spec: + + replicas: 1 + + selector: + matchLabels: + app: netflix-frontend + template: + metadata: + labels: + app: netflix-frontend + spec: + containers: + - name: server + image: ghazalkhateeb/netflixfrontend_image:0.0.3 + env: + - name: MOVIE_CATALOG_SERVICE + value: http://service-netflix-movie-catalog:8080 + - name: REDIS_URL + value: service-netflix-redis:6379 diff --git a/pipelines/Dockerfile b/pipelines/Dockerfile new file mode 100644 index 0000000..c9814a1 --- /dev/null +++ b/pipelines/Dockerfile @@ -0,0 +1,6 @@ +FROM node:14-alpine +WORKDIR /app +COPY . . +RUN npm install +RUN npm run build +CMD ["npm", "start"] \ No newline at end of file diff --git a/pipelines/build.Jenkinsfile b/pipelines/build.Jenkinsfile new file mode 100644 index 0000000..53881a9 --- /dev/null +++ b/pipelines/build.Jenkinsfile @@ -0,0 +1,59 @@ +// pipelines/build.Jenkinsfile + +pipeline { + agent { + label 'general' + } + + triggers { + githubPush() + } + environment { + // GIT_COMMIT = sh(script: 'git rev-parse --short HEAD', returnStdout: true).trim() + // TIMESTAMP = new Date().format("yyyyMMdd-HHmmss") + + + IMAGE_TAG = "v1.0.$BUILD_NUMBER" + IMAGE_BASE_NAME = 'netflix-app' + DOCKER_CREDENTIALS = credentials('dockerhub') + DOCKER_USERNAME = "${DOCKER_CREDENTIALS_USR}" + DOCKER_PASS = "${DOCKER_CREDENTIALS_PSW}" + + //DOCKER_USERNAME = credentials('dockerhub').username + //DOCKER_PASS = credentials('dockerhub').password + } + + + + stages { + stage('Docker setup') { + steps { + sh ''' + docker login -u $DOCKER_USERNAME -p $DOCKER_PASS + ''' + } + } + + stage('Build & Push') { + steps { + sh ''' + + + IMAGE_FULL_NAME=$DOCKER_USERNAME/$IMAGE_BASE_NAME:$IMAGE_TAG + + + docker build -t $IMAGE_FULL_NAME . + docker push $IMAGE_FULL_NAME + ''' + } + } + stage('Trigger Deploy') { + steps { + build job: 'NetflixFrontendDeploy' , wait: false, parameters: [ + string(name: 'SERVICE_NAME', value: "NetflixFrontend"), + string(name: 'IMAGE_FULL_NAME_PARAM', value: "$DOCKER_USERNAME/$IMAGE_BASE_NAME:$IMAGE_TAG") + ] + } + } + } +} diff --git a/pipelines/test.Jenkinsfile b/pipelines/test.Jenkinsfile new file mode 100644 index 0000000..9653ce4 --- /dev/null +++ b/pipelines/test.Jenkinsfile @@ -0,0 +1,44 @@ +pipeline { + agent any + + stages { + stage('Tests before build') { + parallel { + stage('Unittest') { + steps { + sh 'echo unittesting...' + } + } + stage('Lint') { + steps { + sh 'echo linting...' + } + } + } + } + stage('Build the app') { + steps { + sh 'echo building ....' + } + } + stage('Tests after build') { + parallel { + stage('Security vulnerabilities scanning') { + steps { + sh 'echo scanning for vulnerabilities...' + } + } + stage('API test') { + steps { + sh 'echo testing API...' + } + } + stage('Load test') { + steps { + sh 'echo testing under load...' + } + } + } + } + } +} \ No newline at end of file