'Github api tag is not created

I tried to create a tag using Github API. I made a POST request to /repos/:owner/:repo/git/tags, and I get this result:

HTTP/1.1 201 Created

But unfortunately no tag was created. The new tag simply does not exist. What do I wrong?



Solution 1:[1]

The tagging didn't work for me. It shows created, but nothing appears on github. However, I managed to achieve tagging by creating pre-release. Which is not ideal, but still better than nothing:

curl --location --request POST 
'https://<giturl>/repos/{owner}/{repo}/releases' \
--header 'Authorization: Basic xxx' \
--header 'Content-Type: application/vnd.github.v3+json' \
--data-raw '{
"tag_name": "v0.0.1", 
"target_commitish": "master",
"name": "v0.0.1",
"body": "This is for Release v0.0.1 of the product",
"draft": false,
"prerelease": true}'

Solution 2:[2]

There are two types of tags -- annotated and lightweight, you can check the difference here.

As Github API puts, /repos/:owner/:repo/git/tags only created an annotated tag object, and then you should manually create a refrence with the sha of this tag object by calling create refrence api:

curl \
  -X POST \
  -H "Accept: application/vnd.github.v3+json" \
  https://api.github.com/repos/OWNER/REPO/git/refs \
  -d '{"ref":"refs/tags/tagName","sha":"the sha of tag object"}'

In another case, if you only want to add a lightweight tag to one commit, you should directly call create refrence api without the first step:

curl \
  -X POST \
  -H "Accept: application/vnd.github.v3+json" \
  https://api.github.com/repos/OWNER/REPO/git/refs \
  -d '{"ref":"refs/tags/tagName","sha":"the sha of the commit that you want to tag"}'

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Dharman
Solution 2 Vikki