4月2日 Java学习笔记
持续交付流水线设计
- Jenkins多阶段流水线(Declarative Pipeline)
groovy
pipeline {
agent any
stages {
stage('代码检查') {
steps {
sh 'mvn checkstyle:check'
sh 'mvn spotbugs:check'
}
}
stage('单元测试') {
steps {
sh 'mvn test -Dtest=/*Test.java'
archiveArtifacts 'target/surefire-reports//*.xml'
}
}
stage('构建镜像') {
steps {
script {
docker.build("${IMAGE_NAME}😒{GIT_COMMIT}")
}
}
}
stage('安全扫描') {
steps {
sh 'trivy image --exit-code 1 ${IMAGE_NAME}😒{GIT_COMMIT}'
}
}
stage('部署到Staging') {
when { branch 'main' }
steps {
sh 'kubectl apply -f k8s/staging'
}
}
}
post {
failure {
slackSend channel: '#ci-alerts', message: "构建失败: ${BUILD_URL}"
}
}
}
2. GitOps实践(Argo CD)
yaml
application.yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: order-service
spec:
destination:
server: https://kubernetes.default.svc
namespace: production
source:
repoURL: git@github.com:myorg/gitops-repo.git
path: apps/order-service
targetRevision: HEAD
syncPolicy:
automated:
prune: true
selfHeal: true
基础设施即代码(IaC)
- Terraform管理AWS资源
创建RDS实例
resource "aws_db_instance" "order_db" {
identifier = "order-db-prod"
engine = "mysql"
instance_class = "db.t3.micro"
allocated_storage = 20
username = var.db_username
password = var.db_password
publicly_accessible = false
skip_final_snapshot = true
}
输出连接信息
output "rds_endpoint" {
value = aws_db_instance.order_db.endpoint
}
2. Crossplane实现多云编排
yaml
定义跨云数据库资源
apiVersion: database.aws.crossplane.io/v1beta1
kind: RDSInstance
metadata:
name: crosscloud-db
spec:
forProvider:
region: us-west-2
dbInstanceClass: db.t2.micro
masterUsername: admin
engine: postgres
engineVersion: "13.4"
allocatedStorage: 20
writeConnectionSecretToRef:
name: db-conn-secret
浙公网安备 33010602011771号