4040 AWS_REGION : eu-west-1
4141
4242jobs :
43+ # Build AMI by running on a runs-on instance and creating an image from it
4344 build-x64 :
4445 name : " Build AMI (x64)"
4546 if : ${{ github.event_name != 'workflow_dispatch' || github.event.inputs.arch == '' || github.event.inputs.arch == 'x64' }}
46- runs-on : ubuntu-latest
47+ runs-on :
48+ - runs-on=${{ github.run_id }}
49+ - runner=2cpu-linux-x64
50+ - family=m7i+m7i-flex+m7a
51+ - tag=ami-build-x64
4752 timeout-minutes : 60
4853 outputs :
49- ami-id : ${{ steps.build.outputs.ami_id }}
50- ami-name : ${{ steps.build.outputs.ami_name }}
54+ ami-id : ${{ steps.build-ami .outputs.ami-id }}
55+ ami-name : ${{ steps.build-ami .outputs.ami-name }}
5156
5257 steps :
5358 - name : Checkout
@@ -59,58 +64,34 @@ jobs:
5964 role-to-assume : arn:aws:iam::375504701696:role/GitHubBenchmarkRole
6065 aws-region : ${{ env.AWS_REGION }}
6166
62- - name : Setup Packer
63- uses : hashicorp/setup-packer@main
67+ - name : Build AMI
68+ id : build-ami
69+ uses : ./.github/actions/build-ami
6470 with :
65- version : " 1.11.2"
66-
67- - name : Packer Init
68- working-directory : .github/packer
69- run : packer init vortex-ci.pkr.hcl
70-
71- - name : Packer Build
72- id : build
73- working-directory : .github/packer
74- run : |
75- packer build \
76- -var "arch=x64" \
77- -var "aws_region=${{ env.AWS_REGION }}" \
78- -var "subnet_id=${{ secrets.AWS_SUBNET_ID }}" \
79- -machine-readable \
80- vortex-ci.pkr.hcl | tee packer-output.log
81-
82- # Extract AMI ID from Packer output
83- AMI_ID=$(grep 'artifact,0,id' packer-output.log | tail -1 | cut -d',' -f6 | cut -d':' -f2)
84- AMI_NAME=$(grep 'artifact,0,string' packer-output.log | tail -1 | grep -oP 'AMIs were created:.*' | sed 's/AMIs were created:\\n\\n//' | head -1 || echo "vortex-ci-x64")
85-
86- echo "ami_id=$AMI_ID" >> $GITHUB_OUTPUT
87- echo "ami_name=$AMI_NAME" >> $GITHUB_OUTPUT
88- echo "Built AMI: $AMI_ID"
89-
90- - name : Set AMI Deprecation
91- run : |
92- RETENTION_DAYS=${{ inputs.retention-days || '30' }}
93- DEPRECATION_TIME=$(date -u -d "+${RETENTION_DAYS} days" +%Y-%m-%dT%H:%M:%SZ)
94- aws ec2 enable-image-deprecation \
95- --image-id "${{ steps.build.outputs.ami_id }}" \
96- --deprecate-at "$DEPRECATION_TIME"
97- echo "AMI will be deprecated at $DEPRECATION_TIME"
71+ arch : x64
72+ ami-prefix : vortex-ci
73+ retention-days : ${{ inputs.retention-days || '30' }}
9874
9975 - name : Summary
10076 run : |
10177 echo "## AMI Build Complete (x64)" >> $GITHUB_STEP_SUMMARY
10278 echo "" >> $GITHUB_STEP_SUMMARY
103- echo "- **AMI ID:** ${{ steps.build.outputs.ami_id }}" >> $GITHUB_STEP_SUMMARY
79+ echo "- **AMI ID:** ${{ steps.build-ami.outputs.ami-id }}" >> $GITHUB_STEP_SUMMARY
80+ echo "- **AMI Name:** ${{ steps.build-ami.outputs.ami-name }}" >> $GITHUB_STEP_SUMMARY
10481 echo "- **Deprecation:** ${{ inputs.retention-days || '30' }} days" >> $GITHUB_STEP_SUMMARY
10582
10683 build-arm64 :
10784 name : " Build AMI (arm64)"
10885 if : ${{ github.event_name != 'workflow_dispatch' || github.event.inputs.arch == '' || github.event.inputs.arch == 'arm64' }}
109- runs-on : ubuntu-latest
86+ runs-on :
87+ - runs-on=${{ github.run_id }}
88+ - runner=2cpu-linux-arm64
89+ - family=m7g
90+ - tag=ami-build-arm64
11091 timeout-minutes : 60
11192 outputs :
112- ami-id : ${{ steps.build.outputs.ami_id }}
113- ami-name : ${{ steps.build.outputs.ami_name }}
93+ ami-id : ${{ steps.build-ami .outputs.ami-id }}
94+ ami-name : ${{ steps.build-ami .outputs.ami-name }}
11495
11596 steps :
11697 - name : Checkout
@@ -122,48 +103,20 @@ jobs:
122103 role-to-assume : arn:aws:iam::375504701696:role/GitHubBenchmarkRole
123104 aws-region : ${{ env.AWS_REGION }}
124105
125- - name : Setup Packer
126- uses : hashicorp/setup-packer@main
106+ - name : Build AMI
107+ id : build-ami
108+ uses : ./.github/actions/build-ami
127109 with :
128- version : " 1.11.2"
129-
130- - name : Packer Init
131- working-directory : .github/packer
132- run : packer init vortex-ci.pkr.hcl
133-
134- - name : Packer Build
135- id : build
136- working-directory : .github/packer
137- run : |
138- packer build \
139- -var "arch=arm64" \
140- -var "aws_region=${{ env.AWS_REGION }}" \
141- -var "subnet_id=${{ secrets.AWS_SUBNET_ID }}" \
142- -machine-readable \
143- vortex-ci.pkr.hcl | tee packer-output.log
144-
145- # Extract AMI ID from Packer output
146- AMI_ID=$(grep 'artifact,0,id' packer-output.log | tail -1 | cut -d',' -f6 | cut -d':' -f2)
147- AMI_NAME=$(grep 'artifact,0,string' packer-output.log | tail -1 | grep -oP 'AMIs were created:.*' | sed 's/AMIs were created:\\n\\n//' | head -1 || echo "vortex-ci-arm64")
148-
149- echo "ami_id=$AMI_ID" >> $GITHUB_OUTPUT
150- echo "ami_name=$AMI_NAME" >> $GITHUB_OUTPUT
151- echo "Built AMI: $AMI_ID"
152-
153- - name : Set AMI Deprecation
154- run : |
155- RETENTION_DAYS=${{ inputs.retention-days || '30' }}
156- DEPRECATION_TIME=$(date -u -d "+${RETENTION_DAYS} days" +%Y-%m-%dT%H:%M:%SZ)
157- aws ec2 enable-image-deprecation \
158- --image-id "${{ steps.build.outputs.ami_id }}" \
159- --deprecate-at "$DEPRECATION_TIME"
160- echo "AMI will be deprecated at $DEPRECATION_TIME"
110+ arch : arm64
111+ ami-prefix : vortex-ci
112+ retention-days : ${{ inputs.retention-days || '30' }}
161113
162114 - name : Summary
163115 run : |
164116 echo "## AMI Build Complete (arm64)" >> $GITHUB_STEP_SUMMARY
165117 echo "" >> $GITHUB_STEP_SUMMARY
166- echo "- **AMI ID:** ${{ steps.build.outputs.ami_id }}" >> $GITHUB_STEP_SUMMARY
118+ echo "- **AMI ID:** ${{ steps.build-ami.outputs.ami-id }}" >> $GITHUB_STEP_SUMMARY
119+ echo "- **AMI Name:** ${{ steps.build-ami.outputs.ami-name }}" >> $GITHUB_STEP_SUMMARY
167120 echo "- **Deprecation:** ${{ inputs.retention-days || '30' }} days" >> $GITHUB_STEP_SUMMARY
168121
169122 # Test the newly built AMI
0 commit comments