Skip to content

Job ending with error 403 marked as successful #77

Closed

Description

@pawsgineer

Bug Report

Description

Trying to publish asset with wrong permissions.

Expected behavior

Step fails

Actual behavior

403 error in log, but step marked as successful

Environment

  • Action version: v10.3.1

Configuration

GitHub Actions Job Definition
      - name: Upload to GitHub Release Assets
        uses: python-semantic-release/[email protected]
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          tag: ${{ needs.release.outputs.tag }}
          verbosity: 2
Semantic Release Configuration

Execution Log

semantic-release -vv publish
2025-08-31T12:13:48.0967672Z            ERROR    error uploading asset paws_bakery-0.4.1.zip    github.py:473
2025-08-31T12:13:48.0968645Z                     ╭──── Traceback (most recent call last) ─────╮              
2025-08-31T12:13:48.0969347Z                     │ /opt/psr/.venv/lib/python3.13/site-package │              
2025-08-31T12:13:48.0970035Z                     │ s/semantic_release/hvcs/github.py:470 in   │              
2025-08-31T12:13:48.0970651Z                     │ upload_dists                               │              
2025-08-31T12:13:48.0971251Z                     │                                            │              
2025-08-31T12:13:48.0971794Z                     │   467 │   │   │   f for f in glob.glob(dis │              
2025-08-31T12:13:48.0972368Z                     │   468 │   │   ):                           │              
2025-08-31T12:13:48.0972901Z                     │   469 │   │   │   try:                     │              
2025-08-31T12:13:48.0973469Z                     │ ❱ 470 │   │   │   │   self.upload_release_ │              
2025-08-31T12:13:48.0974053Z                     │   471 │   │   │   │   n_succeeded += 1     │              
2025-08-31T12:13:48.0975165Z                     │   472 │   │   │   except HTTPError:  # noq │              
2025-08-31T12:13:48.0975905Z                     │   473 │   │   │   │   logger.exception("er │              
2025-08-31T12:13:48.0976553Z                     │                                            │              
2025-08-31T12:13:48.0977225Z                     │ /opt/psr/.venv/lib/python3.13/site-package │              
2025-08-31T12:13:48.0978034Z                     │ s/semantic_release/helpers.py:143 in       │              
2025-08-31T12:13:48.0978754Z                     │ _wrapper                                   │              
2025-08-31T12:13:48.0979367Z                     │                                            │              
2025-08-31T12:13:48.0979965Z                     │   140 │   │   │   )                        │              
2025-08-31T12:13:48.0980581Z                     │   141 │   │   │                            │              
2025-08-31T12:13:48.0981242Z                     │   142 │   │   │   # Call function          │              
2025-08-31T12:13:48.0981903Z                     │ ❱ 143 │   │   │   result = func(*args, **k │              
2025-08-31T12:13:48.0982557Z                     │   144 │   │   │                            │              
2025-08-31T12:13:48.0983203Z                     │   145 │   │   │   # Log result             │              
2025-08-31T12:13:48.0983883Z                     │   146 │   │   │   logger.debug("%s -> %s", │              
2025-08-31T12:13:48.0984550Z                     │                                            │              
2025-08-31T12:13:48.0985493Z                     │ /opt/psr/.venv/lib/python3.13/site-package │              
2025-08-31T12:13:48.0986282Z                     │ s/semantic_release/hvcs/github.py:429 in   │              
2025-08-31T12:13:48.0987051Z                     │ upload_release_asset                       │              
2025-08-31T12:13:48.0987716Z                     │                                            │              
2025-08-31T12:13:48.0988345Z                     │   426 │   │   )                            │              
2025-08-31T12:13:48.0988957Z                     │   427 │   │                                │              
2025-08-31T12:13:48.0989606Z                     │   428 │   │   with open(file, "rb") as dat │              
2025-08-31T12:13:48.0990550Z                     │ ❱ 429 │   │   │   response = self.session. │              
2025-08-31T12:13:48.0991223Z                     │   430 │   │   │   │   url,                 │              
2025-08-31T12:13:48.0992178Z                     │   431 │   │   │   │   params={"name": os.p │              
2025-08-31T12:13:48.0992727Z                     │   432 │   │   │   │   headers={            │              
2025-08-31T12:13:48.0993210Z                     │                                            │              
2025-08-31T12:13:48.0993837Z                     │ /opt/psr/.venv/lib/python3.13/site-package │              
2025-08-31T12:13:48.0994538Z                     │ s/requests/sessions.py:637 in post         │              
2025-08-31T12:13:48.0995326Z                     │                                            │              
2025-08-31T12:13:48.0995850Z                     │   634 │   │   :rtype: requests.Response    │              
2025-08-31T12:13:48.0996389Z                     │   635 │   │   """                          │              
2025-08-31T12:13:48.0996936Z                     │   636 │   │                                │              
2025-08-31T12:13:48.0997514Z                     │ ❱ 637 │   │   return self.request("POST",  │              
2025-08-31T12:13:48.0998090Z                     │   638 │                                    │              
2025-08-31T12:13:48.0998643Z                     │   639 │   def put(self, url, data=None, ** │              
2025-08-31T12:13:48.0999237Z                     │   640 │   │   r"""Sends a PUT request. Ret │              
2025-08-31T12:13:48.1000016Z                     │                                            │              
2025-08-31T12:13:48.1000688Z                     │ /opt/psr/.venv/lib/python3.13/site-package │              
2025-08-31T12:13:48.1001368Z                     │ s/requests/sessions.py:589 in request      │              
2025-08-31T12:13:48.1002011Z                     │                                            │              
2025-08-31T12:13:48.1002619Z                     │   586 │   │   │   "allow_redirects": allow │              
2025-08-31T12:13:48.1003231Z                     │   587 │   │   }                            │              
2025-08-31T12:13:48.1003753Z                     │   588 │   │   send_kwargs.update(settings) │              
2025-08-31T12:13:48.1004308Z                     │ ❱ 589 │   │   resp = self.send(prep, **sen │              
2025-08-31T12:13:48.1005042Z                     │   590 │   │                                │              
2025-08-31T12:13:48.1005560Z                     │   591 │   │   return resp                  │              
2025-08-31T12:13:48.1006079Z                     │   592                                      │              
2025-08-31T12:13:48.1006540Z                     │                                            │              
2025-08-31T12:13:48.1007080Z                     │ /opt/psr/.venv/lib/python3.13/site-package │              
2025-08-31T12:13:48.1007702Z                     │ s/requests/sessions.py:710 in send         │              
2025-08-31T12:13:48.1008259Z                     │                                            │              
2025-08-31T12:13:48.1008761Z                     │   707 │   │   r.elapsed = timedelta(second │              
2025-08-31T12:13:48.1009281Z                     │   708 │   │                                │              
2025-08-31T12:13:48.1009810Z                     │   709 │   │   # Response manipulation hook │              
2025-08-31T12:13:48.1010359Z                     │ ❱ 710 │   │   r = dispatch_hook("response" │              
2025-08-31T12:13:48.1010875Z                     │   711 │   │                                │              
2025-08-31T12:13:48.1011377Z                     │   712 │   │   # Persist cookies            │              
2025-08-31T12:13:48.1011904Z                     │   713 │   │   if r.history:                │              
2025-08-31T12:13:48.1012400Z                     │                                            │              
2025-08-31T12:13:48.1012931Z                     │ /opt/psr/.venv/lib/python3.13/site-package │              
2025-08-31T12:13:48.1013770Z                     │ s/requests/hooks.py:30 in dispatch_hook    │              
2025-08-31T12:13:48.1014300Z                     │                                            │              
2025-08-31T12:13:48.1014940Z                     │   27 │   │   if hasattr(hooks, "__call__") │              
2025-08-31T12:13:48.1015451Z                     │   28 │   │   │   hooks = [hooks]           │              
2025-08-31T12:13:48.1015965Z                     │   29 │   │   for hook in hooks:            │              
2025-08-31T12:13:48.1016485Z                     │ ❱ 30 │   │   │   _hook_data = hook(hook_da │              
2025-08-31T12:13:48.1016985Z                     │   31 │   │   │   if _hook_data is not None │              
2025-08-31T12:13:48.1017480Z                     │   32 │   │   │   │   hook_data = _hook_dat │              
2025-08-31T12:13:48.1017994Z                     │   33 │   return hook_data                  │              
2025-08-31T12:13:48.1018500Z                     │                                            │              
2025-08-31T12:13:48.1019029Z                     │ /opt/psr/.venv/lib/python3.13/site-package │              
2025-08-31T12:13:48.1019631Z                     │ s/semantic_release/hvcs/util.py:35 in      │              
2025-08-31T12:13:48.1020188Z                     │ <lambda>                                   │              
2025-08-31T12:13:48.1020669Z                     │                                            │              
2025-08-31T12:13:48.1021321Z                     │   32 │   """                               │              
2025-08-31T12:13:48.1021833Z                     │   33 │   session = Session()               │              
2025-08-31T12:13:48.1022360Z                     │   34 │   if raise_for_status:              │              
2025-08-31T12:13:48.1022907Z                     │ ❱ 35 │   │   session.hooks = {"response":  │              
2025-08-31T12:13:48.1023425Z                     │   36 │                                     │              
2025-08-31T12:13:48.1023911Z                     │   37 │   if retry:                         │              
2025-08-31T12:13:48.1024423Z                     │   38 │   │   if isinstance(retry, bool):   │              
2025-08-31T12:13:48.1025071Z                     │                                            │              
2025-08-31T12:13:48.1025613Z                     │ /opt/psr/.venv/lib/python3.13/site-package │              
2025-08-31T12:13:48.1026233Z                     │ s/requests/models.py:1026 in               │              
2025-08-31T12:13:48.1026807Z                     │ raise_for_status                           │              
2025-08-31T12:13:48.1027307Z                     │                                            │              
2025-08-31T12:13:48.1027800Z                     │   1023 │   │   │   )                       │              
2025-08-31T12:13:48.1028289Z                     │   1024 │   │                               │              
2025-08-31T12:13:48.1028814Z                     │   1025 │   │   if http_error_msg:          │              
2025-08-31T12:13:48.1029335Z                     │ ❱ 1026 │   │   │   raise HTTPError(http_er │              
2025-08-31T12:13:48.1029853Z                     │   1027 │                                   │              
2025-08-31T12:13:48.1030359Z                     │   1028 │   def close(self):                │              
2025-08-31T12:13:48.1030910Z                     │   1029 │   │   """Releases the connection  │              
2025-08-31T12:13:48.1031461Z                     ╰────────────────────────────────────────────╯              
2025-08-31T12:13:48.1031930Z                     HTTPError: 403 Client Error: Forbidden for                  
2025-08-31T12:13:48.1032399Z                     url:                                                        
2025-08-31T12:13:48.1032904Z                     https://uploads.github.com/repos/pawsgineer/b3              
2025-08-31T12:13:48.1033707Z                     d_paws_bakery/releases/243714625/assets?name=p              
2025-08-31T12:13:48.1034270Z                     aws_bakery-0.4.1.zip                                        
2025-08-31T12:13:48.1035069Z [12:13:48] DEBUG    Github.upload_dists -> 0                      helpers.py:146

Additional context

Activity

  1. added
    bugSomething isn't working
    triagewaiting for maintainer review
    on Aug 31, 2025
  2. changed the title [-]Job ending with error 403 considered successful[/-] [+]Job ending with error 403 marked as successful[/+] on Aug 31, 2025
  3. codejedi365 commented on Aug 31, 2025

    @codejedi365
    Collaborator

    I'll take a look, Thanks!

  4. self-assigned this
    on Aug 31, 2025
  5. codejedi365 commented on Dec 14, 2025

    @codejedi365
    Collaborator

    I reviewed this issue and found the problem. Given that this repository is only a lightweight wrapper around python-semantic-release, the issue of an ignored authentication error is actually deeper in the project code and it did not bubble up to the exit code of the action.sh script. Opening issue on the primary repo: python-semantic-release/python-semantic-release#1395

  6. github-actions commented on Feb 13, 2026

    @github-actions

    It has been 60 days since the last update on this confirmed issue. @python-semantic-release/team can you provide an update on the status of this issue?

  7. codejedi365 commented on Aug 29, 2026

    @codejedi365
    Collaborator

    🎉 This issue has been resolved in v10.6.0 🎉

    You can find more information about this release on the GitHub Releases page.

    If your issue persists, please reply here and we will re-open the issue. If you receive a new error, please open a new issue and reference this issue there.

  8. added
    resolvedUsed when a bug has been fixed & released
    and removed
    confirmedPrevent from becoming stale
    on Aug 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingresolvedUsed when a bug has been fixed & released

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions