Skip to content

Commit 3297181

Browse files
committed
chore: upgrade nodejs version
1 parent 60062c3 commit 3297181

File tree

6 files changed

+80
-93
lines changed

6 files changed

+80
-93
lines changed

.github/workflows/release.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ jobs:
1414
- name: Setup node.js
1515
uses: actions/setup-node@v3
1616
with:
17-
node-version: 16
17+
node-version: 20
1818
cache: yarn
1919

2020
- name: Install dependencies
@@ -31,7 +31,7 @@ jobs:
3131
- name: Setup node.js
3232
uses: actions/setup-node@v3
3333
with:
34-
node-version: 16
34+
node-version: 20
3535
cache: yarn
3636

3737
- name: Install dependencies
@@ -57,7 +57,7 @@ jobs:
5757
- name: Setup node.js
5858
uses: actions/setup-node@v3
5959
with:
60-
node-version: 16
60+
node-version: 20
6161
cache: yarn
6262

6363
- name: Install dependencies
@@ -84,7 +84,7 @@ jobs:
8484
- name: Setup node.js
8585
uses: actions/setup-node@v3
8686
with:
87-
node-version: 16
87+
node-version: 20
8888
cache: yarn
8989

9090
- name: Install dependencies
@@ -107,7 +107,7 @@ jobs:
107107
- name: Setup node.js
108108
uses: actions/setup-node@v3
109109
with:
110-
node-version: 16
110+
node-version: 20
111111
cache: yarn
112112

113113
- name: Install dependencies

.github/workflows/test.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ jobs:
1818
- name: Setup node.js
1919
uses: actions/setup-node@v3
2020
with:
21-
node-version: 16
21+
node-version: 20
2222
cache: yarn
2323

2424
- name: Install dependencies
@@ -35,7 +35,7 @@ jobs:
3535
- name: Setup node.js
3636
uses: actions/setup-node@v3
3737
with:
38-
node-version: 16
38+
node-version: 20
3939
cache: yarn
4040

4141
- name: Install dependencies
@@ -55,7 +55,7 @@ jobs:
5555
- name: Setup node.js
5656
uses: actions/setup-node@v3
5757
with:
58-
node-version: 16
58+
node-version: 20
5959
cache: yarn
6060

6161
- name: Install dependencies
@@ -81,7 +81,7 @@ jobs:
8181
- name: Setup node.js
8282
uses: actions/setup-node@v3
8383
with:
84-
node-version: 16
84+
node-version: 20
8585
cache: yarn
8686

8787
- name: Install dependencies

action.yml

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,27 @@
1-
name: 'aws-secrets-manager-actions'
2-
description: 'GitHub Actions for AWS Secrets Manager'
1+
name: "aws-secrets-manager-actions"
2+
description: "GitHub Actions for AWS Secrets Manager"
33
inputs:
44
SECRET_NAME:
5-
description: 'Set secret name that you want to get.'
5+
description: "Set secret name that you want to get."
66
required: true
77
AWS_ACCESS_KEY_ID:
8-
description: 'Set Aws Access Key ID'
8+
description: "Set Aws Access Key ID"
99
required: false
1010
AWS_SECRET_ACCESS_KEY:
11-
description: 'Set Aws Secret access Key'
11+
description: "Set Aws Secret access Key"
1212
required: false
1313
AWS_SESSION_TOKEN:
14-
description: 'Set Aws Session token Key'
14+
description: "Set Aws Session token Key"
1515
required: false
1616
AWS_DEFAULT_REGION:
17-
description: 'Set Aws default region'
17+
description: "Set Aws default region"
1818
required: false
1919
OUTPUT_PATH:
20-
description: 'Set output file where variables are write'
20+
description: "Set output file where variables are write"
2121
required: false
2222
runs:
23-
using: 'node16'
24-
main: 'dist/index.js'
23+
using: "node20"
24+
main: "dist/index.js"
2525
branding:
26-
icon: 'lock'
27-
color: 'orange'
26+
icon: "lock"
27+
color: "orange"

index.js

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ const aws = require('aws-sdk')
33
const fs = require('fs')
44

55
const outputPath = core.getInput('OUTPUT_PATH')
6-
const secretName = core.getInput('SECRET_NAME')
76

