Added bootstrap template files.
This commit is contained in:
3
template/Dockerfile
Normal file
3
template/Dockerfile
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
FROM {{k3sContainerBase}}
|
||||||
|
|
||||||
|
COPY html /usr/share/nginx/html
|
||||||
68
template/Jenkinsfile
vendored
Normal file
68
template/Jenkinsfile
vendored
Normal 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
51
template/deployment.yaml
Normal 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
102
template/setup.sh
Executable 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
2
template/start.sh
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
docker run --rm -v $(pwd)/html/:/usr/share/nginx/html/ -p {{localPort}}:80 {{localContainer}}
|
||||||
Reference in New Issue
Block a user