Skip to content

Commit 6636c4d

Browse files
authored
fix(workflows): add AWS S3 permission check before release to fail fast on credential issues, point to new V2 creds (#1757)
1 parent a68779e commit 6636c4d

File tree

1 file changed

+62
-28
lines changed

1 file changed

+62
-28
lines changed

.github/workflows/release.yml

Lines changed: 62 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,65 @@ jobs:
5050
PGP_PRIVATE_KEY: ${{ secrets.PGP_PRIVATE_KEY }}
5151
run: echo "$PGP_PRIVATE_KEY" | gpg --batch --import
5252

53+
- name: Install AWS CLI
54+
run: |
55+
sudo snap install aws-cli --classic
56+
57+
- name: Write AWS config 1
58+
uses: DamianReeves/write-file-action@v1.3
59+
with:
60+
path: /home/runner/.aws/credentials
61+
contents: |
62+
[virtuoso_user]
63+
aws_access_key_id=${{ secrets.AWS_ACCESS_KEY_ID_V2 }}
64+
aws_secret_access_key=${{ secrets.AWS_SECRET_ACCESS_KEY_V2 }}
65+
write-mode: overwrite
66+
67+
- name: Write AWS config 2
68+
uses: DamianReeves/write-file-action@v1.3
69+
with:
70+
path: /home/runner/.aws/config
71+
contents: |
72+
[profile virtuoso]
73+
role_arn = ${{ secrets.AWS_ROLE_ARN_V2 }}
74+
region = ${{ secrets.AWS_DEFAULT_REGION }}
75+
source_profile = virtuoso_user
76+
write-mode: overwrite
77+
78+
- name: Verify AWS credentials for release artifact distribution to S3
79+
run: |
80+
set -e
81+
echo "🔐 Verifying AWS credentials and S3 bucket access..."
82+
echo "📦 Target bucket: s3://nr-downloads-main/install/newrelic-cli/"
83+
84+
echo "🔍 Testing S3 ListBucket permission..."
85+
if ! aws s3 ls s3://nr-downloads-main/install/newrelic-cli/ --profile virtuoso > /dev/null 2>&1; then
86+
echo "::error::❌ Failed to list S3 bucket. Please verify AWS credentials and s3:ListBucket permission."
87+
exit 1
88+
fi
89+
echo "✅ ListBucket permission verified"
90+
91+
echo "📝 Creating test file for upload verification..."
92+
TIMESTAMP=$(date -u +"%d-%m-%Y_T%H%M%S")
93+
TEST_FILE_NAME="permission-check-${TIMESTAMP}.txt"
94+
S3_TEST_PATH="s3://nr-downloads-main/install/newrelic-cli/workflow_tester/${TEST_FILE_NAME}"
95+
echo "test-permission-check" > /tmp/${TEST_FILE_NAME}
96+
echo "🕒 Test file: ${TEST_FILE_NAME}"
97+
98+
echo "⬆️ Testing S3 PutObject permission..."
99+
if ! aws s3 cp /tmp/${TEST_FILE_NAME} ${S3_TEST_PATH} --profile virtuoso > /dev/null 2>&1; then
100+
echo "::error::❌ Failed to upload to S3 bucket. Please verify s3:PutObject permission."
101+
rm -f /tmp/${TEST_FILE_NAME}
102+
exit 1
103+
fi
104+
echo "✅ PutObject permission verified"
105+
106+
echo "🧹 Cleaning up test artifacts..."
107+
aws s3 rm ${S3_TEST_PATH} --profile virtuoso > /dev/null 2>&1 || true
108+
rm -f /tmp/${TEST_FILE_NAME}
109+
110+
echo "✅ AWS S3 permissions validated successfully - ready for release artifact distribution!"
111+
53112
- name: Publish Release
54113
shell: bash
55114
env:
@@ -111,31 +170,6 @@ jobs:
111170
rm -f dist/newrelic-cli_${VERSION}_Windows_x86_64.zip
112171
zip -q dist/newrelic-cli_${VERSION}_Windows_x86_64.zip dist/newrelic_windows_amd64_v1/newrelic.exe
113172
114-
- name: Install AWS CLI
115-
run: |
116-
sudo snap install aws-cli --classic
117-
118-
- name: Write AWS config 1
119-
uses: DamianReeves/write-file-action@v1.3
120-
with:
121-
path: /home/runner/.aws/credentials
122-
contents: |
123-
[virtuoso_user]
124-
aws_access_key_id=${{ secrets.AWS_ACCESS_KEY_ID }}
125-
aws_secret_access_key=${{ secrets.AWS_SECRET_ACCESS_KEY }}
126-
write-mode: overwrite
127-
128-
- name: Write AWS config 2
129-
uses: DamianReeves/write-file-action@v1.3
130-
with:
131-
path: /home/runner/.aws/config
132-
contents: |
133-
[profile virtuoso]
134-
role_arn = ${{ secrets.AWS_ROLE_ARN }}
135-
region = ${{ secrets.AWS_DEFAULT_REGION }}
136-
source_profile = virtuoso_user
137-
write-mode: overwrite
138-
139173
- name: Upload Unix based install script to AWS
140174
id: upload-install-script
141175
run: |
@@ -249,9 +283,9 @@ jobs:
249283
RELEASE_TOKEN: ${{ secrets.RELEASE_TOKEN }}
250284
DEV_TOOLKIT_TOKEN: ${{ secrets.DEV_TOOLKIT_TOKEN }}
251285
CHOCOLATEY_API_KEY: ${{ secrets.CHOCOLATEY_API_KEY }}
252-
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
253-
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
254-
AWS_ROLE_ARN: ${{ secrets.AWS_ROLE_ARN }}
286+
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID_V2 }}
287+
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY_V2 }}
288+
AWS_ROLE_ARN: ${{ secrets.AWS_ROLE_ARN_V2 }}
255289
AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }}
256290

257291
snapshot:

0 commit comments

Comments
 (0)