87
const AWSConfig = {
98
accessKeyId: core.getInput('AWS_ACCESS_KEY_ID') || process.env.AWS_ACCESS_KEY_ID,
@@ -15,40 +14,41 @@ if (core.getInput('AWS_SESSION_TOKEN') || process.env.AWS_SESSION_TOKEN) {
1514
AWSConfig.sessionToken = core.getInput('AWS_SESSION_TOKEN') || process.env.AWS_SESSION_TOKEN
1615
}
1716

18-
const secretsManager = new aws.SecretsManager(AWSConfig)
19-
2017
async function getSecretValue (secretsManager, secretName) {
21-
return secretsManager.getSecretValue({ SecretId: secretName }).promise()
22-
}
18+
try {
19+
if (!secretsManager) {
20+
secretsManager = new aws.SecretsManager(AWSConfig)
21+
}
2322

24-
getSecretValue(secretsManager, secretName).then(resp => {
25-
const secretString = resp.SecretString
26-
core.setSecret(secretString)
23+
const resp = await secretsManager.getSecretValue({ SecretId: secretName }).promise()
24+
const secretString = resp.SecretString
25+
core.setSecret(secretString)
2726

28-
if (secretString == null) {
29-
core.warning(`${secretName} has no secret values`)
30-
return
31-
}
32-
33-
try {
34-
const parsedSecret = JSON.parse(secretString)
35-
Object.entries(parsedSecret).forEach(([key, value]) => {
36-
core.setSecret(value)
37-
core.exportVariable(key, value)
38-
})
39-
if (outputPath) {
40-
const secretsAsEnv = Object.entries(parsedSecret).map(([key, value]) => `${key}=${value}`).join('\n')
41-
fs.writeFileSync(outputPath, secretsAsEnv)
27+
if (secretString == null) {
28+
core.warning(`${secretName} has no secret values`)
29+
return
4230
}
43-
} catch (e) {
44-
core.warning('Parsing asm secret is failed. Secret will be store in asm_secret')
45-
core.exportVariable('asm_secret', secretString)
46-
if (outputPath) {
47-
fs.writeFileSync(outputPath, secretString)
31+
32+
try {
33+
const parsedSecret = JSON.parse(secretString)
34+
Object.entries(parsedSecret).forEach(([key, value]) => {
35+
core.setSecret(value)
36+
core.exportVariable(key, value)
37+
})
38+
if (outputPath) {
39+
const secretsAsEnv = Object.entries(parsedSecret).map(([key, value]) => `${key}=${value}`).join('\n')
40+
fs.writeFileSync(outputPath, secretsAsEnv)
41+
}
42+
} catch (e) {
43+
core.warning('Parsing asm secret is failed. Secret will be store in asm_secret')
44+
core.exportVariable('asm_secret', secretString)
45+
if (outputPath) {
46+
fs.writeFileSync(outputPath, secretString)
47+
}
4848
}
49+
} catch (err) {
50+
core.setFailed(err)
4951
}
50-
}).catch(err => {
51-
core.setFailed(err)
52-
})
52+
}
5353

5454
exports.getSecretValue = getSecretValue

index.test.js

Lines changed: 25 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -2,54 +2,37 @@ const aws = require('aws-sdk')
22
const index = require('./index.js')
33

44
describe('get SecretString from AWS SecretsManager', () => {
5-
let data = {}
6-
describe('get parsable data', () => {
7-
beforeAll(async () => {
8-
const INPUT_SECRET_NAME = process.env.SECRET_NAME
9-
10-
const AWSConfig = {
11-
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
12-
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
13-
region: process.env.AWS_DEFAULT_REGION
14-
}
5+
const secretsManager = new aws.SecretsManager({
6+
accessKeyId: 'fake-access-key-id',
7+
secretAccessKey: 'fake-secret',
8+
region: 'us-east-1'
9+
})
1510

16-
if (process.env.AWS_SESSION_TOKEN) {
17-
AWSConfig.sessionToken = process.env.AWS_SESSION_TOKEN
18-
}
11+
const secretName = 'secretName'
1912

20-
const secretsManager = new aws.SecretsManager(AWSConfig)
21-
data = await index.getSecretValue(secretsManager, INPUT_SECRET_NAME)
22-
})
13+
const secretString = JSON.stringify({
14+
key1: 'value1',
15+
key2: 'value2'
16+
})
2317

24-
test('should have SecretString', () => {
25-
expect(data).toHaveProperty('SecretString')
26-
})
18+
const resp = {
19+
SecretString: secretString
20+
}
2721

28-
test('should have parsed values', () => {
29-
const parsedData = JSON.parse(data.SecretString)
30-
expect(parsedData.SCIENTIFIC_NAME).toEqual('Pygoscelis adeliae')
31-
expect(parsedData.MIN_HEIGHT).toEqual(46)
32-
expect(parsedData.MAX_HEIGHT).toEqual(71)
33-
expect(parsedData.MIN_WEIGHT).toEqual(3.6)
34-
expect(parsedData.MAX_WEIGHT).toEqual(6)
35-
expect(parsedData.SWIMMING_SPEED).toEqual(8)
36-
expect(parsedData.LEAPING_METERS).toEqual(3)
37-
})
22+
secretsManager.getSecretValue = jest.fn().mockReturnValue({
23+
promise: jest.fn().mockResolvedValue(resp)
3824
})
3925

40-
describe('get unparsable data', () => {
41-
beforeAll(async () => {
42-
const INPUT_SECRET_NAME = `${process.env.SECRET_NAME}-unvalid`
43-
const secretsManager = new aws.SecretsManager({
44-
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
45-
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
46-
region: process.env.AWS_DEFAULT_REGION
47-
})
48-
data = await index.getSecretValue(secretsManager, INPUT_SECRET_NAME)
49-
})
26+
it('should have parsed values', async () => {
27+
await index.getSecretValue(secretsManager, secretName)
28+
expect(process.env.key1).toEqual('value1')
29+
expect(process.env.key2).toEqual('value2')
30+
})
5031

51-
test('should have SecretString', () => {
52-
expect(data).toHaveProperty('SecretString')
53-
})
32+
it('should have written to file', async () => {
33+
const fs = require('fs')
34+
const outputPath = '.env'
35+
await index.getSecretValue(secretsManager, secretName)
36+
expect(fs.readFileSync(outputPath, 'utf8')).toEqual('key1=value1\nkey2=value2')
5437
})
5538
})

jest.config.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,7 @@ module.exports = {
77
},
88
setupFiles: ['dotenv/config']
99
}
10+
11+
process.env = Object.assign(process.env, {
12+
INPUT_OUTPUT_PATH: '.env'
13+
})

0 commit comments

Comments
 (0)