Code Monkey home page Code Monkey logo

craft's Issues

GH Release target depreacted

β„Ή 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"

Always print the version and force updates

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.

GH Artifact provider: Unable to retrieve artifact list for revision

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)

bug: `-t` flag does not accept the new `targetId[targetName]` format

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.

Document `id` field for targets

We have added an optional (but very useful) id field for target configurations and use this with the -t option in #128 and a follow up PR. That said this is not documented properly.

Thanks @jan-auer for reporting.

Feature Request: Check out master after publish

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.

Support monorepos with independently versioned members

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.

Crates.io Releases seem to suffer from race conditions

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.

Pull after merging the release branch

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.

craft thinks GitHub check is PENDING, GitHub shows green PASSED

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

Bug: 0.13.3 rejects all targets and no longer publishes

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

add repository parameters to pypi

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

Show aborted commands after failed publish

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.

Allow publishing patch releases from a release branch

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

`craft` target for Unity

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:

  1. The github target currently downloads the artifact, unzip it, and publish all files in that artifact to the github release.
    image
    This isn't the expected behavior for Unity, so ideally we'd just skip attaching anything to the github release altogether.

One alternative is to zip the files before adding as attachment. And having the target (see below) unzip to move to package

  1. The actual 'release' for UPM is to replace all contents of a folder in the repository itself, and push it to the main branch.
    More context about the release process in this issue, and the contributing docs.

Support Public API files for .NET projects

.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.

Release with GHA artifact missing/wrong file

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.

Environment

craft --version
0.22.0

Configuration: https://github.com/getsentry/sentry-unity/blob/b7e538648f85e65a44a7f6a4c79432ca12ce2576/.craft.yml

Steps to Reproduce

➜  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

Implement GCS artifact provider

TODOs:

  • uploadArtifact method in BaseArtifactProvider
  • Figure out the file structure in the bucket
  • "artifacts upload" command
  • GcsArtifactProvider implementation
  • Testing it :)

Not overriding symlink at release-registry when publishing

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:

  1. craft prepare 5.1.10
  2. Create a symlink for 5.1.10.json in release-registry for cocoa.
  3. craft publish 5.1.10 --target registry
  4. Craft fails with Error: Version file for "5.1.10" already exists. Aborting.

Screenshot 2020-07-22 at 13 41 12

This is related to getsentry/sentry-release-registry#27

Skip to publish crates with publish=false

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.

Retry uploads to gcs and github targets

Uploads to GitHub release artifacts and gcs are very unreliable for large files. Suggestion:

  • Wrap every file upload in a generous retry loop
  • If a release already exists, do not throw an exception but update files (this could be just implemented by deleting all conflicting files from the release and uploading them again).

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.

Bug: Changelog auto generates "no changes" when sub-headings are used

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))

Preparing release with localized git fails

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"...

Make Craft more idempotent and add option to skip "completed" things

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:

  1. Make publish steps independent so one failure does not stop others
  2. Persist publish state on disk as it progresses and then pick it up on subsequent runs
  3. Make getsentry/publish parse the issue body which will have the targets listed as checkboxes
  4. getsentry/publish action uses the the persistence file to sync the issue body to Craft

Print better messages for generic HTTP errors

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:

  • The operation that was executing
  • Potential reasons, if known

Desirable debug information (DEBUG/trace log level) would be:

  • The request URL
  • Status code, potentially part of the response body if feasible
  • The calling function and ideally its stack trace

Protect against accidental CTRL^C

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

Registry target, create files if not exist yet

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)

Store debug logs to disk

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).

Refuse unknown flags

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.

Migrate from `tslint` to `eslint`

... 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.

Make npm & registry target more robust

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.

Integrate with GitHub release drafter

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.

Cannot use --no-status-check

$ 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

Bump versions directly for known package managers

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.