Updates were rejected because the tag already exists in the remote
iki opened this issue · 3 comments
First release on https://github.com/iki/expenses-app-react-ts-gql worked ok. Then I deleted and recreated repo, tried again and encountered the issue repeatedly since then.
It seems that https://github.com/qiwi/semantic-release-gh-pages-plugin tries to create a release tag that is already created by https://github.com/semantic-release/git.
Didn't help repeatedly:
- hard resetting local/remote
master
before the release commit + removing local/remote release tags + removing local/remotegh_pages
branch - same as above + deleting GitHub repo and creating again
Worked ok repeatedly with any of these changes in .releaserc.yml`:
- removed
@qiwi/semantic-release-gh-pages-plugin
- or removing
@semantic-release/git
- or replacing
@semantic-release/git
with@semantic-release/github
Failing configuration:
plugins:
- '@semantic-release/commit-analyzer'
- '@semantic-release/release-notes-generator'
- '@semantic-release/changelog'
- '@semantic-release/git'
-
- '@qiwi/semantic-release-gh-pages-plugin'
-
src: build
msg: 'deploy(gh-pages): {{=it.nextRelease.gitTag}}'
release:
branch: master
Using current versions:
"devDependencies": {
"@qiwi/semantic-release-gh-pages-plugin": "^1.10.4",
"@semantic-release/changelog": "^3.0.4",
"@semantic-release/git": "^7.0.16",
"semantic-release": "^15.13.19"
},
Failing debug log:
yarn run v1.12.3
$ yarn run-env semantic-release --no-ci --debug
=== yarn run-env semantic-release --no-ci --debug
$ sh -c "dotenv -e .env -e .env.local -e .env.${NODE_ENV:=development} -e .env.${NODE_ENV:=development}.local -- $@" -- semantic-release --no-ci --debug
[7:12:49 PM] [semantic-release] » i Running semantic-release version 15.13.19
semantic-release:config load config from: C:\Users\iki\..src\expenses-app-react-ts-gql\.releaserc.yml +0ms
semantic-release:config options values: {
semantic-release:config branch: 'master',
semantic-release:config repositoryUrl: 'git+https://github.com/iki/expenses-app-react-ts-gql',
semantic-release:config tagFormat: 'v${version}',
semantic-release:config plugins: [
semantic-release:config '@semantic-release/commit-analyzer',
semantic-release:config '@semantic-release/release-notes-generator',
semantic-release:config '@semantic-release/changelog',
semantic-release:config '@semantic-release/git',
semantic-release:config [ '@qiwi/semantic-release-gh-pages-plugin', [Object] ]
semantic-release:config ],
semantic-release:config release: { branch: 'master' },
semantic-release:config _: [],
semantic-release:config ci: false,
semantic-release:config debug: true,
semantic-release:config '$0': 'node_modules\\semantic-release\\bin\\semantic-release.js',
semantic-release:config noCi: true
semantic-release:config } +5ms
semantic-release:plugins options for @semantic-release/changelog/verifyConditions: {} +0ms
[7:12:50 PM] [semantic-release] » √ Loaded plugin "verifyConditions" from "@semantic-release/changelog"
semantic-release:plugins options for @semantic-release/git/verifyConditions: {} +6ms
[7:12:50 PM] [semantic-release] » √ Loaded plugin "verifyConditions" from "@semantic-release/git"
semantic-release:plugins options for @qiwi/semantic-release-gh-pages-plugin/verifyConditions: { src: 'build', msg: 'deploy(gh-pages): {{=it.nextRelease.gitTag}}' } +3ms
[7:12:50 PM] [semantic-release] » √ Loaded plugin "verifyConditions" from "@qiwi/semantic-release-gh-pages-plugin"
semantic-release:plugins options for @semantic-release/commit-analyzer/analyzeCommits: {} +8ms
[7:12:50 PM] [semantic-release] » √ Loaded plugin "analyzeCommits" from "@semantic-release/commit-analyzer"
semantic-release:plugins options for @semantic-release/release-notes-generator/generateNotes: {} +4ms
[7:12:50 PM] [semantic-release] » √ Loaded plugin "generateNotes" from "@semantic-release/release-notes-generator"
semantic-release:plugins options for @semantic-release/changelog/prepare: {} +3ms
[7:12:50 PM] [semantic-release] » √ Loaded plugin "prepare" from "@semantic-release/changelog"
semantic-release:plugins options for @semantic-release/git/prepare: {} +4ms
[7:12:50 PM] [semantic-release] » √ Loaded plugin "prepare" from "@semantic-release/git"
semantic-release:plugins options for @qiwi/semantic-release-gh-pages-plugin/publish: { src: 'build', msg: 'deploy(gh-pages): {{=it.nextRelease.gitTag}}' } +5ms
[7:12:50 PM] [semantic-release] » √ Loaded plugin "publish" from "@qiwi/semantic-release-gh-pages-plugin"
[7:12:50 PM] [semantic-release] » √ Run automated release from branch master
[7:12:56 PM] [semantic-release] » √ Allowed to push to the Git repository
[7:12:56 PM] [semantic-release] » i Start step "verifyConditions" of plugin "@semantic-release/changelog"
[7:12:56 PM] [semantic-release] » √ Completed step "verifyConditions" of plugin "@semantic-release/changelog"
[7:12:56 PM] [semantic-release] » i Start step "verifyConditions" of plugin "@semantic-release/git"
[7:12:56 PM] [semantic-release] » √ Completed step "verifyConditions" of plugin "@semantic-release/git"
[7:12:56 PM] [semantic-release] » i Start step "verifyConditions" of plugin "@qiwi/semantic-release-gh-pages-plugin"
[7:12:56 PM] [semantic-release] [@qiwi/semantic-release-gh-pages-plugin] » i verify gh-pages config
[7:12:56 PM] [semantic-release] » √ Completed step "verifyConditions" of plugin "@qiwi/semantic-release-gh-pages-plugin"
semantic-release:get-last-release found tags: [] +0ms
[7:12:57 PM] [semantic-release] » i No git tag version found
[7:12:57 PM] [semantic-release] » i No previous release found, retrieving all commits
[7:12:57 PM] [semantic-release] » i Found 5 commits since last release
semantic-release:get-commits Parsed commits: [ { commit: { long: '72da2c219c9ec70e23240d95765585c4d6134994', short: '72da2c2' }, tree: { long: 'fe68f0f44826d68636b13bcfb22732a88453a5c6', short: 'fe68f0f' }, author: { name: 'Jan Killian', email: '...', date: 2019-07-31T16:23:29.000Z }, committer: { name: 'Jan Killian', email: '...', date: 2019-07-31T17:11:38.000Z }, subject: 'chore(build): add yarn release command to create and deploy new release', body: '', hash: '72da2c219c9ec70e23240d95765585c4d6134994', message: 'chore(build): add yarn release command to create and deploy new release', gitTags: '(HEAD -> master, origin/master, origin/HEAD)', committerDate: 2019-07-31T17:11:38.000Z }, { commit: { long: 'd52574f33d7ef6000e43cd7d069fce6169f12e3c', short: 'd52574f' }, tree: { long: 'f56bc814d9fe1766b7b6dce8f8e94edfc575e5ce', short: 'f56bc81' }, author: { name: 'Jan Killian', email: '...', date: 2019-07-31T16:13:43.000Z }, committer: { name: 'Jan Killian', email: '...', date: 2019-07-31T16:13:43.000Z }, subject: 'docs(readme): add environment settings docs', body: '', hash: 'd52574f33d7ef6000e43cd7d069fce6169f12e3c', message: 'docs(readme): add environment settings docs', gitTags: '', committerDate: 2019-07-31T16:13:43.000Z }, { commit: { long: '3cf0230fe66bf86082d54b9b8c5f76942b521f10', short: '3cf0230' }, tree: { long: '312aabe58afb01b2d7789aa305a0034c14f3fc36', short: '312aabe' }, author: { name: 'Jan Killian', email: '...', date: 2019-07-31T14:44:50.000Z }, committer: { name: 'Jan Killian', email: '...', date: 2019-07-31T14:44:50.000Z }, subject: 'chore(project): set project package properties', body: '', hash: '3cf0230fe66bf86082d54b9b8c5f76942b521f10', message: 'chore(project): set project package properties', gitTags: '', committerDate: 2019-07-31T14:44:50.000Z }, { commit: { long: 'd379edb72411b9b70753dc28228e9248481eab4f', short: 'd379edb' }, tree: { long: '2a22022c91647403a3e462a9aaeef0a02fab68f8', short: '2a22022' }, author: { name: 'Jan Killian', email: '...', date: 2019-07-31T14:07:17.000Z }, committer: { name: 'Jan Killian', email: '...', date: 2019-07-31T14:08:24.000Z }, subject: 'fix(security): fix CVE-2019-10744 in lodash<4.17.13 and lodash.template<4.5.0', body: '', hash: 'd379edb72411b9b70753dc28228e9248481eab4f', message: 'fix(security): fix CVE-2019-10744 in lodash<4.17.13 and lodash.template<4.5.0', gitTags: '', committerDate: 2019-07-31T14:08:24.000Z }, { commit: { long: '8d4abde0cebecac9405817e11b4575417b8b90b0', short: '8d4abde' }, tree: { long: 'b566799d6da231e2c1ad24b18fdbe27e959cd0b6', short: 'b566799' }, author: { name: 'Jan Killian', email: '...', date: 2019-07-28T19:37:35.000Z }, committer: { name: 'Jan Killian', email: '...', date: 2019-07-31T14:03:32.000Z }, subject: 'feat(core): create React app with TypeScript support', body: '', hash: '8d4abde0cebecac9405817e11b4575417b8b90b0', message: 'feat(core): create React app with TypeScript support', gitTags: '(0)', committerDate: 2019-07-31T14:03:32.000Z } ] +0ms
[7:12:57 PM] [semantic-release] » i Start step "analyzeCommits" of plugin "@semantic-release/commit-analyzer"
[7:12:57 PM] [semantic-release] [@semantic-release/commit-analyzer] » i Analyzing commit: chore(build): add yarn release command to create and deploy new release
semantic-release:commit-analyzer Analyzing with default rules +0ms
[7:12:57 PM] [semantic-release] [@semantic-release/commit-analyzer] » i The commit should not trigger a release
[7:12:57 PM] [semantic-release] [@semantic-release/commit-analyzer] » i Analyzing commit: docs(readme): add environment settings docs
semantic-release:commit-analyzer Analyzing with default rules +11ms
[7:12:57 PM] [semantic-release] [@semantic-release/commit-analyzer] » i The commit should not trigger a release
[7:12:57 PM] [semantic-release] [@semantic-release/commit-analyzer] » i Analyzing commit: chore(project): set project package properties
semantic-release:commit-analyzer Analyzing with default rules +6ms
[7:12:57 PM] [semantic-release] [@semantic-release/commit-analyzer] » i The commit should not trigger a release
[7:12:57 PM] [semantic-release] [@semantic-release/commit-analyzer] » i Analyzing commit: fix(security): fix CVE-2019-10744 in lodash<4.17.13 and lodash.template<4.5.0
semantic-release:commit-analyzer Analyzing with default rules +9ms
semantic-release:commit-analyzer The rule { type: 'fix', release: 'patch' } match commit with release type 'patch' +0ms [7:12:57 PM] [semantic-release] [@semantic-release/commit-analyzer] » i The release type for the commit is patch
[7:12:57 PM] [semantic-release] [@semantic-release/commit-analyzer] » i Analyzing commit: feat(core): create React app with TypeScript support
semantic-release:commit-analyzer Analyzing with default rules +11ms
semantic-release:commit-analyzer The rule { type: 'feat', release: 'minor' } match commit with release type 'minor' +14ms
[7:12:57 PM] [semantic-release] [@semantic-release/commit-analyzer] » i The release type for the commit is minor
[7:12:57 PM] [semantic-release] [@semantic-release/commit-analyzer] » i Analysis of 5 commits complete: minor release
[7:12:57 PM] [semantic-release] » √ Completed step "analyzeCommits" of plugin "@semantic-release/commit-analyzer"
[7:12:57 PM] [semantic-release] » i There is no previous release, the next release version is 1.0.0
[7:12:57 PM] [semantic-release] » i Start step "generateNotes" of plugin "@semantic-release/release-notes-generator"
semantic-release:release-notes-generator version: '1.0.0' +0ms
semantic-release:release-notes-generator host: undefined +2ms
semantic-release:release-notes-generator owner: 'iki' +2ms
semantic-release:release-notes-generator repository: 'expenses-app-react-ts-gql' +1ms
semantic-release:release-notes-generator previousTag: undefined +2ms
semantic-release:release-notes-generator currentTag: 'v1.0.0' +1ms
semantic-release:release-notes-generator host: 'https://github.com' +3ms
semantic-release:release-notes-generator host: 'https://github.com' +2ms
semantic-release:release-notes-generator linkReferences: undefined +2ms
semantic-release:release-notes-generator issue: 'issues' +3ms
semantic-release:release-notes-generator commit: 'commit' +5ms
[7:12:58 PM] [semantic-release] » √ Completed step "generateNotes" of plugin "@semantic-release/release-notes-generator" [7:12:58 PM] [semantic-release] » i Start step "prepare" of plugin "@semantic-release/changelog"
[7:12:58 PM] [semantic-release] [@semantic-release/changelog] » i Create C:\Users\iki\..src\expenses-app-react-ts-gql\CHANGELOG.md
[7:12:58 PM] [semantic-release] » √ Completed step "prepare" of plugin "@semantic-release/changelog"
[7:12:58 PM] [semantic-release] » i Start step "prepare" of plugin "@semantic-release/git"
semantic-release:git globed assets: [ 'CHANGELOG.md', 'package.json' ] +0ms
[7:12:58 PM] [semantic-release] [@semantic-release/git] » i Found 1 file(s) to commit
semantic-release:git add file to git index {
stdout: '',
stderr: '',
code: 0,
failed: false,
killed: false,
signal: null,
cmd: 'git add --force --ignore-errors CHANGELOG.md',
timedOut: false
} +0ms
semantic-release:git commited files: [ 'CHANGELOG.md' ] +124ms
[7:13:04 PM] [semantic-release] [@semantic-release/git] » i Prepared Git release: v1.0.0
[7:13:04 PM] [semantic-release] » √ Completed step "prepare" of plugin "@semantic-release/git"
[7:13:04 PM] [semantic-release] » i Start step "generateNotes" of plugin "@semantic-release/release-notes-generator"
semantic-release:release-notes-generator version: '1.0.0' +7s
semantic-release:release-notes-generator host: undefined +4ms
semantic-release:release-notes-generator owner: 'iki' +2ms
semantic-release:release-notes-generator repository: 'expenses-app-react-ts-gql' +1ms
semantic-release:release-notes-generator previousTag: undefined +2ms
semantic-release:release-notes-generator currentTag: 'v1.0.0' +2ms
semantic-release:release-notes-generator host: 'https://github.com' +2ms
semantic-release:release-notes-generator host: 'https://github.com' +2ms
semantic-release:release-notes-generator linkReferences: undefined +3ms
semantic-release:release-notes-generator issue: 'issues' +2ms
semantic-release:release-notes-generator commit: 'commit' +3ms
[7:13:04 PM] [semantic-release] » √ Completed step "generateNotes" of plugin "@semantic-release/release-notes-generator" [7:13:11 PM] [semantic-release] » √ Created tag v1.0.0
[7:13:11 PM] [semantic-release] » i Start step "publish" of plugin "@qiwi/semantic-release-gh-pages-plugin"
[7:13:11 PM] [semantic-release] [@qiwi/semantic-release-gh-pages-plugin] » i Publishing docs via gh-pages
[7:13:22 PM] [semantic-release] [@qiwi/semantic-release-gh-pages-plugin] » × Publish docs failure ProcessError: To https://github.com/iki/expenses-app-react-ts-gql.git
* [new branch] gh-pages -> gh-pages
* [new tag] v1.0.1 -> v1.0.1
! [rejected] v1.0.0 -> v1.0.0 (already exists)
error: failed to push some refs to 'https://[secure]@github.com/iki/expenses-app-react-ts-gql.git'
hint: Updates were rejected because the tag already exists in the remote.
at ChildProcess.<anonymous> (C:\Users\iki\..src\expenses-app-react-ts-gql\node_modules\gh-pages\lib\git.js:42:16)
at ChildProcess.emit (events.js:203:13)
at maybeClose (internal/child_process.js:1021:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:283:5) {
code: 1,
message: 'To https://github.com/iki/expenses-app-react-ts-gql.git\n' +
' * [new branch] gh-pages -> gh-pages\n' +
' * [new tag] v1.0.1 -> v1.0.1\n' +
' ! [rejected] v1.0.0 -> v1.0.0 (already exists)\n' +
"error: failed to push some refs to 'https://[secure]@github.com/iki/expenses-app-react-ts-gql.git'\n" +
'hint: Updates were rejected because the tag already exists in the remote.\n',
name: 'ProcessError'
}
[7:13:22 PM] [semantic-release] » × Failed step "publish" of plugin "@qiwi/semantic-release-gh-pages-plugin"
[7:13:22 PM] [semantic-release] » × An error occurred while running semantic-release: ProcessError: To https://github.com/iki/expenses-app-react-ts-gql.git
* [new branch] gh-pages -> gh-pages
* [new tag] v1.0.1 -> v1.0.1
! [rejected] v1.0.0 -> v1.0.0 (already exists)
error: failed to push some refs to 'https://[secure]@github.com/iki/expenses-app-react-ts-gql.git'
hint: Updates were rejected because the tag already exists in the remote.
at ChildProcess.<anonymous> (C:\Users\iki\..src\expenses-app-react-ts-gql\node_modules\gh-pages\lib\git.js:42:16)
at ChildProcess.emit (events.js:203:13)
at maybeClose (internal/child_process.js:1021:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:283:5) {
code: 1,
message: 'To https://github.com/iki/expenses-app-react-ts-gql.git\n' +
' * [new branch] gh-pages -> gh-pages\n' +
' * [new tag] v1.0.1 -> v1.0.1\n' +
' ! [rejected] v1.0.0 -> v1.0.0 (already exists)\n' +
"error: failed to push some refs to 'https://[secure]@github.com/iki/expenses-app-react-ts-gql.git'\n" +
'hint: Updates were rejected because the tag already exists in the remote.\n',
name: 'ProcessError',
pluginName: '@qiwi/semantic-release-gh-pages-plugin'
}
ProcessError: To https://github.com/iki/expenses-app-react-ts-gql.git
* [new branch] gh-pages -> gh-pages
* [new tag] v1.0.1 -> v1.0.1
! [rejected] v1.0.0 -> v1.0.0 (already exists)
error: failed to push some refs to 'https://[secure]@github.com/iki/expenses-app-react-ts-gql.git'
hint: Updates were rejected because the tag already exists in the remote.
at ChildProcess.<anonymous> (C:\Users\iki\..src\expenses-app-react-ts-gql\node_modules\gh-pages\lib\git.js:42:16)
at ChildProcess.emit (events.js:203:13)
at maybeClose (internal/child_process.js:1021:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:283:5) {
code: 1,
message: 'To https://github.com/iki/expenses-app-react-ts-gql.git\n' +
' * [new branch] gh-pages -> gh-pages\n' +
' * [new tag] v1.0.1 -> v1.0.1\n' +
' ! [rejected] v1.0.0 -> v1.0.0 (already exists)\n' +
"error: failed to push some refs to 'https://[secure]@github.com/iki/expenses-app-react-ts-gql.git'\n" +
'hint: Updates were rejected because the tag already exists in the remote.\n',
name: 'ProcessError',
pluginName: '@qiwi/semantic-release-gh-pages-plugin'
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
EDIT: Removed my email from parsed commits :)
@iki, thanks for your detailed report. This seems to be what happens:
semantic-release triggers plugins.prepare
before plugins.push
. That's correct. But @semantic-release/git plugin evaluates git push at the prepare
stage, and gh-pages util does the same on thepublish
step.
As we can see, both execs use --tag
flag, that pushes all local tags to the remote.
Well, we just need to find a place for git pull --tags -f
to sync remote tags.
@iki, the patch (1.10.5) is on way. May I ask you to check thsi out?
Verified 1.10.5: patch, test, build log, result
{
"release": {
"branch": "master",
"plugins": [
"@semantic-release/release-notes-generator",
"@semantic-release/changelog",
"@semantic-release/git",
"@semantic-release/npm",
[
"@qiwi/semantic-release-gh-pages-plugin",
{
"msg": "updated",
"branch": "gh-pages"
}
]
]
}
}