Added bootstrap template files.

This commit is contained in:
2023-01-07 17:28:20 +02:00
parent 99d655620b
commit c61ab676e0
5 changed files with 226 additions and 0 deletions

3
template/Dockerfile Normal file
View File

@@ -0,0 +1,3 @@
FROM {{k3sContainerBase}}
COPY html /usr/share/nginx/html

68
template/Jenkinsfile vendored Normal file
View File

@@ -0,0 +1,68 @@
#!groovy
pipeline {
agent {
kubernetes {
defaultContainer 'jnlp'
yaml """
apiVersion: v1
kind: Pod
metadata:
name: {{k3sApp}}-env.BRANCH_NAME-build
spec:
serviceAccountName: jenkins-admin
containers:
- name: kaniko
image: gcr.io/kaniko-project/executor:debug
command: ["tail"]
args: ["-f", "/dev/null"]
volumeMounts:
- name: kaniko-secret
mountPath: /kaniko/.docker
- name: deploy
image: 192.168.195.195:30000/nginx:latest
command: ["tail"]
args: ["-f", "/dev/null"]
restartPolicy: Never
volumes:
- name: kaniko-secret
secret:
secretName: dockercred
items:
- key: .dockerconfigjson
path: config.json
"""
}
}
stages {
stage('Build') {
steps {
sh 'echo "No build steps configured."'
}
}
stage('Test') {
steps {
sh 'echo "No test steps configured."'
}
}
stage('Docker Build and Push') {
steps {
container("kaniko") {
sh '''
/kaniko/executor --dockerfile `pwd`/cicd/env.BRANCH_NAME/Dockerfile --context `pwd` --destination 192.168.195.195:30000/{{k3sApp}}:env.BRANCH_NAME
'''
}
}
}
stage('Kubernetes Deploy') {
steps {
container("deploy") {
sh 'curl -LO "https://storage.googleapis.com/kubernetes-release/release/v1.24.3/bin/linux/arm64/kubectl"'
sh 'chmod u+x ./kubectl'
sh 'sed -ie "s/{{replaceMe}}/`date +%s`/g" `pwd`/cicd/env.BRANCH_NAME/deployment.yaml'
sh './kubectl replace -f `pwd`/cicd/`env.BRANCH_NAME`/deployment.yaml'
}
}
}
}
}

51
template/deployment.yaml Normal file
View File

@@ -0,0 +1,51 @@
apiVersion: v1
kind: Service
metadata:
name: {{k3sApp}}-{{k3sEnv}}-svc
namespace: {{k3sNamespace}}
spec:
type: NodePort
selector:
app: {{k3sApp}}-{{k3sEnv}}
ports:
- name: http
nodePort: {{k3sport}}
port: 80
targetPort: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{k3sApp}}-{{k3sEnv}}
namespace: {{k3sNamespace}}
spec:
replicas: 2
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
type: RollingUpdate
selector:
matchLabels:
app: {{k3sApp}}-{{k3sEnv}}
template:
metadata:
labels:
app: {{k3sApp}}-{{k3sEnv}}
delpoymentDate: "{{replaceMe}}"
spec:
containers:
- name: {{k3sApp}}-{{k3sEnv}}
image: 192.168.195.195:30000/{{k3sApp}}:{{k3sEnv}}
imagePullPolicy: Always
ports:
- name: http
containerPort: 80
readinessProbe:
httpGet:
path: /
port: 80
initialDelaySeconds: 5
periodSeconds: 5
successThreshold: 1

102
template/setup.sh Executable file
View File

