Skip to content

Referência completa

O próprio CLI é a referência:

goship --help               # lista os comandos
goship <comando> --help     # flags e exemplos de um comando

Comandos

ComandoO que faz
goship login / logout / whoamiautenticação
goship org list / use <slug>escolher a organização
goship projectslista os projetos que você alcança, com o seu papel em cada um
goship project use <slug>fixa o projeto padrão
goship project create <slug> [--name <nome>]cria um projeto na organização
goship environmentslista os ambientes da organização, com o cluster de cada um e se cada um está ativado (SLUG, NAME, CLUSTER, DEFAULT, ENABLED) — Ambientes
goship environment use <slug>fixa o ambiente deste projeto: confere que ele existe e guarda a escolha por organização e projeto
goship environment enable <slug>ativa um ambiente (administrador); a homologação nasce desativada. A partir da 0.16.0
goship environment disable <slug>desativa um ambiente vazio que não seja o padrão (administrador). A partir da 0.16.0
goship environment create <slug> [--name <nome>] [--cluster <id|nome>] [--db-server <id|nome>]cria um ambiente; sem --cluster e --db-server, ele usa o cluster GoShip e o PostgreSQL do GoShip
goship environment rm <slug>apaga um ambiente; pede confirmação, e --yes pula
goship deploy [dir]cria o app se preciso, aplica env e faz deploy, no ambiente em uso; --image <ref> faz deploy de uma imagem pronta, sem diretório — Deploy de uma imagem
goship apps [-A]lista os apps do ambiente em uso; -A lista os de tudo que você alcança, em seções org/projeto/ambiente, e pula com uma nota os ambientes que você não alcança. goship dbs -A e goship volumes -A fazem o mesmo
goship app create|info|rm|start|stop|restart|scale|plan|visibilitygerenciar um app; create imprime Creating <app> in org/projeto/ambiente, e --private já cria o app privado; info <app>, quando o projeto não foi escolhido e a organização tem vários, procura o app em todos os projetos e ambientes (--environment limita a busca a um ambiente); visibility <app> public|private liga ou desliga o login do GoShip
goship app access list|add|reset|rm|token <app>quem pode abrir um app privado
goship logs -a <app> [-f] [-l N] [--source web]logs; -f acompanha em tempo real
goship run -a <app> [--once] [--isolated] -- <cmd>rodar um comando onde estão o código e o ambiente do app
goship shell -a <app> [--unit <u>] [--isolated]shell interativo numa unidade; --isolated abre um container novo, útil com o app pausado ou em crash
goship env list|set|unset -a <app>variáveis de ambiente
goship db create|list|info|users|user-add|extensions|extension-add|extension-rm|bind|unbind|rmPostgreSQL gerenciado, no ambiente em uso; create usa o servidor padrão do ambiente, e --server escolhe outro pra um banco — Provisionar
goship plans [--kind app|database]os planos do ambiente em uso; --kind db, o nome antigo, continua aceito
goship domain add|rm|list|register|verifydomínios próprios e TLS
goship volume create|list|info|bind|unbind|rmdiscos persistentes, no ambiente em uso — Volumes
goship cloud providers|connect|list|regions|sizes|disconnectcontas de nuvem da organização (elas não são de um projeto) — connect aws aceita --role-arn ou --access-keys-stdin; connect gcp aceita --gcp-project ou --project-number; connect --account <id> reconecta no lugar uma conta de chave de API — Contas de nuvem
goship clusters / goship cluster create|info|sizes|resize|rmos clusters da organização (ID, NAME, TYPE, STATUS, HOST, SHARED) — create aceita --cloud <conta> --region --size, --host <ip> --ssh-key (com --ssh-user e --port opcionais) ou --kubeconfig <arquivo>, e --environment <slug> (repetível) já aponta ambientes que existem para o cluster novo; info, sizes, resize e rm aceitam o id ou o nome; resize <cluster> --size <tipo> troca o tamanho de um cluster criado pelo GoShip (Contas de nuvem) — Clusters
goship node …foi substituído por goship cluster …: imprime node commands are now "goship cluster …" e sai com código 2
goship releases -a <app> / goship rollback <versão> -a <app>histórico de releases e volta pra uma versão
goship token create|list|rmtokens de API pra CI e scripts

Flags globais

FlagO que faz
--org <slug>organização deste comando, no lugar da escolhida com goship org use
--project <slug>projeto deste comando; também pode vir de GOSHIP_PROJECT ou do project: do goship.yaml — ordem em Login, organização, projeto e ambiente
--environment <slug>ambiente deste comando; também pode vir do environment: do goship.yaml, de GOSHIP_ENVIRONMENT ou de goship environment use — ordem em Login, organização, projeto e ambiente

A partir da versão 0.5.0, a flag --project é global e escolhe o projeto do GoShip. Em goship cloud connect gcp, o id do projeto do Google Cloud agora é --gcp-project; scripts que usavam goship cloud connect gcp --project <id> precisam trocar a flag.

Ambientes e clusters (a partir da versão 0.14.0)

  • goship env continua sendo as variáveis de ambiente de um app (goship env set). Os ambientes do GoShip, como desenvolvimento, homologação e produção, são goship environment e goship environments.
  • Onde um app, banco ou volume roda deixou de ser uma flag: goship deploy, goship app create e goship volume create não escolhem mais a máquina. Quem decide é o ambiente, e o ambiente decide pelo cluster.
  • Os comandos goship node viraram goship cluster. A chave node do goship.yaml é ignorada, com um aviso (goship.yaml).
  • As contas de nuvem são da organização: goship cloud age só nesse nível, e não há mais o que mover entre projetos.
  • Quem já tinha um servidor conectado o encontra em goship clusters, com o mesmo nome, e os apps dele não mudam: Se você já tinha um servidor conectado.

Saída pra script

Todo comando que devolve dados aceita --output json:

goship apps --output json | jq -r '.[] | select(.status=="running") | .name'

Os comandos que transmitem saída em tempo real — deploy, logs, run, shell, releases, rollback — recusam --output json em vez de fingir que suportam. goship cluster create também acompanha etapas em tempo real até o cluster ficar pronto; use --no-wait pra ele devolver na hora, e aí sim --output json imprime o cluster criado.