Tim Roberson
03/06/2025, 6:41 PMnpm fund
for details
65
echo * | base64 -d > /tmp/private-key.pem
66
shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
67
env:
68
JAVA_HOME: /opt/actions-runner/_work/_tool/Java_Oracle_jdk/17/x64
69
JAVA_HOME_17_X64: /opt/actions-runner/_work/_tool/Java_Oracle_jdk/17/x64
71
./node_modules/.bin/suitecloud accountsetupci --account ** --authid ***** --certificateid * --privatekeypath /tmp/private-key.pem
72
shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
73
env:
74
JAVA_HOME: /opt/actions-runner/_work/_tool/Java_Oracle_jdk/17/x64
75
JAVA_HOME_17_X64: /opt/actions-runner/_work/_tool/Java_Oracle_jdk/17/x64
76
/opt/actions-runner/_work/_temp/34c20b99-4da0-46d9-9c63-094037dfbe4f.sh: line 1: ./node_modules/.bin/suitecloud: No such file or directory
77
Error: Process completed with exit code 127.Marvin
03/07/2025, 2:26 PMnode_modules
Tim Roberson
03/07/2025, 9:50 PMMarvin
03/10/2025, 10:30 AMnpm install -D @oracle/suitecloud-cli
karlenigma
03/12/2025, 1:08 PMTim Roberson
03/12/2025, 1:09 PMJoel Musheno
03/20/2025, 7:12 PMparameters:
- name: nodeVersion
type: string
- name: awsRegion
type: string
- name: javaVersion
type: string
- name: suiteCloudCliVersion
type: string
- name: name
type: string
- name: netsuiteDeploymentTargets
type: string
- name: environmentKey
type: string
steps:
- checkout: self
- task: NodeTool@0
displayName: 📗 Set NodeJS ${{ parameters.nodeVersion }}
inputs:
versionSpec: ${{ parameters.nodeVersion }}
- task: JavaToolInstaller@0
displayName: 📙 Set Java ${{ parameters.javaVersion }}
inputs:
versionSpec: ${{ parameters.javaVersion }}
jdkArchitectureOption: x64
jdkSourceOption: PreInstalled
- bash: npm install -g --acceptSuiteCloudSDKLicense @oracle/suitecloud-cli
displayName: 🔽 Install SuiteCloud-CLI
- task: S3Download@1
displayName: 📥 Download Certificates from S3
inputs:
awsCredentials: DevDeployments
regionName: ${{ parameters.awsRegion }}
bucketName: aura-system-tenant-configs
sourceFolder: netsuite_sdf_keys
targetFolder: $(Agent.TempDirectory)
- bash: |
bash $(System.DefaultWorkingDirectory)/apps/NetSuite/AccountCustomization/filter_certificates_by_account_name.sh \
$(System.DefaultWorkingDirectory)/apps/NetSuite/Certificate/certificate_mapping.json \
${{ parameters.name }} \
$(System.DefaultWorkingDirectory)/apps/NetSuite/AccountCustomization/filtered_certificate_mapping.json
displayName: ✂️ Filter certificate_mapping.json to ${{ parameters.name }}
workingDirectory: $(Agent.TempDirectory)
- bash: cat $(System.DefaultWorkingDirectory)/apps/NetSuite/AccountCustomization/filtered_certificate_mapping.json
displayName: debug print env filtered cert mapping file
- bash: |
bash account_setup.sh \
$(System.DefaultWorkingDirectory)/apps/NetSuite/AccountCustomization/filtered_certificate_mapping.json \
$(Agent.TempDirectory)/netsuite_sdf_keys
displayName: 🔑 Set up Netsuite Auth for account customization packages
workingDirectory: $(System.DefaultWorkingDirectory)/apps/NetSuite/AccountCustomization
env:
SUITECLOUD_CI: 1
SUITECLOUD_CI_PASSKEY: $(SUITECLOUD_CI_PASSKEY_ADO_SECRET)
- bash: |
bash deploy.sh \
$(System.DefaultWorkingDirectory)/apps/NetSuite/AccountCustomization/filtered_certificate_mapping.json \
$(System.DefaultWorkingDirectory)/apps/NetSuite/AccountCustomization/${{ parameters.netsuiteDeploymentTargets }}
failOnStderr: true
displayName: 🚀 Deploy Netsuite account customization packages
workingDirectory: $(System.DefaultWorkingDirectory)/apps/NetSuite/AccountCustomization
env:
SUITECLOUD_CI: 1
SUITECLOUD_CI_PASSKEY: $(SUITECLOUD_CI_PASSKEY_ADO_SECRET)
Here’s our account setup shell script - runs through all the netsuite accounts we support and adds them to the CI server
#!/bin/bash
# set -x # Debug output for this command
netsuiteCertificates=$1
privateKeyPath=$2
for row in $(jq -c ' map(.) | .[]' $netsuiteCertificates); do
_jq() {
echo ${row} | jq -r "${1}"
}
account=$(_jq '.account')
authId=$(_jq '.authId')
privateKeyFileName=$(_jq '.privateKeyFileName')
publicKeyFileName=$(_jq '.publicKeyFileName')
certificateId=$(_jq '.certificateId')
echo "################################################################################################################"
echo "########### Setup for $authId ###########"
echo "##[group]account_setup.sh parameters"
echo "##[debug]account: $account"
echo "##[debug]authId: $authId"
echo "##[debug]privateKeyFileName: $privateKeyFileName"
echo "##[debug]publicKeyFileName: $publicKeyFileName"
echo "##[debug]certificateId: $certificateId"
echo "##[endgroup]"
(
cd Address
suitecloud account:setup:ci \
--account "$account" \
--authid "$authId" \
--certificateid "$certificateId" \
--privatekeypath "$privateKeyPath/$privateKeyFileName" || true
)
echo "################################################################################################################"
done