diff --git a/ex1-shai/bootstrap.sh b/ex1-shai/bootstrap.sh old mode 100644 new mode 100755 diff --git a/ex1-shai/checkNcdu.sh b/ex1-shai/checkNcdu.sh old mode 100644 new mode 100755 diff --git a/ex1-shai/checkNginx.sh b/ex1-shai/checkNginx.sh old mode 100644 new mode 100755 index 9460491..cf46f83 --- a/ex1-shai/checkNginx.sh +++ b/ex1-shai/checkNginx.sh @@ -18,10 +18,7 @@ else systemctl disable nginx userdel -r nginx - rm -rf /etc/nginx - rm -rf /var/log/nginx - rm -rf /var/cache/nginx/ - rm -rf /usr/lib/systemd/system/nginx.servic + rm -rf /etc/nginx /var/log/nginx /var/cache/nginx /usr/lib/systemd/system/nginx.servic yum remove -y nginx elif [[ $answer = "N" ]]; then diff --git a/ex2-shai/bootstrap.sh b/ex2-shai/bootstrap.sh old mode 100644 new mode 100755 index a00cff1..361fe33 --- a/ex2-shai/bootstrap.sh +++ b/ex2-shai/bootstrap.sh @@ -4,12 +4,9 @@ which git > /dev/null 2>&1 if [[ $? -eq 1 ]]; then yum install http://opensource.wandisco.com/centos/7/git/x86_64/wandisco-git-release-7-2.noarch.rpm yum install git - git config --global user.name - git config --global user.email else echo "git installed" fi ---- which docker > /dev/null 2>&1 if [[ $? -eq 1 ]]; then @@ -35,4 +32,4 @@ if [[ $? -eq 1 ]]; then docker run --name myjenkins -u root -d -p 11000:8080 -v /home/Documents/shai/JenkinsHome:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkins/jenkins else echo "jenkins installed" -fi \ No newline at end of file +fi diff --git a/ex3/InstallJenkins.sh b/ex3/InstallJenkins.sh new file mode 100755 index 0000000..1a3a395 --- /dev/null +++ b/ex3/InstallJenkins.sh @@ -0,0 +1,59 @@ +#!/usr/bin/env bash + +which docker > /dev/null 2>&1 +if [[ $? -eq 1 ]]; then + yum update -y + yum install -y yum-utils device-mapper-persistent-data lvm2 + yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo + echo "Installing docker....." + yum install -y docker-ce docker-ce-cli containerd.io + systemctl enable docker + systemctl start docker + + systemctl is-active --quiet docker && echo Docker is running +else + echo "docker installed" +fi + +docker container inspect myJenkins > /dev/null 2>&1 +if [[ $? -eq 1 ]]; then + echo "Installing jenkins" + mkdir -p /home/shai/Documents/backery/playground/jcasc/ex3/JenkinsHome + chmod 755 /home/shai/Documents/backery/playground/jcasc/ex3/JenkinsHome + cd /home/shai/Documents/backery/playground/jcasc/ex3/ + + echo " + git:latest + github-api:latest + workflow-aggregator:latest + python:latest + pipeline-github-lib:latest + pipeline-stage-view:latest" > plugins.txt + + echo " + unclassified: + location: + url: http://server_ip:8080/ + jenkins: + securityRealm: + local: + allowsSignup: false + users: + - id: ${JENKINS_ADMIN_ID} + password: ${JENKINS_ADMIN_PASSWORD}" > casc.yaml + + echo " + FROM jenkins/jenkins:lts + COPY plugins.txt /usr/share/jenkins/ref/plugins.txt + RUN /usr/local/bin/install-plugins.sh < /usr/share/jenkins/ref/plugins.txt + COPY casc.yaml /var/jenkins_home/casc.yaml + ENV CASC_JENKINS_CONFIG /var/jenkins_home/casc.yaml + ENV JAVA_OPTS -Djenkins.install.runSetupWizard=false" > Dockerfile + + + docker build -t jenkins:jcasc -f Dockerfile . + docker run --name myJenkins -u root -d -p 8080:8080 --env JENKINS_ADMIN_ID=root --env JENKINS_ADMIN_PASSWORD=root -v /home/shai/Documents/backery/playground/jcasc/ex3/JenkinsHome:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkins:jcasc +else + echo "jenkins installed" +fi + diff --git a/ex3/Jenkinsfile b/ex3/Jenkinsfile new file mode 100755 index 0000000..aaed528 --- /dev/null +++ b/ex3/Jenkinsfile @@ -0,0 +1,29 @@ +pipeline { + agent any + environment { + CI = 'true' + } + stages { + stage('Build') { + steps { + println 'Compiling the application!' + } + } + stage("Deploy to master"){ + when { + branch 'master' + } + steps { + println 'Deploying to master' + } + } + stage("Deploy to Production"){ + when { + branch 'production' + } + steps { + println 'Deploying to production' + } + } + } +} diff --git a/ex4/Dockerfile b/ex4/Dockerfile new file mode 100755 index 0000000..82a3208 --- /dev/null +++ b/ex4/Dockerfile @@ -0,0 +1,26 @@ +FROM jenkins/jenkins:lts +USER root +RUN apt-get update && \ +apt-get -y install apt-transport-https \ + ca-certificates \ + curl \ + gnupg2 \ + software-properties-common && \ +curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg > /tmp/dkey; apt-key add /tmp/dkey && \ +add-apt-repository \ + "deb [arch=amd64] https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") \ + $(lsb_release -cs) \ + stable" && \ +apt-get update && \ +apt-get -y install docker-ce +RUN apt-get install -y docker-ce +RUN groupmod -g 993 docker +RUN usermod -a -G docker jenkins +USER jenkins +ENV JAVA_OPTS -Djenkins.install.runSetupWizard=false +ENV CASC_JENKINS_CONFIG /var/jenkins_home/casc.yml +COPY JENKINS_ADMIN_ID /run/secrets/JENKINS_ADMIN_ID +COPY JENKINS_ADMIN_PASSWORD /run/secrets/JENKINS_ADMIN_PASSWORD +COPY plugins.txt /usr/share/jenkins/ref/plugins.txt +RUN /usr/local/bin/install-plugins.sh < /usr/share/jenkins/ref/plugins.txt +COPY casc.yml /var/jenkins_home/casc.yml diff --git a/ex4/Dockerfile-15-11 b/ex4/Dockerfile-15-11 new file mode 100755 index 0000000..0296941 --- /dev/null +++ b/ex4/Dockerfile-15-11 @@ -0,0 +1,21 @@ +FROM jenkins/jenkins:lts +USER root +RUN apt-get update && \ +apt-get -y install apt-transport-https \ + ca-certificates \ + curl \ + gnupg2 \ + software-properties-common && \ +curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg > /tmp/dkey; apt-key add /tmp/dkey && \ +add-apt-repository \ + "deb [arch=amd64] https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") \ + $(lsb_release -cs) \ + stable" && \ +apt-get update && \ +apt-get -y install docker-ce +RUN apt-get install -y docker-ce +RUN usermod -a -G docker jenkins +USER jenkins +ENV JAVA_OPTS -Djenkins.install.runSetupWizard=false +COPY plugins.txt /usr/share/jenkins/ref/plugins.txt +RUN /usr/local/bin/install-plugins.sh < /usr/share/jenkins/ref/plugins.txt diff --git a/ex4/Dockerfile-bku-14-11 b/ex4/Dockerfile-bku-14-11 new file mode 100755 index 0000000..21c37d8 --- /dev/null +++ b/ex4/Dockerfile-bku-14-11 @@ -0,0 +1,23 @@ +FROM jenkins/jenkins:lts +USER root +RUN apt-get update && \ +apt-get -y install apt-transport-https \ + ca-certificates \ + curl \ + gnupg2 \ + software-properties-common && \ +curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg > /tmp/dkey; apt-key add /tmp/dkey && \ +add-apt-repository \ + "deb [arch=amd64] https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") \ + $(lsb_release -cs) \ + stable" && \ +apt-get update && \ +apt-get -y install docker-ce +RUN apt-get install -y docker-ce +RUN usermod -a -G docker jenkins +USER jenkins +ENV JAVA_OPTS -Djenkins.install.runSetupWizard=false +COPY plugins.txt /usr/share/jenkins/ref/plugins.txt +RUN /usr/local/bin/install-plugins.sh < /usr/share/jenkins/ref/plugins.txt +COPY casc.yaml /var/jenkins_home/casc.yaml +ENV CASC_JENKINS_CONFIG /var/jenkins_home/casc.yaml diff --git a/ex4/Dockerfile-bku-15-11 b/ex4/Dockerfile-bku-15-11 new file mode 100755 index 0000000..047ec86 --- /dev/null +++ b/ex4/Dockerfile-bku-15-11 @@ -0,0 +1,26 @@ +FROM jenkins/jenkins:lts +USER root +RUN apt-get update && \ +apt-get -y install apt-transport-https \ + ca-certificates \ + curl \ + gnupg2 \ + software-properties-common && \ +curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg > /tmp/dkey; apt-key add /tmp/dkey && \ +add-apt-repository \ + "deb [arch=amd64] https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") \ + $(lsb_release -cs) \ + stable" && \ +apt-get update && \ +apt-get -y install docker-ce +RUN apt-get install -y docker-ce +RUN groupmod -g 993 docker +RUN usermod -a -G docker jenkins +USER jenkins +ENV JAVA_OPTS -Djenkins.install.runSetupWizard=false +ENV CASC_JENKINS_CONFIG /var/jenkins_home/casc.yml +COPY JENKINS_ADMIN_ID /run/secrets/JENKINS_ADMIN_ID +COPY JENKINS_ADMIN_PASSWORD /run/secrets/JENKINS_ADMIN_PASSWORD +COPY plugins.txt /usr/share/jenkins/ref/plugins.txt +RUN /usr/local/bin/install-plugins.sh < /usr/share/jenkins/ref/plugins.txt +COPY casc.yaml /var/jenkins_home/casc.yaml diff --git a/ex4/JENKINS_ADMIN_ID b/ex4/JENKINS_ADMIN_ID new file mode 100755 index 0000000..7fbe952 --- /dev/null +++ b/ex4/JENKINS_ADMIN_ID @@ -0,0 +1 @@ +admin diff --git a/ex4/JENKINS_ADMIN_PASSWORD b/ex4/JENKINS_ADMIN_PASSWORD new file mode 100755 index 0000000..7fbe952 --- /dev/null +++ b/ex4/JENKINS_ADMIN_PASSWORD @@ -0,0 +1 @@ +admin diff --git a/ex4/Jenkinsfile b/ex4/Jenkinsfile new file mode 100755 index 0000000..0117fc3 --- /dev/null +++ b/ex4/Jenkinsfile @@ -0,0 +1,22 @@ +pipeline { + agent any + stages { + + stage('Build') { + steps { + echo 'Start build' + sh 'docker build -t microblog:latest .' + sh 'docker run --name microblogFromJenkins -d -p 8001:5000 --rm microblog:latest' + + } + } + } + post { + success { + echo "Pipeline successful" + } + failure { + echo "The Pipeline failed :(" + } + } + } diff --git a/ex4/README.md b/ex4/README.md new file mode 100755 index 0000000..cc827c0 --- /dev/null +++ b/ex4/README.md @@ -0,0 +1,2 @@ +docker build -t jenkins:jcasc . +docker run --name myJ -u root -d -p 8085:8080 --env JENKINS_ADMIN_ID=admin --env JENKINS_ADMIN_PASSWORD=admin -v /home/shai/Documents/backery/playground/jcasc/JenkinsHomeNew:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkins:jcasc diff --git a/ex4/casc.yaml-bku b/ex4/casc.yaml-bku new file mode 100755 index 0000000..2d3d3cd --- /dev/null +++ b/ex4/casc.yaml-bku @@ -0,0 +1,15 @@ +jenkins: + securityRealm: + local: + allowsSignup: false + users: + - id: ${JENKINS_ADMIN_ID} + password: ${JENKINS_ADMIN_PASSWORD} + authorizationStrategy: + globalMatrix: + permissions: + - "Overall/Administer:admin" + - "Overall/Read:authenticated" +unclassified: +location: + url: http://192.168.131.132:8085/ diff --git a/ex4/casc.yaml-bku-15-11 b/ex4/casc.yaml-bku-15-11 new file mode 100755 index 0000000..0860896 --- /dev/null +++ b/ex4/casc.yaml-bku-15-11 @@ -0,0 +1,24 @@ +--- +jenkins: + securityRealm: + local: + allowsSignup: false + users: + - id: ${JENKINS_ADMIN_ID} + password: ${JENKINS_ADMIN_PASSWORD} + authorizationStrategy: + globalMatrix: + permissions: + - "Overall/Administer:admin" + - "Overall/Read:authenticated" + remotingSecurity: + enabled: true +security: + queueItemAuthenticator: + authenticators: + - global: + strategy: triggeringUsersAuthorizationStrategy +unclassified: + location: + url: http://192.168.131.134:8085/ + diff --git a/ex4/casc.yml b/ex4/casc.yml new file mode 100755 index 0000000..c7ba8f9 --- /dev/null +++ b/ex4/casc.yml @@ -0,0 +1,10 @@ +unclassified: + location: + url: http://server_ip:8085/ +jenkins: + securityRealm: + local: + allowsSignup: false + users: + - id: + password: diff --git a/ex4/plugins.txt b/ex4/plugins.txt new file mode 100755 index 0000000..3c1a2e0 --- /dev/null +++ b/ex4/plugins.txt @@ -0,0 +1,7 @@ + + git:latest + github-api:latest + workflow-aggregator:latest + python:latest + pipeline-github-lib:latest + pipeline-stage-view:latest diff --git a/ex5/api/Dockerfile b/ex5/api/Dockerfile new file mode 100755 index 0000000..ba54d34 --- /dev/null +++ b/ex5/api/Dockerfile @@ -0,0 +1,12 @@ +FROM python:3.7-alpine +RUN mkdir /app +COPY . /app +WORKDIR /app +ENV FLASK_APP=app.py +ENV FLASK_RUN_HOST=0.0.0.0 +RUN apk add --no-cache gcc musl-dev linux-headers +COPY requirements.txt requirements.txt +RUN pip install -r requirements.txt +EXPOSE 5000 +#COPY . . +CMD ["flask", "run"] diff --git a/ex5/api/app.py b/ex5/api/app.py new file mode 100755 index 0000000..9ab3378 --- /dev/null +++ b/ex5/api/app.py @@ -0,0 +1,8 @@ +import os +from flask import Flask +app = Flask(__name__) +@app.route('/') +def welcome(): + return "Start" +if __name__ == '__main__': + app.run(host='0.0.0.0', port=os.getenv('PORT')) diff --git a/ex5/api/requirements.txt b/ex5/api/requirements.txt new file mode 100755 index 0000000..7e10602 --- /dev/null +++ b/ex5/api/requirements.txt @@ -0,0 +1 @@ +flask diff --git a/ex5/docker-compose.yml b/ex5/docker-compose.yml new file mode 100755 index 0000000..f43d55e --- /dev/null +++ b/ex5/docker-compose.yml @@ -0,0 +1,35 @@ +version: '3.6' + +services: + api: + build: ./api + depends_on: + - db + environment: + STAGE: test + SQLALCHEMY_DATABASE_URI: postgresql+psycopg2://test:test@db/test + networks: + - default + ports: + - 5000:5000 + volumes: + - ./app:/usr/src/app/app + - ./migrations:/usr/src/app/migrations + restart: always + + db: + environment: + POSTGRES_USER: test + POSTGRES_PASSWORD: test + POSTGRES_DB: test + image: postgres:latest + networks: + - default + ports: + - 5406:5432 + restart: always + volumes: + - ./postgres-data:/var/lib/postgresql/data +networks: + default: + name: bakery