# CI configuration: secrets, variables, packages Actions secrets and variables and the package registry. Workflow files and dispatch are in [actions.md](actions.md). `gt --help` is authoritative. **Scoping (secrets and variables):** repository (default), organization (`--org`), or your account (`--account`). Names are stored **upper-cased**. > The global `--user` flag selects the account `gt` acts as — it is **not** a > scope. Use `--org` / `--account` for scope. ## secret ```text gt secret delete list set ``` Read by workflows as `${{ secrets.NAME }}`. Secret values are never shown. - `set [] [-b|--body value] [-F|--body-file file|-] [-d|--description] [-f|--env-file file|-] [-o|--org ORG] [--account]` — `--env-file` sets every `NAME=value` of a dotenv file. The value comes from the flag/file, else stdin when not a terminal (one trailing newline removed), else a prompt. Setting an existing secret without `--description` clears its description. - `list [-L n] [--page n] [-o|--org ORG] [--account]` (alias `ls`) - `delete [-o|--org ORG] [--account] [-y|--yes]` (alias `rm`) JSON: `created_at, description, name`. ```bash gt secret set DEPLOY_TOKEN echo -n "$TOKEN" | gt secret set NPM_TOKEN --org acme gt secret set --env-file .env gt secret list --org acme ``` ## variable ```text gt variable delete get list set view ``` Read by workflows as `${{ vars.NAME }}`. Same scoping and naming rules as secrets. **JSON fields:** `description, name, value`. - `set [] [-b value] [-F file|-] [-d description] [-f|--env-file file|-] [-o|--org ORG] [--account]` - `get [...]` — print just the value (for scripts). - `view ` — value plus description. - `list [-L n] [--page n] [-o|--org ORG] [--account]` (alias `ls`) - `delete [-o|--org ORG] [--account] [-y|--yes]` (alias `rm`) ```bash gt variable set ENVIRONMENT --body staging gt variable set CONFIG --org acme < config.json gt variable set --env-file .env region=$(gt variable get REGION --org acme) gt variable list --org acme ``` ## package ```text gt package delete link list unlink upload versions view ``` Packages live in the registry of a user or organization: the owner of the selected repository, else your account, unless `--owner` names another. A package is addressed by **type** (e.g. `generic`, `npm`, `container`) and **name**. `package list` aliases `package ls`; `package delete` aliases `package rm`. **JSON fields:** `created_at, creator, id, name, owner, repository, type, url, version`; `view` adds `files`. - `list [-t|--type type] [-S|--search text] [--owner OWNER] [-L n] [--page n]` - `versions [--owner] [-L n] [--page n]` - `view [] [--owner]` — latest version without one. - `upload ... [--owner]` — generic packages; each file is stored under its base name; a version cannot hold two files of the same name. - `link [--owner]` - `unlink [--owner]` - `delete [] [--all] [--owner] [-y|--yes]` ```bash gt package upload tool 1.0.0 dist/tool-linux-amd64 dist/tool-darwin-arm64 gt package list --owner acme --type container gt package versions generic tool gt package delete generic tool 1.0.0 ```