GitPedia

Cfx portal upload

Re-Upload your escrow resources to portal.cfx.re using GitHub Actions

From Tynopia·Updated June 23, 2026·View on GitHub·

In the past, using CFX Keymaster made it impossible to build CI/CD pipelines for Escrow Resources due to the Cloudflare Bot Challenge. The project is written primarily in TypeScript, distributed under the MIT License license, first published in 2024. Key topics include: actions, cfx, fivem, redm.

Latest release: v1.2.5
June 20, 2026View Changelog →

CFX Portal Upload Action

GitHub Super-Linter
CI
Check dist/
CodeQL
Coverage

In the past, using CFX Keymaster made it impossible to build CI/CD pipelines for
Escrow Resources due to the Cloudflare Bot Challenge.

However, CFX has now created a new platform called "Portal", which is still
secured via Cloudflare but operates in a less restrictive attack mode, enabling
its use within a GitHub Action.

How to Use It

To use this action, you need to authenticate via the forum using a cookie until
CFX provides API keys for this action.

  1. Go to the CFX Forum and inspect the site using your browser's developer
    tools.

  2. Navigate to the Cookies section and search for _t.

  3. Copy the value of this cookie and save it in GitHub Secrets as
    FORUM_COOKIE.

  4. Use the action in your workflow (remember to
    checkout before!):

    yaml
    - name: Upload Escrow Resource uses: Tynopia/cfx-portal-upload with: cookie: ${{ secrets.FORUM_COOKIE }} assetName: 'my_asset'

[!IMPORTANT]

When you log out of the forum, the cookie will become invalid, causing the
action to fail. After configuring the secret, you should clear the cookie from
your browser and log in again to avoid potential issues.

Input Parameters

KeyTypeValueDescription
cookiestringThe Forum Cookie to authenticateGo to forum.cfx.re and inspect the page with your browser's dev tools. Then search for the _t cookie.
makeZipboolean?Automatically ZIP the full repository to upload it (default: true)This will remove the folders .git//.github//.vscode/ from the repository before zipping.
assetNamestringThe asset name to re-uploadThis is the name of the asset you want to re-upload.
assetIdnumberThe Asset ID, which is a unique ID in the portalThe Asset ID can be found at portal.cfx.re. image
betaboolean?Whether to upload as a release candidateIf not provided, it will search for a beta "*" tag in fxmanifest.lua.
changelogstring?The changelog for the new versionIf not provided, it will check changelogFile or the commit message.
changelogFilestring?Path to a file containing the changelogIf provided and changelog is empty, the content of this file will be used.
deleteOlderVersionsboolean?Delete older versions after successful upload (default: false)This will fetch all versions of the asset and delete all except the one just uploaded.

| zipPath | string? | The path to your ZIP file that should be uploaded | This
is the file location of your packed ZIP file inside the Workflow Container,
usually stored in /home/.... | | skipUpload | boolean? | Skip the upload and
only log in to the portal | This will skip the asset upload to the portal and
only go through the login process. Useful in cron jobs to prevent the cookie
from getting invalidated due to inactivity | | maxRetries | number? | The
maximum number of retries. (default: 3) | This is the maximum number of times
the login will be retried if it fails. | | chunkSize | number? | How large one
chunk is for upload. Default: 2097152 bytes | |

[!NOTE]

? after the type indicates that the parameter is optional. if no assetName
or assetId is provided, the repository name will be used as assetName.

Skip Upload

If you haven't uploaded an asset in a long time, the cookie will become invalid
due to inactivity. To prevent this, you can use a cron job to log in to the
portal and refresh the cookie.

yaml
name: Refresh Cookie on: schedule: - cron: '0 0 * * *' jobs: refresh_cookie: name: Login to Portal runs-on: ubuntu-latest steps: - name: Run CFX Portal Upload uses: Tynopia/cfx-portal-upload@main with: cookie: ${{ secrets.FORUM_COOKIE }} skipUpload: true

How to Contribute

If you want to contribute to this project, you can fork the repository and
create a pull request:

  1. Fork the repository.
  2. Clone your forked repository.
  3. Create a new branch.
  4. Make your changes.
  5. Push the changes to your fork.
  6. Create a pull request.

Contributing helps the CFX community and improves the experience for everyone.

[!NOTE]

Currently, the project does not have complete unit test coverage. If you want
to contribute, adding unit tests would be a great starting point.

Contributors

Showing top 2 contributors by commit count.

View all contributors on GitHub →

This article is auto-generated from Tynopia/cfx-portal-upload via the GitHub API.Last fetched: 6/25/2026