-
Notifications
You must be signed in to change notification settings - Fork 565
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
feat: change binary download url #5369
Conversation
|
326f1bf
to
066fc1d
Compare
ts-binary-wrapper/src/common.ts
Outdated
public getDownloadLocation(): string { | ||
const baseUrl = 'https://static.snyk.io/cli/v'; | ||
return baseUrl + this.version + '/' + this.binaryName; | ||
const baseUrl = 'https://downloads.snyk.io/cli'; | ||
|
||
return this.buildDownloadUrl(baseUrl); | ||
} | ||
|
||
public getBackupDownloadLocation(): string { | ||
const baseUrl = 'https://static.snyk.io/cli'; | ||
|
||
return this.buildDownloadUrl(baseUrl); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
question: would
public getDownloadLocation(baseUrl = 'https://downloads.snyk.io/cli'): string {
return baseUrl + this.version + '/' + this.binaryName;
}
be cleaner? getDownloadLocation()
and getBackupDownloadLocation()
are more or less identical and we could get rid of buildDownloadUrl()
if we just update getDownloadLocation()
ts-binary-wrapper/src/common.ts
Outdated
@@ -242,7 +253,7 @@ export function downloadExecutable( | |||
filenameShasum: string, | |||
): Promise<Error | undefined> { | |||
return new Promise<Error | undefined>(function(resolve) { | |||
const options = new URL(downloadUrl); | |||
const options = new URL(downloadUrl + '?utm_source=npm'); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Praise! Happy to see this :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Suggestion: let's change the utm_source
to this something like TS_BINARY_WRAPPER
to be more future proof and align with integration names.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Suggestion 2: Let's also use the chance to add the missing env variables SNYK_INTEGRATION_NAME, SNYK_INTEGRATION_VERSION to runWrapper()
the integration name would also be TS_BINARY_WRAPPER
for consistency.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've added the integration name and version as env vars, let me know what you think
ts-binary-wrapper/src/common.ts
Outdated
return this.buildDownloadUrl(baseUrl); | ||
} | ||
|
||
public getBackupDownloadLocation(): string { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Question: Would make the logic easier and more consistent if we change getDownloadLocation()
to return a list of URLs?
This list could be iterated from start until one URL works. Currently there is the additional download in index that doesn't use the backup url.
8705093
to
9329eed
Compare
9329eed
to
1a3d0d1
Compare
1a3d0d1
to
4c956e5
Compare
9ab07fe
to
cead704
Compare
cead704
to
c3a83d0
Compare
feat: add utm source search param when downloading the binary fix: prepare environment script chore: fix lint issues test: add test case for downloadWithBackup() feat: add integration env vars refactor: consolidate download locations to single method chore: cleanup chore: improve logging with timestamps chore: format and lint
c3a83d0
to
89546b0
Compare
Pull Request Submission
Please check the boxes once done.
The pull request must:
feat:
orfix:
, others might be used in rare occasions as well, if there is no need to document the changes in the release notes. The changes or fixes should be described in detail in the commit message for the changelog & release notes.Pull Request Review
All pull requests must undergo a thorough review process before being merged.
The review process of the code PR should include code review, testing, and any necessary feedback or revisions.
Pull request reviews of functionality developed in other teams only review the given documentation and test reports.
Manual testing will not be performed by the reviewing team, and is the responsibility of the author of the PR.
For Node projects: It’s important to make sure changes in
package.json
are also affectingpackage-lock.json
correctly.If a dependency is not necessary, don’t add it.
When adding a new package as a dependency, make sure that the change is absolutely necessary. We would like to refrain from adding new dependencies when possible.
Documentation PRs in gitbook are reviewed by Snyk's content team. They will also advise on the best phrasing and structuring if needed.
Pull Request Approval
Once a pull request has been reviewed and all necessary revisions have been made, it is approved for merging into
the main codebase. The merging of the code PR is performed by the code owners, the merging of the documentation PR
by our content writers.
What does this PR do?
This changes the the download url for our ts-binary-wrapper. When people will install snyk-cli via npm, they will download the binary from downloads.snyk.io, if this url fails, the script will try to download it from static.snyk.io
Where should the reviewer start?
ts-binary-wrapper/src/common.ts
ts-binary-wrapper/src/bootstrap.ts
How should this be manually tested?
cd ts-binary-wrapper
npm ci --ignore-scripts
npm run build
npx ts-node ./test/util/prepareEnvironment.ts exec
mv ./test/util/something/generated/sha256sums.txt ./wrapper_dist/generated/sha256sums.txt
mv ./test/util/something/generated/version wrapper_dist/generated/version
npm run postinstall
Any background context you want to provide?
What are the relevant tickets?
Screenshots
Additional questions