Skip to content

Commit 895d1c5

Browse files
authored
Add a script to generate release notes (#132)
1 parent 652e4d4 commit 895d1c5

1 file changed

Lines changed: 183 additions & 0 deletions

File tree

generate-release-notes.sh

Lines changed: 183 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,183 @@
1+
#!/bin/bash
2+
3+
set -eo pipefail
4+
5+
usage() {
6+
echo "Usage:"
7+
echo " $0 AL2_GPU_NVIDIA_VERSION AL2_GPU_CUDA_VERSION [AL1_CONTAINERD_VERSION]"
8+
echo " AL1_CONTAINERD_VERSION should not be provided if there is no AL1 AMI release"
9+
echo "Example:"
10+
echo " $0 470.182.03 11.4 1.4.13 # AL1 release included"
11+
echo " $0 470.182.03 11.4 # No AL1 release"
12+
}
13+
14+
# Parameters
15+
al2_gpu_nvidia_version=$1
16+
al2_gpu_cuda_version=$2
17+
al1_containerd_version=$3 # Optional, will include AL1 in the release notes if provided
18+
19+
if [ "$al2_gpu_nvidia_version" == "" ]; then
20+
echo "Error: AL2 GPU NVIDIA version is empty"
21+
usage
22+
exit 1
23+
fi
24+
if [ "$al2_gpu_cuda_version" == "" ]; then
25+
echo "Error: AL2 GPU CUDA version is empty"
26+
usage
27+
exit 1
28+
fi
29+
30+
# Read some information from pkrvars file
31+
readonly pkrvars="release.auto.pkrvars.hcl"
32+
readonly ami_version=$(cat $pkrvars | grep -w 'ami_version' | cut -d '"' -f2)
33+
readonly containerd_version_al2023=$(cat $pkrvars | grep -w 'containerd_version_al2023' | cut -d '"' -f2)
34+
readonly distribution_release_al2023=$(cat $pkrvars | grep -w 'distribution_release_al2023' | cut -d '"' -f2)
35+
readonly containerd_version=$(cat $pkrvars | grep -w 'containerd_version' | cut -d '"' -f2)
36+
37+
if [ -z "$ami_version" ]; then
38+
echo "Error: AMI version was not found in $pkrvars"
39+
exit 1
40+
fi
41+
if [ -z "$containerd_version_al2023" ]; then
42+
echo "Error: Containerd version was not found for AL2023 in $pkrvars"
43+
exit 1
44+
fi
45+
if [ -z "$distribution_release_al2023" ]; then
46+
echo "Error: Distribution release version was not found for AL2023 in $pkrvars"
47+
exit 1
48+
fi
49+
if [ -z "$containerd_version" ]; then
50+
echo "Error: Containerd version was not found in $pkrvars"
51+
exit 1
52+
fi
53+
54+
# Gets ECS Optimized AMI details from SSM parameter store given the paramter name.
55+
# Uses the default AWS credentials as the parameter is public and can be
56+
# fetched from a standard region (us-west-2 is used).
57+
get_ami_details() {
58+
parameter_name=$1
59+
ami_details=$(aws ssm --region "us-west-2" get-parameters --names $parameter_name --query 'Parameters[0].Value' --output text | jq .)
60+
ami_name=$(echo "$ami_details" | jq -r '.image_name')
61+
agent_version=$(echo "$ami_details" | jq -r '.ecs_agent_version')
62+
docker_version=$(echo "$ami_details" | jq -r '.ecs_runtime_version' | awk '{print $3}')
63+
source_ami_name=$(echo "$ami_details" | jq -r '.source_image_name')
64+
echo "$ami_name $agent_version $docker_version $source_ami_name"
65+
}
66+
67+
# AL2023 AMI details
68+
read ami_name_al2023_x86 agent_version_al2023_x86 docker_version_al2023_x86 source_ami_name_al2023_x86 <<<$(get_ami_details "/aws/service/ecs/optimized-ami/amazon-linux-2023/recommended")
69+
read ami_name_al2023_arm agent_version_al2023_arm docker_version_al2023_arm source_ami_name_al2023_arm <<<$(get_ami_details "/aws/service/ecs/optimized-ami/amazon-linux-2023/arm64/recommended")
70+
read ami_name_al2023_neuron agent_version_al2023_neuron docker_version_al2023_neuron source_ami_name_al2023_neuron <<<$(get_ami_details "/aws/service/ecs/optimized-ami/amazon-linux-2023/neuron/recommended")
71+
72+
# AL2 AMI details
73+
read ami_name_al2_x86 agent_version_al2_x86 docker_version_al2_x86 source_ami_name_al2_x86 <<<$(get_ami_details "/aws/service/ecs/optimized-ami/amazon-linux-2/recommended")
74+
read ami_name_al2_arm agent_version_al2_arm docker_version_al2_arm source_ami_name_al2_arm <<<$(get_ami_details "/aws/service/ecs/optimized-ami/amazon-linux-2/arm64/recommended")
75+
read ami_name_al2_gpu agent_version_al2_gpu docker_version_al2_gpu source_ami_name_al2_gpu <<<$(get_ami_details "/aws/service/ecs/optimized-ami/amazon-linux-2/gpu/recommended")
76+
read ami_name_al2_inf agent_version_al2_inf docker_version_al2_inf source_ami_name_al2_inf <<<$(get_ami_details "/aws/service/ecs/optimized-ami/amazon-linux-2/inf/recommended")
77+
read ami_name_al2_kernel_5_10 agent_version_al2_kernel_5_10 docker_version_al2_kernel_5_10 source_ami_name_al2_kernel_5_10 <<<$(get_ami_details "/aws/service/ecs/optimized-ami/amazon-linux-2/kernel-5.10/recommended")
78+
read ami_name_al2_kernel_5_10_arm agent_version_al2_kernel_5_10_arm docker_version_al2_kernel_5_10_arm source_ami_name_al2_kernel_5_10_arm <<<$(get_ami_details "/aws/service/ecs/optimized-ami/amazon-linux-2/kernel-5.10/arm64/recommended")
79+
80+
# AL1 AMI details
81+
read ami_name_al1 agent_version_al1 docker_version_al1 source_ami_name_al1 <<<$(get_ami_details "/aws/service/ecs/optimized-ami/amazon-linux/recommended")
82+
83+
# Prepare release notes
84+
release_notes="### Source AMI release notes
85+
---
86+
* [Amazon Linux 2023 release notes](https://docs.aws.amazon.com/linux/al2023/release-notes/relnotes.html)
87+
* [Amazon Linux 2 release notes](https://docs.aws.amazon.com/AL2/latest/relnotes/relnotes-al2.html)
88+
* [Amazon Linux release notes](https://aws.amazon.com/amazon-linux-ami/2018.03-release-notes)
89+
90+
### Changelog
91+
---
92+
https://github.com/aws/amazon-ecs-ami/blob/main/CHANGELOG.md#$ami_version
93+
94+
### Amazon ECS-optimized Amazon Linux 2023 AMI
95+
---
96+
#### AMD64
97+
- AMI name: $ami_name_al2023_x86
98+
- ECS Agent version: [$agent_version_al2023_x86](https://github.com/aws/amazon-ecs-agent/releases/tag/v$agent_version_al2023_x86)
99+
- Docker version: $docker_version_al2023_x86
100+
- Containerd version: $containerd_version_al2023
101+
- Source AMI name: $source_ami_name_al2023_x86
102+
- Distribution al2023 release: $distribution_release_al2023
103+
104+
#### ARM64
105+
- AMI name: $ami_name_al2023_arm
106+
- ECS Agent version: [$agent_version_al2023_arm](https://github.com/aws/amazon-ecs-agent/releases/tag/v$agent_version_al2023_arm)
107+
- Docker version: $docker_version_al2023_arm
108+
- Containerd version: $containerd_version_al2023
109+
- Source AMI name: $source_ami_name_al2023_arm
110+
- Distribution al2023 release: $distribution_release_al2023
111+
112+
#### Neuron
113+
- AMI name: $ami_name_al2023_neuron
114+
- ECS Agent version: [$agent_version_al2023_neuron](https://github.com/aws/amazon-ecs-agent/releases/tag/v$agent_version_al2023_neuron)
115+
- Docker version: $docker_version_al2023_neuron
116+
- Containerd version: $containerd_version_al2023
117+
- Source AMI name: $source_ami_name_al2023_neuron
118+
- Distribution al2023 release: $distribution_release_al2023
119+
120+
### Amazon ECS-optimized Amazon Linux 2 AMI
121+
---
122+
#### AMD64 (Kernel 4.14)
123+
- AMI name: $ami_name_al2_x86
124+
- ECS Agent version: [$agent_version_al2_x86](https://github.com/aws/amazon-ecs-agent/releases/tag/v$agent_version_al2_x86)
125+
- Docker version: $docker_version_al2_x86
126+
- Containerd version: $containerd_version
127+
- Source AMI name: $source_ami_name_al2_x86
128+
129+
#### ARM64 (Kernel 4.14)
130+
- AMI name: $ami_name_al2_arm
131+
- ECS Agent version: [$agent_version_al2_arm](https://github.com/aws/amazon-ecs-agent/releases/tag/v$agent_version_al2_arm)
132+
- Docker version: $docker_version_al2_arm
133+
- Containerd version: $containerd_version
134+
- Source AMI name: $source_ami_name_al2_arm
135+
136+
#### Neuron (Kernel 4.14)
137+
- AMI name: $ami_name_al2_inf
138+
- ECS Agent version: [$agent_version_al2_inf](https://github.com/aws/amazon-ecs-agent/releases/tag/v$agent_version_al2_inf)
139+
- Docker version: $docker_version_al2_inf
140+
- Containerd version: $containerd_version
141+
- Source AMI name: $source_ami_name_al2_inf
142+
143+
#### GPU (Kernel 4.14)
144+
- AMI name: $ami_name_al2_gpu
145+
- ECS Agent version: [$agent_version_al2_gpu](https://github.com/aws/amazon-ecs-agent/releases/tag/v$agent_version_al2_gpu)
146+
- Docker version: $docker_version_al2_gpu
147+
- Containerd version: $containerd_version
148+
- NVIDIA driver version: $al2_gpu_nvidia_version
149+
- CUDA version: $al2_gpu_cuda_version
150+
- Source AMI name: $source_ami_name_al2_gpu
151+
152+
#### AMD64 (Kernel 5.10)
153+
- AMI name: $ami_name_al2_kernel_5_10
154+
- ECS Agent version: [$agent_version_al2_kernel_5_10](https://github.com/aws/amazon-ecs-agent/releases/tag/v$agent_version_al2_kernel_5_10)
155+
- Docker version: $docker_version_al2_kernel_5_10
156+
- Containerd version: $containerd_version
157+
- Source AMI name: $source_ami_name_al2_kernel_5_10
158+
159+
#### ARM64 (Kernel 5.10)
160+
- AMI name: $ami_name_al2_kernel_5_10_arm
161+
- ECS Agent version: [$agent_version_al2_kernel_5_10_arm](https://github.com/aws/amazon-ecs-agent/releases/tag/v$agent_version_al2_kernel_5_10_arm)
162+
- Docker version: $docker_version_al2_kernel_5_10_arm
163+
- Containerd version: $containerd_version
164+
- Source AMI name: $source_ami_name_al2_kernel_5_10_arm"
165+
166+
# Include AL1 release notes if there was an AL1 release
167+
if [ -n "$al1_containerd_version" ]; then
168+
al1_release_notes="
169+
170+
### Amazon ECS-optimized Amazon Linux AMI
171+
---
172+
The Amazon ECS-optimized Amazon Linux AMI is deprecated as of April 15, 2021. After that date, Amazon ECS will continue providing critical and important security updates for the AMI but will not add support for new features.
173+
174+
- AMI name: $ami_name_al1
175+
- ECS Agent version: [$agent_version_al1](https://github.com/aws/amazon-ecs-agent/releases/tag/v$agent_version_al1)
176+
- Docker version: $docker_version_al1
177+
- Containerd version: $al1_containerd_version
178+
- Source AMI name: $source_ami_name_al1"
179+
180+
release_notes="${release_notes}${al1_release_notes}"
181+
fi
182+
183+
echo "$release_notes"

0 commit comments

Comments
 (0)