Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(publish): fix timeout problem without lerna #3679

Merged
merged 2 commits into from
Sep 26, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ describe('OHIF Measurement Panel', function () {
it('checks if measurement item can be Relabeled under Measurements panel', function () {
// Add length measurement
cy.addLengthMeasurement();

cy.get('[data-cy="viewport-notification"]').as('viewportNotification').should('exist');
cy.get('[data-cy="viewport-notification"]').as('viewportNotification').should('be.visible');

Expand Down
11 changes: 5 additions & 6 deletions platform/app/cypress/support/commands.js
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ Cypress.Commands.add('drag', { prevSubject: 'element' }, (...args) =>
*/
Cypress.Commands.add('addLine', (viewport, firstClick, secondClick) => {
const performClick = (alias, x, y) => {
cy.get(alias).as(`axu-${alias}`).click(x, y, { force: true, multiple: true }).wait(250);
cy.get(alias).as(`axu-${alias}`).click(x, y, { force: true, multiple: true }).wait(1000);
};

cy.get(viewport).as('viewportAlias');
Expand All @@ -155,11 +155,10 @@ Cypress.Commands.add('addLine', (viewport, firstClick, secondClick) => {
// First click
performClick('@viewportAlias', x1, y1);

// Move the mouse
cy.get('@viewportAlias').trigger('mousemove', { clientX: x2, clientY: y2 }).wait(250);

// Second click
performClick('@viewportAlias', x2, y2);

cy.wait(1000);
});

/**
Expand Down Expand Up @@ -281,7 +280,7 @@ Cypress.Commands.add(

cy.get('@lengthButton').should('have.class', 'active');

cy.addLine('.viewport-element', firstClick, secondClick);
cy.addLine('.cornerstone-canvas', firstClick, secondClick);
}
);

Expand All @@ -292,7 +291,7 @@ Cypress.Commands.add(
cy.get('[data-cy="MeasurementTools-split-button-secondary"]').click();
cy.get('[data-cy="Angle"]').click();

cy.addAngle('.viewport-element', initPos, midPos, finalPos);
cy.addAngle('.cornerstone-canvas', initPos, midPos, finalPos);
}
);

Expand Down
71 changes: 55 additions & 16 deletions publish-package.mjs
Original file line number Diff line number Diff line change
@@ -1,24 +1,63 @@
import { execa } from 'execa';
import fs from 'fs/promises';
import glob from 'glob';
import path from 'path';

const MAX_RETRIES = 3;
const RETRY_DELAY = 10000; // 10 seconds

async function run() {
const { stdout: branchName } = await execa('git', ['rev-parse', '--abbrev-ref', 'HEAD']);

// using the environment variable NPM_TOKEN, create a .npmrc file
// and set the token to the value of the environment variable
// Publishing each package, if on master/main branch publish beta versions
// otherwise publish latest
if (branchName === 'release') {
await execa('npx', ['lerna', 'publish', 'from-package', '--no-verify-access', '--yes']);
} else {
await execa('npx', [
'lerna',
'publish',
'from-package',
'--no-verify-access',
'--yes',
'--dist-tag',
'beta',
]);
const lernaJson = JSON.parse(await fs.readFile('lerna.json', 'utf8'));

const packages = lernaJson.packages;

const rootDir = process.cwd();

for (const packagePathPattern of packages) {
const matchingDirectories = glob.sync(packagePathPattern);

for (const packageDirectory of matchingDirectories) {
// change back to the root directory
process.chdir(rootDir);

const packageJsonPath = path.join(packageDirectory, 'package.json');

try {
const packageJsonContent = JSON.parse(await fs.readFile(packageJsonPath, 'utf8'));

if (packageJsonContent.private) {
console.log(`Skipping private package at ${packageDirectory}`);
continue;
}

process.chdir(packageDirectory);

let retries = 0;
while (retries < MAX_RETRIES) {
try {
const publishArgs = ['publish'];

if (branchName === 'master') {
publishArgs.push('--tag', 'beta');
}

await execa('npm', publishArgs);
console.log(`Successfully published package at ${packageDirectory}`);
break;
} catch (error) {
retries++;
console.error(
`Failed to publish package at ${packageDirectory} with error ${error}, retrying... (${retries}/${MAX_RETRIES})`
);
await new Promise(resolve => setTimeout(resolve, RETRY_DELAY));
}
}
} catch (error) {
console.error(`An error occurred while processing ${packageDirectory}: ${error}`);
}
}
}

console.log('Finished');
Expand Down