justine-giletta
08/01/2025, 3:20 PMUnexpected error. Verify the certificate file /home/runner/work/repo-name/repo-name/privatepem.
I’m not sure of the best way to store the private certificate and call its path ?Jonathan MacKenzie
08/01/2025, 4:20 PMSUITECLOUD_CI_PASSKEY
environment variable is to make authids securely portable, so if you have defined your authids in the cli then you can store the generated credentials_ci.p12
file and set the passkey environment variable to decrypt it when it runs (the passkey must be the same value used to create the authids to decrypt them). i haven't tried this myself but i believe that is the way rather than storing the certificate itself and making the authid on the flyShawn Talbert
08/01/2025, 6:04 PMJonathan MacKenzie
08/01/2025, 6:12 PMsuitecloud account:setup:ci
(M2M auth method, using a certificate) puts your authids in a file credentials_ci.p12
(located in ~/.suitecloud-sdk/
on mac, not sure where it goes on windows) that you can (if i'm not mistaken) then use in ci/cd since it's encrypted and requires the SUITECLOUD_CI_PASSKEY
environment variable to be set to the same value to decrypt it. unless i'm missing some other way to use M2M authentication in a github action? that would be handy to knowmichoel
08/04/2025, 6:40 AM- name: Deploy
uses: actions/github-script@v7
env:
NS_ACCOUNT_ID: ${{ vars.NS_ACCOUNT_ID }}
NS_CERTIFICATE_ID: ${{ vars.NS_CERTIFICATE_ID }}
NS_PRIVATE_KEY: ${{ secrets.NS_PRIVATE_KEY }}
with:
script: |
const script = require('./scripts/deploy.js');
await script({github, context, core, exec, dryRun: false });
/**
* Save the token for SDF. To improve performance, instead of running this for each project we are
* validating, we will use the legacy project here and manually generate a project.json for each
* project.
*/
async function saveSDFToken() {
const { NS_ACCOUNT_ID, NS_CERTIFICATE_ID, NS_PRIVATE_KEY } = process.env;
const cwd = `./src/${LEGACY_PROJECT_NAME}`;
await fs.promises.writeFile(`${cwd}/private.pem`, NS_PRIVATE_KEY);
await exec.exec(
`npx suitecloud account:setup:ci --account ${NS_ACCOUNT_ID} --authid ${NS_ACCOUNT_ID} --certificateid ${NS_CERTIFICATE_ID} --privatekeypath private.pem`,
[],
{ cwd }
);
}
Shawn Talbert
08/05/2025, 3:04 PMMatt Lawrence
08/11/2025, 10:54 AMcredentials_ci.p12
file I've generated in order to validate my ACP project. I keep getting this error:
Secure storage is inaccessible. Ensure that the secure storage in your system is properly configured and accessible.
For more information, see <https://system.netsuite.com/app/help/helpcenter.nl?fid=article_1210060428.html>.
Error: Process completed with exit code 1.
Matt Lawrence
08/11/2025, 10:57 AMSUITECLOUD_CI
and SUITECLOUD_CI_PASSKEY
variables are correct (no end of times) and still the error persists. Any insight would be appreciated please - I've been trying to set this up since the start of the year 🤣Matt Lawrence
08/12/2025, 8:07 AMJonathan MacKenzie
08/18/2025, 1:13 PM