Skip to content
Select theme
  • Auto
  • Dark
  • Light

Publish a package

The project folder holds telesphorepo.toml. One command publishes it: a Gradle or Maven build, an npm package, a Python package, a Rust crate, a .NET package or a Helm chart.

  1. Install the Telesphorepo CLI once. Your server’s address is the server line of telesphorepo.toml. See Install the CLI for the details.

    Terminal window
    curl -fsSL https://repo.example.com/install.sh | sh

    On Windows:

    Terminal window
    irm https://repo.example.com/install.ps1 | iex
  2. In the project folder, run the publish command.

    Terminal window
    telesphorepo publish
  3. The first time, the CLI prints a link and a code. Open the link, then click Approve device.

Done when the build tool says so: Gradle prints BUILD SUCCESSFUL, Maven prints BUILD SUCCESS, Cargo prints Published. For Python and .NET, the CLI prints Uploaded or Pushed for each file.

The CLI finds the project in the folder and runs its own tool for you. It prints the command before it runs it. It gives the tool a publish token for this one repository, and ends the token when the tool ends.

Project The CLI runs
Gradle ./gradlew publish, or gradle publish without a wrapper
Maven ./mvnw deploy, or mvn deploy without a wrapper
npm (package.json) npm publish, pnpm publish, yarn npm publish or bun publish, by the lockfile
Python (pyproject.toml, setup.py) poetry build, uv build or python -m build, then an upload of each file
Rust (Cargo.toml) cargo publish
.NET (.sln, .csproj, .fsproj) dotnet pack -c Release, then a push of each package
Helm chart (Chart.yaml) helm package, then helm push

For the steps of each format, see npm, Python, Rust and Cargo, .NET and NuGet, Docker and Helm, and Debian, raw and curl.

Project not set up yet? Set up a project.

Find your problem, then do the fix

no telesphorepo.toml in this folder or above. The project is not set up, or the file is not committed. Set up a project, or pull the latest commit.

The browser page asks for two-step verification. Click Set up two-step verification. Add your phone app, then approve.

No browser page opens. Copy the address that the terminal shows. Open it yourself.

403 when you publish. You cannot publish to this repository yet. Ask your server admin for Publish.

409 when you publish. That version is already on the server. Raise the version. In a Maven repository, you can publish a -SNAPSHOT version again and again. npm answers 403 version ... already exists for the same reason.

The CLI says that a tool is not on the PATH. The CLI runs the tool of the project, such as pnpm, poetry, cargo or dotnet. Install it, then publish again.

The server refused the device. Run telesphorepo login with your server’s address, and approve again. An approval lasts 90 days, unless someone removes the device.

The CLI says that it needs a newer CLI. Answer Y to update, or run telesphorepo update. The CLI then runs the command again.

The CLI says that it needs a newer server. Ask your server admin to update the server.

You lost a laptop. Open Settings › Devices and revoke that laptop.

You want to approve the computer before you publish. Run telesphorepo login https://repo.example.com.

You want to see what the CLI will run. Run telesphorepo status in the project folder.

Gradle says that no project applies maven-publish. Add the maven-publish plugin to the build file of each project to publish.

One project must not publish. Add this line to the build file of that project:

build.gradle.kts
tasks.withType<PublishToMavenRepository>().configureEach { enabled = false }

You publish a Debian package or a plain file. See Debian, raw and curl.

You publish Python wheels or .NET packages that you built. Name the files: telesphorepo publish dist/*.whl or telesphorepo publish bin/Release/*.nupkg. The CLI then builds nothing.