1- name : Deploy Elasticsearch Infrastructure
1+ name : Deploy Complete Elasticsearch Infrastructure
22
33on :
44 push :
55 branches :
66 - main
7- paths :
8- - ' terraform/**'
97 workflow_dispatch :
108
119permissions :
@@ -14,30 +12,41 @@ permissions:
1412
1513env :
1614 AWS_REGION : eu-central-1
17- ECS_CLUSTER : elasticsearch-javazone
18- ECS_SERVICE : elasticsearch-javazone
1915
2016jobs :
21- terraform- deploy :
17+ deploy :
2218 runs-on : ubuntu-latest
2319 steps :
2420 - name : Checkout repository
2521 uses : actions/checkout@v4
2622
27- - name : Configure AWS Credentials (OIDC)
23+ - name : Setup Java
24+ uses : actions/setup-java@v3
25+ with :
26+ distribution : ' temurin'
27+ java-version : ' 11'
28+ cache : ' maven'
29+
30+ - name : Build webhook-receiver Lambda
31+ working-directory : lambda/webhook-receiver
32+ run : mvn clean package -DskipTests
33+
34+ - name : Build es-indexer-worker Lambda
35+ working-directory : lambda/es-indexer-worker
36+ run : mvn clean package -DskipTests
37+
38+ - name : Configure AWS Credentials
2839 uses : aws-actions/configure-aws-credentials@v4
2940 with :
3041 aws-region : ${{ env.AWS_REGION }}
3142 role-to-assume : ${{ secrets.AWS_OIDC }}
32- role-session-name : GitHubActions-OIDC
3343
34- - name : Assume CDK Deploy Role for Terraform
44+ - name : Assume CDK Deploy Role
3545 uses : aws-actions/configure-aws-credentials@v4
3646 with :
3747 aws-region : ${{ env.AWS_REGION }}
3848 role-to-assume : arn:aws:iam::553637109631:role/cdk-hnb659fds-deploy-role-553637109631-eu-central-1
3949 role-chaining : true
40- role-session-name : GitHubActions-Deploy
4150
4251 - name : Setup Terraform
4352 uses : hashicorp/setup-terraform@v3
@@ -54,45 +63,62 @@ jobs:
5463 run : terraform plan -input=false
5564 env :
5665 TF_VAR_vpc_id : ${{ secrets.VPC_ID }}
57- TF_VAR_subnet_ids : ${{ secrets.ES_SUBNET_IDS }}
66+ TF_VAR_es_subnet_ids : ${{ secrets.ES_SUBNET_IDS }}
5867 TF_VAR_assign_public_ip : false
5968 TF_VAR_allowed_cidr_blocks : ${{ secrets.VPC_CIDR_BLOCKS }}
6069 TF_VAR_elasticsearch_password : ${{ secrets.ELASTICSEARCH_PASSWORD }}
70+ TF_VAR_elasticsearch_url : http://elasticsearch.javazone.internal:9200
6171 TF_VAR_task_cpu : 1024
6272 TF_VAR_task_memory : 2048
6373 TF_VAR_heap_size : 1024
64- TF_VAR_enable_service_discovery : true
74+ TF_VAR_webhook_secret : ${{ secrets.WEBHOOK_SECRET }}
75+ TF_VAR_moresleep_url : ${{ secrets.MORESLEEP_URL }}
76+ TF_VAR_moresleep_username : ${{ secrets.MORESLEEP_USERNAME }}
77+ TF_VAR_moresleep_password : ${{ secrets.MORESLEEP_PASSWORD }}
6578
6679 - name : Terraform Apply
6780 working-directory : terraform
6881 run : terraform apply -auto-approve -input=false
6982 env :
7083 TF_VAR_vpc_id : ${{ secrets.VPC_ID }}
71- TF_VAR_subnet_ids : ${{ secrets.ES_SUBNET_IDS }}
84+ TF_VAR_es_subnet_ids : ${{ secrets.ES_SUBNET_IDS }}
7285 TF_VAR_assign_public_ip : false
7386 TF_VAR_allowed_cidr_blocks : ${{ secrets.VPC_CIDR_BLOCKS }}
7487 TF_VAR_elasticsearch_password : ${{ secrets.ELASTICSEARCH_PASSWORD }}
88+ TF_VAR_elasticsearch_url : http://elasticsearch.javazone.internal:9200
7589 TF_VAR_task_cpu : 1024
7690 TF_VAR_task_memory : 2048
7791 TF_VAR_heap_size : 1024
78- TF_VAR_enable_service_discovery : true
92+ TF_VAR_webhook_secret : ${{ secrets.WEBHOOK_SECRET }}
93+ TF_VAR_moresleep_url : ${{ secrets.MORESLEEP_URL }}
94+ TF_VAR_moresleep_username : ${{ secrets.MORESLEEP_USERNAME }}
95+ TF_VAR_moresleep_password : ${{ secrets.MORESLEEP_PASSWORD }}
7996
80- - name : Wait for Elasticsearch to be ready
97+ - name : Show Outputs
98+ working-directory : terraform
8199 run : |
82- echo "Waiting 120 seconds for Elasticsearch to start..."
83- sleep 120
100+ echo "================================================"
101+ echo "✅ Deployment Complete!"
102+ echo "================================================"
103+ echo ""
104+ echo "🔗 Webhook URL for moresleep:"
105+ terraform output -raw webhook_url
106+ echo ""
107+ echo ""
108+ echo "📊 Elasticsearch:"
109+ terraform output -raw elasticsearch_endpoint
110+ echo ""
111+ echo ""
112+ echo "📦 SQS Queue:"
113+ terraform output -raw sqs_queue_url
114+ echo ""
115+ echo "================================================"
84116
85117 - name : Create Elasticsearch Index
86118 run : |
87- # Get Elasticsearch URL from service discovery or task IP
119+ sleep 60
88120 ES_URL="http://elasticsearch.javazone.internal:9200"
89-
90- # Create index (idempotent - won't fail if already exists)
91121 curl -X PUT "$ES_URL/javazone_talks" \
92122 -u elastic:${{ secrets.ELASTICSEARCH_PASSWORD }} \
93123 -H "Content-Type: application/json" \
94124 -d @config/index-mapping.json || echo "Index may already exist"
95-
96- # Verify cluster health
97- curl -u elastic:${{ secrets.ELASTICSEARCH_PASSWORD }} \
98- "$ES_URL/_cluster/health"
0 commit comments