需求:
从Google Cloud的项目迁移到aws
前端Angular
后端Python
Jenkins 中agent使用ec2中的一台机器(也可以是docker,注意vpc问题,否则访问不到)
Docker使用
stage("Deploy"){
steps {
script{
withDockerRegistry(credentialsId: 'aws-credentials-cicd', url: 'https://xxx.amazonaws.com') {
sh 'docker build -f ./Dockerfile.nonprod.ca -t xxx.amazonaws.com/'+ ecr_repository_name + ':' + image_tag_name + ' .'
sh 'docker push xxx.amazonaws.com/'+ ecr_repository_name + ':' + image_tag_name
sh 'docker tag xxx.amazonaws.com/'+ ecr_repository_name + ':' + image_tag_name + ' xxx.amazonaws.com/'+ ecr_repository_name + ':latest'
sh 'docker push xxx.amazonaws.com/'+ ecr_repository_name + ':latest'
sh 'docker system prune -f -a'
}
}
}
}
withDockerRegistry可以看Jenkins 文档 就是个token + 链接
docker build 然后 tag 保证latest,terraform得对应起来 这块基本就是docker基础操作
docker system prune -f -a =》 清空docker相关内容,因为我这个是ec2的机器,硬盘有限,删除垃圾
stage('Helm Chart!'){
steps {
script{
sh 'aws eks --region ua-east-1 update-kubeconfig --name test-nonprod'
sh 'kubectl version --client'
sh 'kubectl get pod -n namespace'
sh 'helm version'
envLowerCase = env.ENVIRONMENT.toLowerCase()
// helm
helm_install_name = 'test-nonprod-'+envLowerCase
helm_deploymentName = envLowerCase+'-test-deployment'
checkout([$class: 'GitSCM', branches: [[name: 'development']], extensions: [], userRemoteConfigs: [[credentialsId: 'Bitbucket', url: 'https://bitbucket.org/xxx/xxx.git']]])
sh 'cd ./Jenkins/helmcharts && ls -a'
sh """helm upgrade --install ${helm_install_name} ./Jenkins/helmcharts/groweriq
--set-string deploymentName=${helm_deploymentName}"""
}
}
}
关键代码就这些了包括了kubectl 安装, 其实helm也可以这样安装,我的版本是3.8.2 不然会报错
可以把kubectl helm 预装到机器上,我这还有个region的问题,所以暂时这么搞的
helm upgrade --install #可以安装 也可以是更新升级
""" 三个引号可以在里面编写换行,${} 变量赋值 =》 groovy写法,就是DSL
helm install 完毕之后就是更新数据库了, 这里就用kubectl 进入那台机器,直接用编写好的.sh 塞到db就行了
链接rds可能有问题,基本就是内网 外网ip的问题,看看是不是同一个vpc