Browse Source

first commit

master
domsgit 5 years ago
commit
c66504bebd
5 changed files with 102 additions and 0 deletions
  1. 9
      Dockerfile
  2. 57
      Jenkinsfile
  3. 2
      README.md
  4. 21
      k8s.yaml
  5. 13
      main.go

9
Dockerfile

@ -0,0 +1,9 @@
FROM golang:1.8.0-alpine
ADD . /go/src/app
WORKDIR /go/src/app
RUN GOOS=linux GOARCH=386 go build -v -o /go/src/app/jenkins-app
CMD ["./jenkins-app"]

57
Jenkinsfile

@ -0,0 +1,57 @@
node('haimaxy-jnlp') {
stage('Clone') {
echo "1.Clone Stage"
// git url: "https://github.com/cnych/jenkins-demo.git"
// checkout scm
script {
build_tag = sh(returnStdout: true, script: 'git rev-parse --short HEAD').trim()
// if (env.BRANCH_NAME != 'master') {
// build_tag = "${env.BRANCH_NAME}-${build_tag}"
// }
}
}
stage('Test') {
echo "2.Test Stage"
}
stage('Build') {
echo "3.Build Docker Image Stage"
sh "docker build -t 120.78.76.88/cnych/jenkins-demo:${build_tag} ."
}
stage('Push') {
echo "4.Push Docker Image Stage"
withCredentials([usernamePassword(credentialsId: 'qniao-harbor-88', passwordVariable: 'qniao-harbor-88Password', usernameVariable: 'qniao-harbor-88User')]) {
sh "docker login -u ${qniao-harbor-88User} -p ${qniao-harbor-88Password} 120.78.76.88"
sh "docker push 120.78.76.88/cnych/jenkins-demo:${build_tag}"
}
}
stage('YAML') {
echo "5. Change YAML File Stage"
def userInput = input(
id: 'userInput',
message: 'Choose a deploy environment',
parameters: [
[
$class: 'ChoiceParameterDefinition',
choices: "Dev\nQA\nProd",
name: 'Env'
]
]
)
echo "This is a deploy step to ${userInput.Env}"
sh "sed -i 's/<BUILD_TAG>/${build_tag}/' k8s.yaml"
sh "sed -i 's/<BRANCH_NAME>/${env.BRANCH_NAME}/' k8s.yaml"
}
stage('Deploy') {
echo "6. Deploy Stage"
if (userInput.Env == "Dev") {
// deploy dev stuff
} else if (userInput.Env == "QA"){
// deploy qa stuff
} else {
// deploy prod stuff
// input "确认要部署线上环境吗?"
}
sh "kubectl apply -f k8s.yaml"
}
}

2
README.md

@ -0,0 +1,2 @@
# jenkins-demo
some demo project for jenkins

21
k8s.yaml

@ -0,0 +1,21 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: jenkins-demo
namespace: default
spec:
selector:
matchLabels:
app: jenkins-demo
template:
metadata:
labels:
app: jenkins-demo
spec:
containers:
- image: cnych/jenkins-demo:<BUILD_TAG>
imagePullPolicy: IfNotPresent
name: jenkins-demo
env:
- name: branch
value: <BRANCH_NAME>

13
main.go

@ -0,0 +1,13 @@
package main
// Import the fmt for formatting strings
// Import os so we can read environment variables from the system
import (
"fmt"
"os"
)
func main() {
fmt.Println("Hello, Kubernetes!I'm from Jenkins CI!")
fmt.Println("BRANCH_NAME:", os.Getenv("branch"))
}
Loading…
Cancel
Save