automated terminal push
This commit is contained in:
77
infrastructure/services/Jenkinsfile
vendored
77
infrastructure/services/Jenkinsfile
vendored
@@ -254,11 +254,11 @@ with app.test_client() as client:
|
|||||||
}
|
}
|
||||||
stage('🐳 Build & Push Docker Image') {
|
stage('🐳 Build & Push Docker Image') {
|
||||||
when {
|
when {
|
||||||
equals expected: 'deploy', actual: params.ACTION
|
equals expected: 'deploy', actual: params.ACTION
|
||||||
}
|
}
|
||||||
steps {
|
steps {
|
||||||
withCredentials([
|
withCredentials([
|
||||||
[$class: 'AmazonWebServicesCredentialsBinding',
|
[$class: 'AmazonWebServicesCredentialsBinding',
|
||||||
credentialsId: 'aws-ci',
|
credentialsId: 'aws-ci',
|
||||||
accessKeyVariable: 'AWS_ACCESS_KEY_ID',
|
accessKeyVariable: 'AWS_ACCESS_KEY_ID',
|
||||||
secretKeyVariable: 'AWS_SECRET_ACCESS_KEY'],
|
secretKeyVariable: 'AWS_SECRET_ACCESS_KEY'],
|
||||||
@@ -278,45 +278,50 @@ with app.test_client() as client:
|
|||||||
echo "ECR Repository: ${ECR_REPO_URI}"
|
echo "ECR Repository: ${ECR_REPO_URI}"
|
||||||
echo "Image Tag: ${IMAGE_TAG}"
|
echo "Image Tag: ${IMAGE_TAG}"
|
||||||
|
|
||||||
# Login to ECR
|
# Check if ECR repository exists FIRST (before login)
|
||||||
echo "🔐 Logging into ECR..."
|
echo "📦 Checking if ECR repository exists..."
|
||||||
aws ecr get-login-password --region $AWS_REGION | docker login --username AWS --password-stdin $ECR_REGISTRY
|
if aws ecr describe-repositories --repository-names ${ECR_REPO_NAME} --region ${AWS_REGION} 2>/dev/null; then
|
||||||
|
echo "✅ ECR repository exists - proceeding with Docker operations"
|
||||||
# Check if ECR repository exists, create if not
|
|
||||||
echo "📦 Checking ECR repository..."
|
# Login to ECR only if repository exists
|
||||||
if ! aws ecr describe-repositories --repository-names $ECR_REPO_NAME --region $AWS_REGION 2>/dev/null; then
|
echo "🔐 Logging into ECR..."
|
||||||
echo "🏗️ Creating ECR repository..."
|
aws ecr get-login-password --region ${AWS_REGION} | docker login --username AWS --password-stdin ${ECR_REGISTRY}
|
||||||
aws ecr create-repository --repository-name $ECR_REPO_NAME --region $AWS_REGION
|
|
||||||
|
# Build Docker image
|
||||||
|
echo "🔨 Building Docker image..."
|
||||||
|
docker build -t ${ECR_REPO_NAME}:${IMAGE_TAG} .
|
||||||
|
docker build -t ${ECR_REPO_NAME}:build-${BUILD_NUMBER} .
|
||||||
|
|
||||||
|
# Tag for ECR
|
||||||
|
docker tag ${ECR_REPO_NAME}:${IMAGE_TAG} ${ECR_REPO_URI}:${IMAGE_TAG}
|
||||||
|
docker tag ${ECR_REPO_NAME}:${IMAGE_TAG} ${ECR_REPO_URI}:build-${BUILD_NUMBER}
|
||||||
|
|
||||||
|
# Push to ECR
|
||||||
|
echo "🚀 Pushing to ECR..."
|
||||||
|
docker push ${ECR_REPO_URI}:${IMAGE_TAG}
|
||||||
|
docker push ${ECR_REPO_URI}:build-${BUILD_NUMBER}
|
||||||
|
|
||||||
|
# Clean up local images
|
||||||
|
docker rmi ${ECR_REPO_NAME}:${IMAGE_TAG} || true
|
||||||
|
docker rmi ${ECR_REPO_NAME}:build-${BUILD_NUMBER} || true
|
||||||
|
docker rmi ${ECR_REPO_URI}:${IMAGE_TAG} || true
|
||||||
|
docker rmi ${ECR_REPO_URI}:build-${BUILD_NUMBER} || true
|
||||||
|
|
||||||
|
echo "✅ Docker build and push completed"
|
||||||
|
echo "📍 Image available at: ${ECR_REPO_URI}:${IMAGE_TAG}"
|
||||||
|
else
|
||||||
|
echo "⚠️ ECR repository '${ECR_REPO_NAME}' doesn't exist yet"
|
||||||
|
echo "📝 Terraform will create it in the Apply stage"
|
||||||
|
echo "⏭️ Skipping Docker build/push for this initial deployment"
|
||||||
|
echo ""
|
||||||
|
echo "ℹ️ NOTE: After this pipeline completes, the ECR repository will exist."
|
||||||
|
echo " Run the pipeline again to build and push the Docker image."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Build Docker image
|
|
||||||
echo "🔨 Building Docker image..."
|
|
||||||
docker build -t $ECR_REPO_NAME:${IMAGE_TAG} .
|
|
||||||
docker build -t $ECR_REPO_NAME:build-${BUILD_NUMBER} .
|
|
||||||
|
|
||||||
# Tag for ECR
|
|
||||||
docker tag $ECR_REPO_NAME:${IMAGE_TAG} $ECR_REPO_URI:${IMAGE_TAG}
|
|
||||||
docker tag $ECR_REPO_NAME:${IMAGE_TAG} $ECR_REPO_URI:build-${BUILD_NUMBER}
|
|
||||||
|
|
||||||
# Push to ECR
|
|
||||||
echo "🚀 Pushing to ECR..."
|
|
||||||
docker push $ECR_REPO_URI:${IMAGE_TAG}
|
|
||||||
docker push $ECR_REPO_URI:build-${BUILD_NUMBER}
|
|
||||||
|
|
||||||
# Clean up local images
|
|
||||||
docker rmi $ECR_REPO_NAME:${IMAGE_TAG} || true
|
|
||||||
docker rmi $ECR_REPO_NAME:build-${BUILD_NUMBER} || true
|
|
||||||
docker rmi $ECR_REPO_URI:${IMAGE_TAG} || true
|
|
||||||
docker rmi $ECR_REPO_URI:build-${BUILD_NUMBER} || true
|
|
||||||
|
|
||||||
echo "✅ Docker build and push completed"
|
|
||||||
echo "📍 Image available at: $ECR_REPO_URI:${IMAGE_TAG}"
|
|
||||||
'''
|
'''
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
stage('🚀 Infrastructure Bootstrap') {
|
stage('🚀 Infrastructure Bootstrap') {
|
||||||
when {
|
when {
|
||||||
not { equals expected: 'destroy', actual: params.ACTION }
|
not { equals expected: 'destroy', actual: params.ACTION }
|
||||||
|
|||||||
Reference in New Issue
Block a user