getsentry / craft Goto Github PK
View Code? Open in Web Editor NEWThe universal Sentry release CLI π
License: MIT License
The universal Sentry release CLI π
License: MIT License
βΉ info ======================================
βΉ info === Publishing to target: "github" ===
βΉ info ======================================
βΉ info [github] βΊ Target "github": publishing version "1.0.0-beta4"...
βΉ info [github] βΊ Git tag: "1.0.0-beta4"
`error.code` is deprecated, use `error.status`.
βΉ info [github] βΊ Creating a new *preview* release for tag "1.0.0-beta4"
Craft should always print its version on the top to make debugging easier. This way, developers can easily see if someone is running an outdated version of the package. I'm thinking similar to yarn:
$ yarn info
yarn info v1.9.4
Also, we should check for updates and inform the user. The package update-nagger implements this functionality with nice visuals.
I'm trying to release Symbol Collector 1.2.2 and it's failing while processing the artifact.
No change to how the artifact is build change since the previous version 1.2.1.
It seems zlib related (log below) but I downloaded the artifact locally and could extract files without any problems.
The issue affects version 0.16.1
. I upgraded to the latest 0.17.2
and received the same error.
I've received two different errors that alternate (somewhat randomly) with each other if I retry the command:
βΉ info [artifact-provider/github] βΊ Fetching Github artifacts for getsentry/symbol-collector, revision 0dd644d0d67336217dada5da81c9e1b5fa0aabed
βΉ info [artifact-provider/github] βΊ Requesting archive URL from Github...
βΉ info [artifact-provider/github] βΊ Downloading ZIP from Github artifacts...
βΉ info [artifact-provider/github] βΊ Finished downloading.
βΉ info [artifact-provider/github] βΊ Extracting "/var/folders/3r/9m5hqv695t97rd0qllgcbyjc0000gn/T/craft-601315Z0kfxUZaeb3" to "/var/folders/3r/9m5hqv695t97rd0qllgcbyjc0000gn/T/craft-7b1FS2"...
β error [artifact-provider] βΊ Unable to retrieve artifact list for revision 0dd644d0d67336217dada5da81c9e1b5fa0aabed!
β error Error: unexpected end of file
at Zlib.zlibOnError [as onerror] (zlib.js:182:17)
And
βΉ info [artifact-provider/github] βΊ Fetching Github artifacts for getsentry/symbol-collector, revision 0dd644d0d67336217dada5da81c9e1b5fa0aabed
βΉ info [artifact-provider/github] βΊ Requesting archive URL from Github...
βΉ info [artifact-provider/github] βΊ Downloading ZIP from Github artifacts...
βΉ info [artifact-provider/github] βΊ Finished downloading.
βΉ info [artifact-provider/github] βΊ Extracting "/var/folders/3r/9m5hqv695t97rd0qllgcbyjc0000gn/T/craft-60601P38ruEZ8pQlz" to "/var/folders/3r/9m5hqv695t97rd0qllgcbyjc0000gn/T/craft-9Xn1HL"...
β error [artifact-provider] βΊ Unable to retrieve artifact list for revision 0dd644d0d67336217dada5da81c9e1b5fa0aabed!
β error Error: invalid signature: 0x6f63227b
at /Users/bruno/.volta/tools/image/packages/@sentry/craft/0.16.1/node_modules/unzipper/lib/parse.js:59:26
at tryCatcher (/Users/bruno/.volta/tools/image/packages/@sentry/craft/0.16.1/node_modules/bluebird/js/release/util.js:16:23)
at Promise._settlePromiseFromHandler (/Users/bruno/.volta/tools/image/packages/@sentry/craft/0.16.1/node_modules/bluebird/js/release/promise.js:510:31)
at Promise._settlePromise (/Users/bruno/.volta/tools/image/packages/@sentry/craft/0.16.1/node_modules/bluebird/js/release/promise.js:567:18)
at Promise._settlePromise0 (/Users/bruno/.volta/tools/image/packages/@sentry/craft/0.16.1/node_modules/bluebird/js/release/promise.js:612:10)
at Promise._settlePromises (/Users/bruno/.volta/tools/image/packages/@sentry/craft/0.16.1/node_modules/bluebird/js/release/promise.js:691:18)
at Async._drainQueue (/Users/bruno/.volta/tools/image/packages/@sentry/craft/0.16.1/node_modules/bluebird/js/release/async.js:133:16)
at Async._drainQueues (/Users/bruno/.volta/tools/image/packages/@sentry/craft/0.16.1/node_modules/bluebird/js/release/async.js:143:10)
at Immediate.Async.drainQueues (/Users/bruno/.volta/tools/image/packages/@sentry/craft/0.16.1/node_modules/bluebird/js/release/async.js:17:14)
at processImmediate (internal/timers.js:461:21)
Initially reported by @jan-auer on Slack:
craft publish 0.3.0 -t gcs -t 'release[docker]' -t 'latest[docker]'
Invalid values:
Argument: target, Given: "release[docker]", "latest[docker]", Choices: "brew", "cocoapods", "crates", "docker", "gcs", "gem", "gh-pages", "github", "npm", "nuget", "pypi", "registry", "all", "none"
This is a fallout from #128.
This has manifested itself as getsentry/sentry#23168 and the root cause seems to be #157
Relevant logs: https://github.com/getsentry/publish/runs/1727610842?check_suite_focus=true#step:7:327
/cc @HazAT
On getsentry/publish#300 the release failed because another release was done right before, changing the registry repo state. The registry target should always (this was done with #188) Even more, it should probably retry up to 3 times before failing.pull --rebase
before trying to push.
We have the craft github action but it's always master, also the action is not on GH marketplace. Acceptance:
Craft Action Versioned
Craft Action on GH Marketplace
/cc @chadwhitacre
Hi! It would be nice to add the --rev
option for the prepare
command, is it possible?
...that do not require build artifacts.
E.g., sentry-go.
When I run craft release
, the tool creates a branch locally and pushes it to the remote. However, there is no reason to keep this branch locally (other than troubleshooting). So at least during publish, it would be great if craft could detect that the branch is still checked out go back to master.
I'm also thinking if it might make sense to check out master right away after craft release
ran.
Case in question:
https://github.com/getsentry/sentry-dotnet/blob/master/.craft.yml#L11-L30
Ideally, there should be a way to batch those changes into one push to release-registry.
I would like to have multiple packages/crates in a monorepo/workspace, but version and release them independently.
Ideally, craft would know about those packages, to bump their own versions individually (#76) and publish them from their respective directory.
Considering git tags, one inspiration might be rollup/plugins, which uses <pkgname>-v<version>
as the tag.
Disclaimer: I'm not 100% sure what's the issue here. When releasing symbolic
, I received the following error for the last couple of times:
βΉ info [crates] βΊ Cloning getsentry/symbolic into /var/folders/7p/zvqpr1r53zv_b6tzlz7tw2vw0000gn/T/craft-crates-mDhCL3
βΉ info [crates] βΊ Checking out submodules
βΉ info [crates] βΊ Loading workspace information from /var/folders/7p/zvqpr1r53zv_b6tzlz7tw2vw0000gn/T/craft-crates-mDhCL3/Cargo.toml
β error Error: Process "cargo" errored with code 101
STDOUT: cargo:
STDERR:cargo: Updating crates.io index
cargo: Packaging symbolic v7.2.0 (/var/folders/7p/zvqpr1r53zv_b6tzlz7tw2vw0000gn/T/craft-crates-mDhCL3)
cargo: error: failed to prepare local package for uploading
cargo:
cargo: Caused by:
cargo: failed to select a version for the requirement `symbolic-demangle = "^7.2.0"`
cargo: candidate versions found which didn't match: 7.1.1, 6.1.4, 6.1.3, ...
cargo: location searched: crates.io index
cargo: required by package `symbolic v7.2.0 (/var/folders/7p/zvqpr1r53zv_b6tzlz7tw2vw0000gn/T/craft-crates-mDhCL3)`
cargo:
The error message indicates that a workspace dependency, symbolic-demangle
, hadn't been published at the time of publishing symbolic
. When checking crates.io, however, that crate is there. I think this might be some lag in caches.
After successfully publishing and merging the release branch, you still have to manually call git pull
to get your local branch up to speed. Craft could do that automatically.
The only place where this probably shouldn't happen, is the GitHub Action.
https://github.com/getsentry/sentry-go/runs/423997330 reported checks PASSED but craft
kept looping.
Could it be that the different GitHub APIs consulted were out of sync?
~/s/sentry-go β―β―β― CRAFT_LOG_LEVEL=debug craft publish 0.5.0 --skip-status-check master β
βΉ info craft 0.9.0
β¦ debug Found environment file in the home directory: /Users/rodolfo/.craft.env
β¦ debug Read the following variables from /Users/rodolfo/.craft.env: GITHUB_API_TOKEN,ZEUS_API_TOKEN
β¦ debug No environment file found in the configuration directory: /Users/rodolfo/sentry/sentry-go/.craft.env
β¦ debug Not initializing Sentry SDK
β¦ debug Catching Ctrl-C is disabled by default. See https://github.com/getsentry/craft/issues/21
β¦ debug Argv:
{"_":["publish"],"no-input":false,"noInput":false,"dry-run":false,"dryRun":false,"no-merge":false,"noMerge":false,"keep-branch":false,"keepBranch":false,"keep-downloads":false,"keepDownloads":false,"no-status-check":false,"noStatusCheck":false,"skip-status-check":true,"skipStatusCheck":true,"target":"all","t":"all","$0":"/usr/local/bin/craft","NEW-VERSION":"0.5.0","newVersion":"0.5.0","new-version":"0.5.0"}
β¦ debug Configuration file found:
/Users/rodolfo/sentry/sentry-go/.craft.yml
β¦ debug Parsing and validating the configuration file...
βΉ info "craft" version is compatible with the minimal version from the configuration file.
βΉ info Publishing version: "0.5.0"
β¦ debug Fetching branch information
release/0.5.0
β¦ debug GET /repos/getsentry/sentry-go/branches/release/0.5.0 - 200 in 289ms
β¦ debug Revision to publish:
70ee6a791978e9e4b96112f30fd2cad7132ecd84
βΉ info Using "GithubStatusProvider" for status checks
β¦ debug Fetching repository information...
β¦ debug GET /repos/getsentry/sentry-go - 200 in 296ms
β¦ debug Repository info received: "{
"status": 200,
"url": "https://api.github.com/repos/getsentry/sentry-go",
"headers": {
"access-control-allow-origin": "*",
"access-control-expose-headers": "ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type",
"cache-control": "private, max-age=60, s-maxage=60",
"connection": "close",
"content-encoding": "gzip",
"content-security-policy": "default-src 'none'",
"content-type": "application/json; charset=utf-8",
"date": "Mon, 03 Feb 2020 20:26:56 GMT",
"etag": "W/\"8ae8de0e9d2caf040054fb50123e9a61\"",
"last-modified": "Mon, 03 Feb 2020 19:59:12 GMT",
"referrer-policy": "origin-when-cross-origin, strict-origin-when-cross-origin",
"server": "GitHub.com",
"status": "200 OK",
"strict-transport-security": "max-age=31536000; includeSubdomains; preload",
"transfer-encoding": "chunked",
"vary": "Accept, Authorization, Cookie, X-GitHub-OTP, Accept-Encoding",
"x-accepted-oauth-scopes": "repo",
"x-content-type-options": "nosniff",
"x-frame-options": "deny",
"x-github-media-type": "github.v3; format=json",
"x-github-request-id": "DB30:4609:E264865:10E6546F:5E38820F",
"x-oauth-scopes": "repo",
"x-ratelimit-limit": "5000",
"x-ratelimit-remaining": "4921",
"x-ratelimit-reset": "1580763515",
"x-xss-protection": "1; mode=block"
},
"data": {
"id": 174522026,
"node_id": "MDEwOlJlcG9zaXRvcnkxNzQ1MjIwMjY=",
"name": "sentry-go",
"full_name": "getsentry/sentry-go",
"private": false,
"owner": {
"login": "getsentry",
"id": 1396951,
"node_id": "MDEyOk9yZ2FuaXphdGlvbjEzOTY5NTE=",
"avatar_url": "https://avatars0.githubusercontent.com/u/1396951?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/getsentry",
"html_url": "https://github.com/getsentry",
"followers_url": "https://api.github.com/users/getsentry/followers",
"following_url": "https://api.github.com/users/getsentry/following{/other_user}",
"gists_url": "https://api.github.com/users/getsentry/gists{/gist_id}",
"starred_url": "https://api.github.com/users/getsentry/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/getsentry/subscriptions",
"organizations_url": "https://api.github.com/users/getsentry/orgs",
"repos_url": "https://api.github.com/users/getsentry/repos",
"events_url": "https://api.github.com/users/getsentry/events{/privacy}",
"received_events_url": "https://api.github.com/users/getsentry/received_events",
"type": "Organization",
"site_admin": false
},
"html_url": "https://github.com/getsentry/sentry-go",
"description": "Official Sentry SDK for Go",
"fork": false,
"url": "https://api.github.com/repos/getsentry/sentry-go",
"forks_url": "https://api.github.com/repos/getsentry/sentry-go/forks",
"keys_url": "https://api.github.com/repos/getsentry/sentry-go/keys{/key_id}",
"collaborators_url": "https://api.github.com/repos/getsentry/sentry-go/collaborators{/collaborator}",
"teams_url": "https://api.github.com/repos/getsentry/sentry-go/teams",
"hooks_url": "https://api.github.com/repos/getsentry/sentry-go/hooks",
"issue_events_url": "https://api.github.com/repos/getsentry/sentry-go/issues/events{/number}",
"events_url": "https://api.github.com/repos/getsentry/sentry-go/events",
"assignees_url": "https://api.github.com/repos/getsentry/sentry-go/assignees{/user}",
"branches_url": "https://api.github.com/repos/getsentry/sentry-go/branches{/branch}",
"tags_url": "https://api.github.com/repos/getsentry/sentry-go/tags",
"blobs_url": "https://api.github.com/repos/getsentry/sentry-go/git/blobs{/sha}",
"git_tags_url": "https://api.github.com/repos/getsentry/sentry-go/git/tags{/sha}",
"git_refs_url": "https://api.github.com/repos/getsentry/sentry-go/git/refs{/sha}",
"trees_url": "https://api.github.com/repos/getsentry/sentry-go/git/trees{/sha}",
"statuses_url": "https://api.github.com/repos/getsentry/sentry-go/statuses/{sha}",
"languages_url": "https://api.github.com/repos/getsentry/sentry-go/languages",
"stargazers_url": "https://api.github.com/repos/getsentry/sentry-go/stargazers",
"contributors_url": "https://api.github.com/repos/getsentry/sentry-go/contributors",
"subscribers_url": "https://api.github.com/repos/getsentry/sentry-go/subscribers",
"subscription_url": "https://api.github.com/repos/getsentry/sentry-go/subscription",
"commits_url": "https://api.github.com/repos/getsentry/sentry-go/commits{/sha}",
"git_commits_url": "https://api.github.com/repos/getsentry/sentry-go/git/commits{/sha}",
"comments_url": "https://api.github.com/repos/getsentry/sentry-go/comments{/number}",
"issue_comment_url": "https://api.github.com/repos/getsentry/sentry-go/issues/comments{/number}",
"contents_url": "https://api.github.com/repos/getsentry/sentry-go/contents/{+path}",
"compare_url": "https://api.github.com/repos/getsentry/sentry-go/compare/{base}...{head}",
"merges_url": "https://api.github.com/repos/getsentry/sentry-go/merges",
"archive_url": "https://api.github.com/repos/getsentry/sentry-go/{archive_format}{/ref}",
"downloads_url": "https://api.github.com/repos/getsentry/sentry-go/downloads",
"issues_url": "https://api.github.com/repos/getsentry/sentry-go/issues{/number}",
"pulls_url": "https://api.github.com/repos/getsentry/sentry-go/pulls{/number}",
"milestones_url": "https://api.github.com/repos/getsentry/sentry-go/milestones{/number}",
"notifications_url": "https://api.github.com/repos/getsentry/sentry-go/notifications{?since,all,participating}",
"labels_url": "https://api.github.com/repos/getsentry/sentry-go/labels{/name}",
"releases_url": "https://api.github.com/repos/getsentry/sentry-go/releases{/id}",
"deployments_url": "https://api.github.com/repos/getsentry/sentry-go/deployments",
"created_at": "2019-03-08T11:02:24Z",
"updated_at": "2020-02-03T19:59:12Z",
"pushed_at": "2020-02-03T19:59:59Z",
"git_url": "git://github.com/getsentry/sentry-go.git",
"ssh_url": "[email protected]:getsentry/sentry-go.git",
"clone_url": "https://github.com/getsentry/sentry-go.git",
"svn_url": "https://github.com/getsentry/sentry-go",
"homepage": "",
"size": 353,
"stargazers_count": 199,
"watchers_count": 199,
"language": "Go",
"has_issues": true,
"has_projects": true,
"has_downloads": true,
"has_wiki": true,
"has_pages": false,
"forks_count": 33,
"mirror_url": null,
"archived": false,
"disabled": false,
"open_issues_count": 37,
"license": {
"key": "bsd-2-clause",
"name": "BSD 2-Clause \"Simplified\" License",
"spdx_id": "BSD-2-Clause",
"url": "https://api.github.com/licenses/bsd-2-clause",
"node_id": "MDc6TGljZW5zZTQ="
},
"forks": 33,
"open_issues": 37,
"watchers": 199,
"default_branch": "master",
"permissions": {
"admin": true,
"push": true,
"pull": true
},
"temp_clone_token": "",
"allow_squash_merge": true,
"allow_merge_commit": true,
"allow_rebase_merge": true,
"delete_branch_on_merge": false,
"organization": {
"login": "getsentry",
"id": 1396951,
"node_id": "MDEyOk9yZ2FuaXphdGlvbjEzOTY5NTE=",
"avatar_url": "https://avatars0.githubusercontent.com/u/1396951?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/getsentry",
"html_url": "https://github.com/getsentry",
"followers_url": "https://api.github.com/users/getsentry/followers",
"following_url": "https://api.github.com/users/getsentry/following{/other_user}",
"gists_url": "https://api.github.com/users/getsentry/gists{/gist_id}",
"starred_url": "https://api.github.com/users/getsentry/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/getsentry/subscriptions",
"organizations_url": "https://api.github.com/users/getsentry/orgs",
"repos_url": "https://api.github.com/users/getsentry/repos",
"events_url": "https://api.github.com/users/getsentry/events{/privacy}",
"received_events_url": "https://api.github.com/users/getsentry/received_events",
"type": "Organization",
"site_admin": false
},
"network_count": 33,
"subscribers_count": 7
}
}"
β¦ debug Fetching combined revision status...
β¦ debug GET /repos/getsentry/sentry-go/commits/70ee6a791978e9e4b96112f30fd2cad7132ecd84/status - 200 in 262ms
β¦ debug Revision combined status received: "{
"state": "pending",
"statuses": [],
"sha": "70ee6a791978e9e4b96112f30fd2cad7132ecd84",
"total_count": 0,
"repository": {
"id": 174522026,
"node_id": "MDEwOlJlcG9zaXRvcnkxNzQ1MjIwMjY=",
"name": "sentry-go",
"full_name": "getsentry/sentry-go",
"private": false,
"owner": {
"login": "getsentry",
"id": 1396951,
"node_id": "MDEyOk9yZ2FuaXphdGlvbjEzOTY5NTE=",
"avatar_url": "https://avatars0.githubusercontent.com/u/1396951?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/getsentry",
"html_url": "https://github.com/getsentry",
"followers_url": "https://api.github.com/users/getsentry/followers",
"following_url": "https://api.github.com/users/getsentry/following{/other_user}",
"gists_url": "https://api.github.com/users/getsentry/gists{/gist_id}",
"starred_url": "https://api.github.com/users/getsentry/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/getsentry/subscriptions",
"organizations_url": "https://api.github.com/users/getsentry/orgs",
"repos_url": "https://api.github.com/users/getsentry/repos",
"events_url": "https://api.github.com/users/getsentry/events{/privacy}",
"received_events_url": "https://api.github.com/users/getsentry/received_events",
"type": "Organization",
"site_admin": false
},
"html_url": "https://github.com/getsentry/sentry-go",
"description": "Official Sentry SDK for Go",
"fork": false,
"url": "https://api.github.com/repos/getsentry/sentry-go",
"forks_url": "https://api.github.com/repos/getsentry/sentry-go/forks",
"keys_url": "https://api.github.com/repos/getsentry/sentry-go/keys{/key_id}",
"collaborators_url": "https://api.github.com/repos/getsentry/sentry-go/collaborators{/collaborator}",
"teams_url": "https://api.github.com/repos/getsentry/sentry-go/teams",
"hooks_url": "https://api.github.com/repos/getsentry/sentry-go/hooks",
"issue_events_url": "https://api.github.com/repos/getsentry/sentry-go/issues/events{/number}",
"events_url": "https://api.github.com/repos/getsentry/sentry-go/events",
"assignees_url": "https://api.github.com/repos/getsentry/sentry-go/assignees{/user}",
"branches_url": "https://api.github.com/repos/getsentry/sentry-go/branches{/branch}",
"tags_url": "https://api.github.com/repos/getsentry/sentry-go/tags",
"blobs_url": "https://api.github.com/repos/getsentry/sentry-go/git/blobs{/sha}",
"git_tags_url": "https://api.github.com/repos/getsentry/sentry-go/git/tags{/sha}",
"git_refs_url": "https://api.github.com/repos/getsentry/sentry-go/git/refs{/sha}",
"trees_url": "https://api.github.com/repos/getsentry/sentry-go/git/trees{/sha}",
"statuses_url": "https://api.github.com/repos/getsentry/sentry-go/statuses/{sha}",
"languages_url": "https://api.github.com/repos/getsentry/sentry-go/languages",
"stargazers_url": "https://api.github.com/repos/getsentry/sentry-go/stargazers",
"contributors_url": "https://api.github.com/repos/getsentry/sentry-go/contributors",
"subscribers_url": "https://api.github.com/repos/getsentry/sentry-go/subscribers",
"subscription_url": "https://api.github.com/repos/getsentry/sentry-go/subscription",
"commits_url": "https://api.github.com/repos/getsentry/sentry-go/commits{/sha}",
"git_commits_url": "https://api.github.com/repos/getsentry/sentry-go/git/commits{/sha}",
"comments_url": "https://api.github.com/repos/getsentry/sentry-go/comments{/number}",
"issue_comment_url": "https://api.github.com/repos/getsentry/sentry-go/issues/comments{/number}",
"contents_url": "https://api.github.com/repos/getsentry/sentry-go/contents/{+path}",
"compare_url": "https://api.github.com/repos/getsentry/sentry-go/compare/{base}...{head}",
"merges_url": "https://api.github.com/repos/getsentry/sentry-go/merges",
"archive_url": "https://api.github.com/repos/getsentry/sentry-go/{archive_format}{/ref}",
"downloads_url": "https://api.github.com/repos/getsentry/sentry-go/downloads",
"issues_url": "https://api.github.com/repos/getsentry/sentry-go/issues{/number}",
"pulls_url": "https://api.github.com/repos/getsentry/sentry-go/pulls{/number}",
"milestones_url": "https://api.github.com/repos/getsentry/sentry-go/milestones{/number}",
"notifications_url": "https://api.github.com/repos/getsentry/sentry-go/notifications{?since,all,participating}",
"labels_url": "https://api.github.com/repos/getsentry/sentry-go/labels{/name}",
"releases_url": "https://api.github.com/repos/getsentry/sentry-go/releases{/id}",
"deployments_url": "https://api.github.com/repos/getsentry/sentry-go/deployments"
},
"commit_url": "https://api.github.com/repos/getsentry/sentry-go/commits/70ee6a791978e9e4b96112f30fd2cad7132ecd84",
"url": "https://api.github.com/repos/getsentry/sentry-go/commits/70ee6a791978e9e4b96112f30fd2cad7132ecd84/status"
}"
β¦ debug Fetching Checks API status...
β¦ debug GET /repos/getsentry/sentry-go/commits/70ee6a791978e9e4b96112f30fd2cad7132ecd84/check-runs - 200 in 304ms
β¦ debug Revision checks received: "{
"total_count": 1,
"check_runs": [
{
"id": 423939391,
"node_id": "MDg6Q2hlY2tSdW40MjM5MzkzOTE=",
"head_sha": "70ee6a791978e9e4b96112f30fd2cad7132ecd84",
"external_id": "147270711",
"url": "https://api.github.com/repos/getsentry/sentry-go/check-runs/423939391",
"html_url": "https://github.com/getsentry/sentry-go/runs/423939391",
"details_url": "https://travis-ci.com/getsentry/sentry-go/builds/147270711",
"status": "completed",
"conclusion": "success",
"started_at": "2020-02-03T20:00:20Z",
"completed_at": "2020-02-03T20:03:03Z",
"output": {
"title": "Build Passed",
"summary": "<a href='https://travis-ci.com/getsentry/sentry-go/builds/147270711'><img src='https://travis-ci.com/images/stroke-icons/icon-passed.png' height='11'> The build</a> **passed**.",
"text": "This is a normal build for the release\\/0.5.0 branch. You should be able to reproduce it by checking out the branch locally.\n\n## Jobs and Stages\nThis build has **nine jobs**, running in parallel.\n\n<table>\n<thead>\n <tr>\n <th>Job</th>\n <th>Go</th>\n <th>ENV</th>\n <th>State</th>\n <th>Notes</th>\n </tr>\n</thead>\n<tbody>\n <tr>\n <td><a href='https://travis-ci.com/getsentry/sentry-go/jobs/283142896'><img src='https://travis-ci.com/images/stroke-icons/icon-passed.png' height='11'> 400.1</a></td>\n <td>1.11.x</td>\n <td>GO111MODULE=on GOFLAGS=-mod=readonly</td>\n <td>passed</td>\n <td></td>\n </tr>\n <tr>\n <td><a href='https://travis-ci.com/getsentry/sentry-go/jobs/283142897'><img src='https://travis-ci.com/images/stroke-icons/icon-passed.png' height='11'> 400.2</a></td>\n <td>1.11.x</td>\n <td>GO111MODULE=off</td>\n <td>passed</td>\n <td></td>\n </tr>\n <tr>\n <td><a href='https://travis-ci.com/getsentry/sentry-go/jobs/283142898'><img src='https://travis-ci.com/images/stroke-icons/icon-passed.png' height='11'> 400.3</a></td>\n <td>1.12.x</td>\n <td>GO111MODULE=on GOFLAGS=-mod=readonly</td>\n <td>passed</td>\n <td></td>\n </tr>\n <tr>\n <td><a href='https://travis-ci.com/getsentry/sentry-go/jobs/283142899'><img src='https://travis-ci.com/images/stroke-icons/icon-passed.png' height='11'> 400.4</a></td>\n <td>1.12.x</td>\n <td>GO111MODULE=off</td>\n <td>passed</td>\n <td></td>\n </tr>\n <tr>\n <td><a href='https://travis-ci.com/getsentry/sentry-go/jobs/283142900'><img src='https://travis-ci.com/images/stroke-icons/icon-passed.png' height='11'> 400.5</a></td>\n <td>1.13.x</td>\n <td>GO111MODULE=on GOFLAGS=-mod=readonly</td>\n <td>passed</td>\n <td></td>\n </tr>\n <tr>\n <td><a href='https://travis-ci.com/getsentry/sentry-go/jobs/283142901'><img src='https://travis-ci.com/images/stroke-icons/icon-passed.png' height='11'> 400.6</a></td>\n <td>1.13.x</td>\n <td>GO111MODULE=off</td>\n <td>passed</td>\n <td></td>\n </tr>\n <tr>\n <td><a href='https://travis-ci.com/getsentry/sentry-go/jobs/283142902'><img src='https://travis-ci.com/images/stroke-icons/icon-passed.png' height='11'> 400.7 Module support outside of GOPATH</a></td>\n <td>1.13.x</td>\n <td>GO111MODULE=on GOFLAGS=-mod=readonly</td>\n <td>passed</td>\n <td></td>\n </tr>\n <tr>\n <td><a href='https://travis-ci.com/getsentry/sentry-go/jobs/283142903'><img src='https://travis-ci.com/images/stroke-icons/icon-passed.png' height='11'> 400.8</a></td>\n <td>master</td>\n <td>GO111MODULE=on GOFLAGS=-mod=readonly</td>\n <td>passed</td>\n <td>This job is <a href='https://docs.travis-ci.com/user/customizing-the-build#Rows-that-are-Allowed-to-Fail'>allowed to fail</a>.</td>\n </tr>\n <tr>\n <td><a href='https://travis-ci.com/getsentry/sentry-go/jobs/283142904'><img src='https://travis-ci.com/images/stroke-icons/icon-passed.png' height='11'> 400.9</a></td>\n <td>master</td>\n <td>GO111MODULE=off</td>\n <td>passed</td>\n <td>This job is <a href='https://docs.travis-ci.com/user/customizing-the-build#Rows-that-are-Allowed-to-Fail'>allowed to fail</a>.</td>\n </tr>\n</tbody>\n</table>\n\n## Build Configuration\n\nBuild Option | Setting\n-----------------|--------------\nLanguage | Go\nOperating System | Linux (Xenial)\nGo Versions | 1.11.x, 1.12.x, 1.13.x, master\n\n<details>\n<summary>Build Configuration</summary>\n<pre lang='yaml'>\n{\n \"go\": [\n \"1.11.x\",\n \"1.12.x\",\n \"1.13.x\",\n \"master\"\n ],\n \"os\": \"linux\",\n \"env\": [\n \"GO111MODULE=on GOFLAGS=-mod=readonly\",\n \"GO111MODULE=off\"\n ],\n \"dist\": \"xenial\",\n \"jobs\": {\n \"include\": [\n {\n \"go\": \"1.13.x\",\n \"name\": \"Module support outside of GOPATH\",\n \"script\": \"go test && go test -race\",\n \"before_script\": \"mv $GOPATH/src/github.com/getsentry/sentry-go ~/sentry-go && cd ~/sentry-go && export GOPATH= && go env GOPATH\"\n }\n ],\n \"fast_finish\": true,\n \"allow_failures\": [\n {\n \"go\": \"master\"\n }\n ]\n },\n \"group\": \"stable\",\n \"script\": [\n \"golangci-lint run --new-from-rev=$(git merge-base origin/master HEAD)\",\n \"go build\",\n \"go test\",\n \"go test -race\"\n ],\n \".result\": \"configured\",\n \"language\": \"go\",\n \"notifications\": {\n \"webhooks\": {\n \"urls\": [\n \"https://zeus.ci/hooks/befe9810-9285-11e9-b01a-0a580a281808/public/provider/travis/webhook\"\n ],\n \"on_error\": \"always\",\n \"on_start\": \"always\",\n \"on_cancel\": \"always\",\n \"on_failure\": \"always\",\n \"on_success\": \"always\"\n }\n },\n \"before_install\": [\n \"curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/v1.19.1/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.19.1\",\n \"git fetch origin master:remotes/origin/master\"\n ]\n}\n</pre>\n</details>",
"annotations_count": 0,
"annotations_url": "https://api.github.com/repos/getsentry/sentry-go/check-runs/423939391/annotations"
},
"name": "Travis CI - Branch",
"check_suite": {
"id": 435789300
},
"app": {
"id": 67,
"slug": "travis-ci",
"node_id": "MDM6QXBwNjc=",
"owner": {
"login": "travis-ci",
"id": 639823,
"node_id": "MDEyOk9yZ2FuaXphdGlvbjYzOTgyMw==",
"avatar_url": "https://avatars2.githubusercontent.com/u/639823?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/travis-ci",
"html_url": "https://github.com/travis-ci",
"followers_url": "https://api.github.com/users/travis-ci/followers",
"following_url": "https://api.github.com/users/travis-ci/following{/other_user}",
"gists_url": "https://api.github.com/users/travis-ci/gists{/gist_id}",
"starred_url": "https://api.github.com/users/travis-ci/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/travis-ci/subscriptions",
"organizations_url": "https://api.github.com/users/travis-ci/orgs",
"repos_url": "https://api.github.com/users/travis-ci/repos",
"events_url": "https://api.github.com/users/travis-ci/events{/privacy}",
"received_events_url": "https://api.github.com/users/travis-ci/received_events",
"type": "Organization",
"site_admin": false
},
"name": "Travis CI",
"description": "Test and deploy with confidence. Trusted by over 800,000 users, Travis CI is the leading hosted continuous integration system.\r\n\r\nSupporting over 30 different languages, including Ruby, Mac/iOS, and Docker, Travis CI is built for everyone.\r\n\r\nFree for open source, and with a 100 build trial for private projects, getting setup takes just 2 minutes.",
"external_url": "https://travis-ci.com",
"html_url": "https://github.com/apps/travis-ci",
"created_at": "2016-06-21T16:22:21Z",
"updated_at": "2018-09-14T20:36:16Z",
"permissions": {
"checks": "write",
"contents": "read",
"deployments": "write",
"members": "read",
"metadata": "read",
"pull_requests": "read",
"repository_hooks": "write",
"statuses": "write"
},
"events": [
"check_run",
"check_suite",
"create",
"delete",
"member",
"pull_request",
"push",
"repository"
]
},
"pull_requests": []
}
]
}"
βΉ info No config provided for Github status provider, calculating the combined status...
βΉ info pending
βΉ info Revision 70ee6a791978e9e4b96112f30fd2cad7132ecd84 has been found.
[== ] [2/3/2020, 9:26:56 PM] CI builds are still in progress, sleeping for 30 seconds...^C
Version 0.13.3 no longer publishes any package with the following message.
CRAFT_LOG=debug craft publish 8.0.0
βΉ info craft 0.13.3
βΉ info "craft" version is compatible with the minimal version from the configuration file.
βΉ info Publishing version: "8.0.0"
βΉ info Using "GithubStatusProvider" for status checks
βΉ info Using "GithubArtifactProvider" for artifacts
βΉ info No config provided for Github status provider, calculating the combined status...
βΉ info Revision 4b8e22baaa35414ad48ddc872bbd2a565a952c86 has been built successfully.
β warn No valid targets detected! Exiting.
I believe the culprit to be in #137
would it be possible to add additional parameters to the pypi upload?
specifically TWINE_REPOSITORY_URL
for uploading to private/internal repositories
can submit PR
When publishing fails, craft stops to proceed to the remaining targets. It would be great to list a summary of the targets, like:
Publish report:
β gcs
β npm
β brew: HttpError
β github
β registry
To retry, please run:
$ craft publish 1.36.3 -t brew -t github -t registry --finish
Right now, we have to open the .craft.yml
and check for the remaining targets.
Right now craft assumes that all your development happens on master.
However sometimes you want to do feature development on master but still keep a previous release branch around to do point releases that donβt have breaking changes.
Right now I have would suggest releases/0.$N.x
, or releases/$N.x
as branch names.
Maybe related to #34
We're setting up craft with the new Unity SDK.
CI is already configured in a way that we use the GitHub artifacts provider and craft prepare x.x.x
already works as expected. Release registry has a new SDK: upm:sentry-unity
and is configured already.
What we're missing now is the target to get craft publish
to work.
We've identified two tasks to do that:
github
target currently downloads the artifact, unzip it, and publish all files in that artifact to the github
release.One alternative is to zip the files before adding as attachment. And having the target (see below) unzip to move to package
main
branch..NET has a Roslyn Analyzer called PublicApiAnalyzer.
This analyzer was added to the .NET project via this pr.
It works by raising compiler error if a public API is added/removed without adding it to controlling files.
There are two files:
PublicAPI.Shipped.txt
and PublicAPI.Unshipped.txt
Which means that there's a new step when publishing NuGet packages. We must move the lines from the unshipped file to the shipped file. This should happen only when deploying non preview packages.
Trying to deploy sentry-unity
but the list of available artifacts is missing the package.
The build in question is: https://github.com/getsentry/sentry-unity/actions/runs/843357161 which contains an artifact named after the commit sha b7e538648f85e65a44a7f6a4c79432ca12ce2576
.
Craft finds the build but shows only results.xml
.
I downloaded the artifact from GHA and found it contains: package-release.zip
, the expected file.
craft --version
0.22.0
Configuration: https://github.com/getsentry/sentry-unity/blob/b7e538648f85e65a44a7f6a4c79432ca12ce2576/.craft.yml
β sentry-unity git:(main) β craft publish 0.0.14
βΉ Publishing version: "0.0.14" 09:42:39
βΉ Revision b7e538648f85e65a44a7f6a4c79432ca12ce2576 has been built successfully. 09:42:40
βΉ Fetching Github artifacts for getsentry/sentry-unity, revision b7e538648f85e65a44a7f6a4c79432ca12ce2576 [artifact-provider/github] 09:42:40
βΉ Finished downloading. [artifact-provider/github] 09:42:41
βΉ 09:42:41
βΉ Available artifacts: 09:42:41
βββββββββββββββ¬ββββββββββ¬ββββββββββ¬ββββββββββββββ
β File Name β Size β Updated β ContentType β
βββββββββββββββΌββββββββββΌββββββββββΌββββββββββββββ€
β results.xml β 18.3 kB β β β
βββββββββββββββ΄ββββββββββ΄ββββββββββ΄ββββββββββββββ
βΉ Looking for publish state file for 0.0.14... 09:42:41
βΉ Publishing to targets: 09:42:41
βΉ - upm 09:42:41
- github
- registry
When preparing a release, validate the new release number by checking if there's a release that might be called "previous".
Example: when we're releasing version 1.2.4
, 1.2.3
should probably exist.
TODOs:
When the release-registry already contains a symlink for the specified version craft fails to publish the release. I would expect that it overrides the symlink with the JSON for the specified release.
Steps to reproduce with sentry-cocoa:
craft prepare 5.1.10
craft publish 5.1.10 --target registry
Error: Version file for "5.1.10" already exists. Aborting.
This is related to getsentry/sentry-release-registry#27
When a crate is configured like this in Cargo.toml
:
[package]
name = "foo"
publish = false
Then craft still invokes cargo publish
which errors with the following message:
β¦ debug cargo: error: `symbolic-testutils` cannot be published.
β¦ debug cargo: The registry `crates-io` is not listed in the `publish` value in Cargo.toml.
Instead, craft should skip this package.
When using a different provider, do not check or require ZEUS_API_TOKEN in the environment.
Uploads to GitHub release artifacts and gcs are very unreliable for large files. Suggestion:
Note that a failed upload leaves a broken file in the release, so even just a retry loop would have to delete existing files.
This issue is easiest to reproduce with semaphore.
In some projects we generate sub-headings in changelog entries. In such a case, craft generates the "No documented changes" message.
Example:
## Unreleased
### Features
- Add support for DWARF in WASM. ([#301](https://github.com/getsentry/symbolicator/pull/301))
- Support symbolication of native Dart stack traces by prioritizing DWARF function names over symbol table entries.
### Tools
- Add `wasm-split`, which splits WASM files into code and debug information. ([#303](https://github.com/getsentry/symbolicator/pull/303))
The string "master" is hardcoded as the branch changes will land in after craft publish.
Should use github's "default branch", let you specify the default branch in .craft.yml, or both.
I have my system language set to de-de
, which is also propagated to the shell (which I hate BTW).
Either way, git is actually localized, and craft apparently canβt deal with that.
running git version 2.26.0
> LANG=de_DE CRAFT_LOG_LEVEL=debug craft prepare 0.15.0
βΉ info Preparing to release the version: 0.15.0
β error Error: fatal: mehrdeutiges Argument 'release/0.15.0': unbekannter Commit oder Pfad existiert nicht
im Arbeitsverzeichnis
Benutzen Sie '--', um Pfade und Commits zu trennen, Γ€hnlich wie:
'git <Befehl> [<Commit>...] -- [<Datei>...]'
at toError (/Users/swatinem/.volta/tools/image/packages/@sentry/craft/0.9.2/node_modules/simple-git/promise.js:90:14)
at /Users/swatinem/.volta/tools/image/packages/@sentry/craft/0.9.2/node_modules/simple-git/promise.js:61:36
at Git.<anonymous> (/Users/swatinem/.volta/tools/image/packages/@sentry/craft/0.9.2/node_modules/simple-git/src/git.js:1090:18)
at Function.Git.fail (/Users/swatinem/.volta/tools/image/packages/@sentry/craft/0.9.2/node_modules/simple-git/src/git.js:1475:18)
at fail (/Users/swatinem/.volta/tools/image/packages/@sentry/craft/0.9.2/node_modules/simple-git/src/git.js:1433:20)
at /Users/swatinem/.volta/tools/image/packages/@sentry/craft/0.9.2/node_modules/simple-git/src/git.js:1442:16
at processTicksAndRejections (internal/process/task_queues.js:97:5)
However, when I force no localization, it works just fine:
> LANG=C CRAFT_LOG_LEVEL=debug craft prepare 0.15.0
βΉ info Preparing to release the version: 0.15.0
βΉ info Created a new release branch: "release/0.15.0"
βΉ info Running the pre-release command...
β¦ debug Spawning process:
/bin/bash "scripts/bump-version.sh" "" "0.15.0"
β¦ debug /bin/bash: Current version:
β¦ debug /bin/bash: Bumping version: 0.15.0
β¦ debug /bin/bash:
β¦ debug /bin/bash:
βΉ info Committing the release changes...
β¦ debug Commit message: "release: 0.15.0"
βΉ info Pushing the release branch "release/0.15.0"...
Sometimes, when Craft is faster than GitHub and status check integrations, Craft cannot find any relevant checks, even in pending state and immediately fails: https://github.com/getsentry/onpremise/runs/777959403?check_suite_focus=true
We should figure out a way to address this issue either by trying a few times when there are no checks listed or trying to find actual integrations and match that number with the checks reported.
For example tag creation could be skipped when the sha would be the same instead of being a halting error.
Resuming a partial release is a more common release than trying to overwrite an existing release.
Ideas:
For generic HTTP errors, it would be better to print additional information, rather than:
β error HttpError
at response.text.then.message (/Users/jauer/.config/yarn/global/node_modules/@octokit/rest/lib/request/request.js:72:19)
at process._tickCallback (internal/process/next_tick.js:68:7)
Desirable user information (INFO log level) would be:
Desirable debug information (DEBUG/trace log level) would be:
As proposed by @mitsuhiko.
More information: https://devblogs.microsoft.com/commandline/windows-package-manager-preview/?WT.mc_id=ITOPSTALK-reddit-abartolo
CRAFT_LOG_LEVEL
only applies when it's added to the environment beforehand, i.e. this line is not picked from Craft env files:
export CRAFT_LOG_LEVEL=debug
It would be great if craft would continue after pressing CTRL^C once, similar to node:
> ^C
(To exit, press ^C again or type .exit)
> ^C
When introducing a new package, craft
should try to create the required folder/file structure so this doesn't have to be done manually.
[12:23:18 PM] ======================================
[12:23:18 PM] === Publishing to target: registry ===
[12:23:18 PM] ======================================
[12:23:18 PM] [[REGISTRY]] Cloning "https://github.com/getsentry/sentry-release-registry/" to "/tmp/craft-release-registry-DFIZaD"...
[12:23:19 PM] [[REGISTRY]] Adding the version file to the registry for canonical name "npm:@sentry/wasm"...
[12:23:19 PM] Error: ENOENT: no such file or directory, open '/tmp/craft-release-registry-DFIZaD/packages/npm/@sentry/wasm/latest.json'
at Object.openSync (fs.js:462:3)
at Object.readFileSync (fs.js:364:35)
at RegistryTarget.addVersionToRegistry (/craft/dist/targets/registry.js:335:47)
at RegistryTarget.pushVersionToRegistry (/craft/dist/targets/registry.js:361:20)
at runMicrotasks (<anonymous>)
at processTicksAndRejections (internal/process/task_queues.js:97:5)
at async Object.withTempDir (/craft/dist/utils/files.js:76:16)
at async RegistryTarget.publish (/craft/dist/targets/registry.js:398:9)
at async /craft/dist/commands/publish.js:135:13
at async Object.withTempDir (/craft/dist/utils/files.js:76:16)
at async publishToTargets (/craft/dist/commands/publish.js:101:5)
at async publishMain (/craft/dist/commands/publish.js:422:9)
at async Object.handler (/craft/dist/commands/publish.js:449:16)
I would prefer to run craft without debug logs on the console. Especially when publishing to crates.io, the output is enormously large. When errors occur, it would still be great to have debug logs around - sometimes with even more information than what debug
currently logs.
Would it be an option to create a file like craft-debug.log
in the cwd and delete it upon successful completion. This way, we can easily attach debug logs to bug reports.
Besides, it might be nice to have @sentry/node
in craft and log everything that goes into the error stream, maybe even attach previous logs as breadcrumbs (automatically done with the "console" integration).
It would be cool if craft
failed when passed unknown flags.
At the moment, it seems that unknown flags are ignored, which can hide typos (or flags that changed across craft
versions?!).
Example:
$ craft publish X.X.X --skip-status-check
Ignores the flag and tries to publish a release with status check. The correct flag would have been --no-status-check
.
The request
library we use is deprecated. Here are the alternatives: request/request#3143
... as the former is now deprecated in favor of the latter. For more information, see the following:
Blog post explaining the why and when of the deprecation:
https://medium.com/palantir/tslint-in-2019-1a144c2317a9
Tracking issue for deprecation process:
palantir/tslint#4534
Tool for converting config from one to the other:
https://github.com/typescript-eslint/tslint-to-eslint-config
FAQ from maintainers re: migration:
https://github.com/typescript-eslint/tslint-to-eslint-config/blob/master/docs/FAQs.md
Note as of 4/28/20: The converter tool seems to be under active development and just shipped a beta of 1.0.0
yesterday, so perhaps we should wait a few weeks for a stable version before working on this.
When publishing we should make the npm
and registry
target not fail if the version already exists.
It makes the publishing process annoying if it stops working somewhere middle in the process.
npm
npm: npm ERR! 403 403 Forbidden - PUT https://registry.npmjs.org/@sentry%2fangular - You cannot publish over the previously published versions: 6.0.0.
registry
βΉ info [registry] βΊ Adding the version file to the registry for canonical name "npm:@sentry/browser"...
β error Error: Version file for "6.0.0" already exists. Aborting.
https://github.com/marketplace/actions/release-drafter
Possible course of action is to add an option to pull the changelog from the draft release instead of reading it from a file.
One concern with using release drafter for future SDK releases is that the changelog will no longer be distributed as part of source bundles such as the sdist for the Python SDK. We could fix that by making craft write the changelog back into a file. It would have to do that when creating the release branch and writing the version bump commit.
Can we remove .None
from this list? It's quite convenient to "finish" an interrupted release with -t <missing> -t none
. Maybe we should just rename it to -t merge
.
Line 577 in 73947ac
$ yarn cli publish --no-status-check 123 β 1 master β
yarn run v1.21.1
$ run-s build
$ yarn run compile-config-schema && tsc -p tsconfig.build.json
$ node ./scripts/config-json-schema-to-ts.js
$ node dist publish --no-status-check 123
βΉ info craft 0.9.0
dist publish NEW-VERSION
π« Publish artifacts
Positionals:
NEW-VERSION Version to publish [string] [required]
Options:
[...]
--keep-downloads Keep all downloaded files [boolean] [default: false]
--no-status-check Do not check for build status in Zeus
[boolean] [default: false]
-v, --version Show version number [boolean]
-h, --help Show help [boolean]
Unknown arguments: status-check, statusCheck
It would be nice if you could avoid having to write a scripts/bump-version.sh
script for projects that have a Cargo.toml
or a package.json
.
Ideally, this should be configurable, in case you actually have a rust project, but with a package.json
which might only be used for development.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. πππ
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google β€οΈ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.