semantic-release / semantic-release/git
Unable to push assets to a gitlab protected branch
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 339
- Forks
- 75
- Avg merge
- 5h 15m
- Merged PRs (30d)
- 6
Description
I have a protected master branch on my gitlab project
I'm using that Docker image
FROM node:21-alpine
RUN apk --update --no-cache add git
ENV JAVA_HOME /usr/lib/jvm/java-17-openjdk
ENV PATH $PATH:$JAVA_HOME/bin
ENV MAVEN_HOME /usr/share/maven
ENV MAVEN_VERSION 3.9.6
RUN apk --no-cache add openjdk17-jdk --repository=https://adoptopenjdk.jfrog.io/adoptopenjdk/alpine/
RUN wget -q "https://archive.apache.org/dist/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz" -O /tmp/apache-maven.tar.gz && \
tar xzf /tmp/apache-maven.tar.gz -C /usr/share/ && \
ln -s /usr/share/apache-maven-${MAVEN_VERSION}/bin/mvn /usr/bin/mvn && \
rm -f /tmp/apache-maven.tar.gz
RUN npm install -g semantic-release conventional-changelog-conventionalcommits @semantic-release/git @semantic-release/gitlab @semantic-release/exec
CMD ["mvn"]
and I'm using that config
{
"branches": ["master"],
"plugins": [
[ "@semantic-release/commit-analyzer", {
"preset": "conventionalcommits",
}],
"@semantic-release/release-notes-generator",
[ "@semantic-release/exec", {
"verifyReleaseCmd": 'mvn versions:set -DnewVersion="${nextRelease.version}" && echo "NEXT_VERSION=${nextRelease.version}" >> build.env',
}],
["@semantic-release/git", {
"assets": ["pom.xml"],
"message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
}],
"@semantic-release/gitlab"
]
}
Without the @semantic-release/git module it is working fine. The tag is created and pushed to the master branch.
But it seems the module cannot push the assets to the master branch.
[1:04:43 PM] [semantic-release] [@semantic-release/git] › ℹ Found 1 file(s) to commit
[1:04:44 PM] [semantic-release] › ✘ Failed step "prepare" of plugin "@semantic-release/git"
[1:04:44 PM] [semantic-release] › ✘ An error occurred while running semantic-release: Error: Command failed with exit code 1: git push --tags https://gitlab-ci-token:[secure]@mygitlab.com/myproject.git HEAD:master
remote: GitLab: You are not allowed to push code to protected branches on this project.
Adding a printenv in the script I can see my GITLAB_TOKEN variable with my token.
But I don't understand if it's really possible to push to master with a personal access token ?
I also tried removing the GITLAB_TOKEN from the project variable and adding
before_script:
- export GITLAB_TOKEN="$CI_JOB_TOKEN"
- export GITLAB_URL="$CI_SERVER_URL"
Now the printenv still show me the variable
GITLAB_TOKEN=[MASKED]
But it is still not working (with another reason).
The GitLab token (https://github.com/semantic-release/gitlab/blob/master/README.md#gitlab-authentication) configured in the GL_TOKEN or GITLAB_TOKEN environment variable must be a valid personal access token
I don't want to unprotect my master branch. So what's the solution ?
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the @semantic-release/git README authentication section and the reported git push command in the issue. Reproduce the GitLab protected-branch failure with the shown configuration, then compare the token and branch permissions used by @semantic-release/gitlab and @semantic-release/git. Done means a documented or tested way to push release assets without unprotecting the branch.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- git, gitlab, javascript
- Domain
- devops, release
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100