Skip to content

Commit fbcb8c3

Browse files
authored
Update build-comparison.yml
1 parent d34b719 commit fbcb8c3

File tree

1 file changed

+98
-19
lines changed

1 file changed

+98
-19
lines changed

.github/workflows/build-comparison.yml

Lines changed: 98 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ jobs:
2424
name: HashiCorp Packer Build
2525
runs-on: ubuntu-latest
2626
if: ${{ github.event.inputs.run_packer == 'true' }}
27-
27+
2828
steps:
2929
- name: Checkout
3030
uses: actions/checkout@v4
@@ -43,15 +43,36 @@ jobs:
4343

4444
- name: Get latest Ubuntu AMI
4545
run: |
46+
echo "🔍 Searching for Ubuntu 22.04 AMI..."
47+
48+
# Try specific search first
4649
UBUNTU_AMI=$(aws ec2 describe-images \
4750
--owners 099720109477 \
4851
--filters \
4952
"Name=name,Values=ubuntu/images/hvm-ssd/ubuntu-22.04-amd64-server-*" \
5053
"Name=state,Values=available" \
5154
--query 'Images | sort_by(@, &CreationDate) | [-1].ImageId' \
52-
--output text)
53-
54-
echo "Found Ubuntu AMI: $UBUNTU_AMI"
55+
--output text 2>/dev/null || echo "")
56+
57+
# If that fails, try broader search
58+
if [ "$UBUNTU_AMI" = "" ] || [ "$UBUNTU_AMI" = "None" ]; then
59+
echo "⚠️ First search failed, trying broader search..."
60+
UBUNTU_AMI=$(aws ec2 describe-images \
61+
--owners 099720109477 \
62+
--filters \
63+
"Name=name,Values=ubuntu/images/hvm-ssd/ubuntu-*-amd64-server-*" \
64+
"Name=state,Values=available" \
65+
--query 'Images | sort_by(@, &CreationDate) | [-1].ImageId' \
66+
--output text)
67+
fi
68+
69+
# Fallback to known AMI
70+
if [ "$UBUNTU_AMI" = "" ] || [ "$UBUNTU_AMI" = "None" ]; then
71+
echo "⚠️ Using hardcoded Ubuntu 22.04 AMI for us-west-2"
72+
UBUNTU_AMI="ami-0c2d3e23eb7b0270d"
73+
fi
74+
75+
echo "✅ Using Ubuntu AMI: $UBUNTU_AMI"
5576
echo "UBUNTU_AMI=$UBUNTU_AMI" >> $GITHUB_ENV
5677
5778
- name: Create Packer template
@@ -72,7 +93,7 @@ jobs:
7293
region = "${{ env.AWS_REGION }}"
7394
source_ami = "${{ env.UBUNTU_AMI }}"
7495
ssh_username = "ubuntu"
75-
96+
7697
tags = {
7798
Name = "packer-demo-\${timestamp()}"
7899
Tool = "HashiCorp-Packer"
@@ -81,7 +102,7 @@ jobs:
81102
82103
build {
83104
sources = ["source.amazon-ebs.ubuntu"]
84-
105+
85106
provisioner "shell" {
86107
inline = [
87108
"sudo apt-get update",
@@ -111,7 +132,7 @@ jobs:
111132
name: AWS EC2 Image Builder Build
112133
runs-on: ubuntu-latest
113134
if: ${{ github.event.inputs.run_ec2_imagebuilder == 'true' }}
114-
135+
115136
steps:
116137
- name: Checkout
117138
uses: actions/checkout@v4
@@ -125,21 +146,53 @@ jobs:
125146

126147
- name: Get latest Ubuntu AMI
127148
run: |
149+
echo "🔍 Searching for Ubuntu 22.04 AMI..."
150+
151+
# Try multiple search patterns
128152
UBUNTU_AMI=$(aws ec2 describe-images \
129153
--owners 099720109477 \
130154
--filters \
131155
"Name=name,Values=ubuntu/images/hvm-ssd/ubuntu-22.04-amd64-server-*" \
132156
"Name=state,Values=available" \
133157
--query 'Images | sort_by(@, &CreationDate) | [-1].ImageId' \
134-
--output text)
135-
136-
echo "Found Ubuntu AMI: $UBUNTU_AMI"
158+
--output text 2>/dev/null || echo "")
159+
160+
# If that fails, try a broader search
161+
if [ "$UBUNTU_AMI" = "" ] || [ "$UBUNTU_AMI" = "None" ]; then
162+
echo "⚠️ First search failed, trying broader search..."
163+
UBUNTU_AMI=$(aws ec2 describe-images \
164+
--owners 099720109477 \
165+
--filters \
166+
"Name=name,Values=ubuntu/images/hvm-ssd/ubuntu-*-amd64-server-*" \
167+
"Name=state,Values=available" \
168+
--query 'Images | sort_by(@, &CreationDate) | [-1].ImageId' \
169+
--output text)
170+
fi
171+
172+
# If still fails, use a known working AMI
173+
if [ "$UBUNTU_AMI" = "" ] || [ "$UBUNTU_AMI" = "None" ]; then
174+
echo "⚠️ AMI search failed, using hardcoded Ubuntu 22.04 AMI for us-west-2"
175+
UBUNTU_AMI="ami-0c2d3e23eb7b0270d" # Ubuntu 22.04 LTS in us-west-2
176+
fi
177+
178+
echo "✅ Using Ubuntu AMI: $UBUNTU_AMI"
179+
180+
# Verify the AMI exists
181+
aws ec2 describe-images --image-ids $UBUNTU_AMI --query 'Images[0].Name' --output text
182+
137183
echo "UBUNTU_AMI=$UBUNTU_AMI" >> $GITHUB_ENV
138184
139185
- name: Run EC2 Image Builder pipeline
140186
run: |
141187
echo "🚀 Starting EC2 Image Builder with AMI: $UBUNTU_AMI"
142-
188+
189+
# Verify we have a valid AMI
190+
if [ "$UBUNTU_AMI" = "" ] || [ "$UBUNTU_AMI" = "None" ]; then
191+
echo "❌ No valid AMI found. Exiting."
192+
exit 1
193+
fi
194+
195+
# Create component with proper YAML formatting
143196
cat > component.yml << 'EOF'
144197
name: InstallNginx
145198
description: Install Nginx web server
@@ -159,6 +212,10 @@ jobs:
159212
- echo '<h1>Built with EC2 Image Builder</h1>' > /var/www/html/index.html
160213
EOF
161214
215+
echo "📋 Component YAML:"
216+
cat component.yml
217+
218+
# Create component
162219
COMPONENT_ARN=$(aws imagebuilder create-component \
163220
--name "nginx-component-$(date +%s)" \
164221
--semantic-version "1.0.0" \
@@ -167,9 +224,10 @@ jobs:
167224
--data file://component.yml \
168225
--query 'componentBuildVersionArn' \
169226
--output text)
170-
227+
171228
echo "✅ Component created: $COMPONENT_ARN"
172-
229+
230+
# Create image recipe
173231
RECIPE_ARN=$(aws imagebuilder create-image-recipe \
174232
--name "nginx-recipe-$(date +%s)" \
175233
--semantic-version "1.0.0" \
@@ -178,27 +236,48 @@ jobs:
178236
--components componentArn=$COMPONENT_ARN \
179237
--query 'imageRecipeArn' \
180238
--output text)
181-
239+
182240
echo "✅ Recipe created: $RECIPE_ARN"
183-
241+
242+
# Get default VPC info for infrastructure config
243+
DEFAULT_VPC=$(aws ec2 describe-vpcs \
244+
--filters "Name=is-default,Values=true" \
245+
--query 'Vpcs[0].VpcId' \
246+
--output text)
247+
248+
DEFAULT_SUBNET=$(aws ec2 describe-subnets \
249+
--filters "Name=vpc-id,Values=$DEFAULT_VPC" \
250+
--query 'Subnets[0].SubnetId' \
251+
--output text)
252+
253+
echo "🌐 Using VPC: $DEFAULT_VPC, Subnet: $DEFAULT_SUBNET"
254+
255+
# Create infrastructure configuration
184256
INFRA_ARN=$(aws imagebuilder create-infrastructure-configuration \
185257
--name "basic-infra-$(date +%s)" \
186258
--instance-types t3.micro \
259+
--subnet-id "$DEFAULT_SUBNET" \
187260
--query 'infrastructureConfigurationArn' \
188261
--output text)
189-
262+
190263
echo "✅ Infrastructure config created: $INFRA_ARN"
191-
264+
265+
# Start image build
192266
IMAGE_ARN=$(aws imagebuilder create-image \
193267
--image-recipe-arn "$RECIPE_ARN" \
194268
--infrastructure-configuration-arn "$INFRA_ARN" \
195269
--query 'imageBuildVersionArn' \
196270
--output text)
197-
271+
198272
echo "✅ Image build started: $IMAGE_ARN"
273+
274+
# Create build log
199275
echo "Build Summary:" > ec2-imagebuilder-build.log
200276
echo "Base AMI: $UBUNTU_AMI" >> ec2-imagebuilder-build.log
201277
echo "Image ARN: $IMAGE_ARN" >> ec2-imagebuilder-build.log
278+
echo "Recipe ARN: $RECIPE_ARN" >> ec2-imagebuilder-build.log
279+
echo "Component ARN: $COMPONENT_ARN" >> ec2-imagebuilder-build.log
280+
echo "Infrastructure ARN: $INFRA_ARN" >> ec2-imagebuilder-build.log
202281
203282
- name: Upload EC2 Image Builder logs
204283
uses: actions/upload-artifact@v4
@@ -211,7 +290,7 @@ jobs:
211290
runs-on: ubuntu-latest
212291
needs: [packer-build, ec2-imagebuilder-build]
213292
if: always()
214-
293+
215294
steps:
216295
- name: Generate comparison report
217296
run: |

0 commit comments

Comments
 (0)