@@ -0,0 +1,102 @@
#!/bin/bash
#./setup.sh 3000 192.168.195.195:30000/nginx:latest cicd/Jenkinsfile
folderName=${PWD##*/}
folderName=${folderName:-/}
echo "Hello, lets get your project set up. Please follow the prompts attentively."
read -p "Do you want to run this project locally? [Yn] " localProject
if [ $localProject == 'Y' ] || [ $localProject == 'y' ]
then
echo "Configuring local settings"
read -p " Local port to expose server on? [eg 3000] " localPort
read -p " NGINX container to use? [eg nginx/nginx:latest] " localContainer
echo " Creating start script"
cp template/start.sh start.sh
sed -ie "s|{{localPort}}|$localPort|g" start.sh
sed -ie "s|{{localContainer}}|$localContainer|g" start.sh
chmod +x start.sh
rm start.she
fi
read -p "Are you deploying this with the Sciocatti Jenkins pipeline? [Yn] " useJenkins
if [ $useJenkins == 'Y' ] || [ $useJenkins == 'y' ]
then
echo "Configuring deployment settings. Deployments will work on branches called 'stage' (), 'main', 'prod'"
read -p " K3S App name: " k3sApp
read -p " K3S namespace: [eg apps] " k3sNamespace
read -p " K3S base container: [eg nginx:nginx:latest] " k3sContainerBase
read -p " K3S prod NodePort: " k3sport
k3sportMain=$((k3sport+1))
k3sportStage=$((k3sport+2))
echo "Creating Folders"
echo " Creating cicd/"
mkdir cicd
echo " Creating cicd/prod"
mkdir cicd/prod
echo " Creating cicd/main"
mkdir cicd/main
echo " Creating cicd/stage"
mkdir cicd/stage
echo "Loading files"
echo " Loading cicd/Jenkinsfile"
cp template/Jenkinsfile cicd/Jenkinsfile
sed -ie "s|{{k3sApp}}|$k3sApp|g" cicd/Jenkinsfile
rm cicd/Jenkinsfilee
echo " Loading main"
k3sEnv=main
echo " Loading cicd/main/Dockerfile"
cp template/Dockerfile cicd/main/Dockerfile
sed -ie "s|{{k3sContainerBase}}|$k3sContainerBase|g" cicd/main/Dockerfile
rm cicd/main/Dockerfilee
echo " Loading cicd/main/deployment.yaml"
cp template/deployment.yaml cicd/main/deployment.yaml
sed -ie "s|{{k3sApp}}|$k3sApp|g" cicd/main/deployment.yaml
sed -ie "s|{{k3sport}}|$k3sportMain|g" cicd/main/deployment.yaml
sed -ie "s|{{k3sNamespace}}|$k3sNamespace|g" cicd/main/deployment.yaml
sed -ie "s|{{k3sEnv}}|$k3sEnv|g" cicd/main/deployment.yaml
rm cicd/main/deployment.yamle
echo " Loading stage"
k3sEnv=stage
echo " Loading cicd/stage/Dockerfile"
cp template/Dockerfile cicd/stage/Dockerfile
sed -ie "s|{{k3sContainerBase}}|$k3sContainerBase|g" cicd/stage/Dockerfile
rm cicd/stage/Dockerfilee
echo " Loading cicd/stage/deployment.yaml"
cp template/deployment.yaml cicd/stage/deployment.yaml
sed -ie "s|{{k3sApp}}|$k3sApp|g" cicd/stage/deployment.yaml
sed -ie "s|{{k3sport}}|$k3sportStage|g" cicd/stage/deployment.yaml
sed -ie "s|{{k3sNamespace}}|$k3sNamespace|g" cicd/stage/deployment.yaml
sed -ie "s|{{k3sEnv}}|$k3sEnv|g" cicd/stage/deployment.yaml
rm cicd/stage/deployment.yamle
echo " Loading prod"
k3sEnv=prod
echo " Loading cicd/prod/Dockerfile"
cp template/Dockerfile cicd/prod/Dockerfile
sed -ie "s|{{k3sContainerBase}}|$k3sContainerBase|g" cicd/prod/Dockerfile
rm cicd/prod/Dockerfilee
echo " Loading cicd/prod/deployment.yaml"
cp template/deployment.yaml cicd/prod/deployment.yaml
sed -ie "s|{{k3sApp}}|$k3sApp|g" cicd/prod/deployment.yaml
sed -ie "s|{{k3sport}}|$k3sport|g" cicd/prod/deployment.yaml
sed -ie "s|{{k3sNamespace}}|$k3sNamespace|g" cicd/prod/deployment.yaml
sed -ie "s|{{k3sEnv}}|$k3sEnv|g" cicd/prod/deployment.yaml
rm cicd/prod/deployment.yamle
fi
echo "Thank you! Happy building..."

2
template/start.sh Normal file
View File

@@ -0,0 +1,2 @@
#!/bin/bash
docker run --rm -v $(pwd)/html/:/usr/share/nginx/html/ -p {{localPort}}:80 {{localContainer}}