generated from Templates/html-nginx-deployment
Initial commit
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
|
||||
105
template/setup.sh
Executable file
105
template/setup.sh
Executable file
@@ -0,0 +1,105 @@
|
||||
#!/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. See the Readme for info on deployable branches."
|
||||
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 "Removing template folder"
|
||||
rm -rf template
|
||||
|
||||
echo "Thank you! Happy building..."
|
||||
6
template/start.sh
Normal file
6
template/start.sh
Normal file
@@ -0,0 +1,6 @@
|
||||
#!/bin/bash
|
||||
echo ""
|
||||
echo "Starting an Nginx container listening on http://localhost:3000"
|
||||
echo ""
|
||||
echo ""
|
||||
docker run --rm -v $(pwd)/html/:/usr/share/nginx/html/ -p {{localPort}}:80 {{localContainer}}
|
||||
Reference in New Issue
Block a user