flyctl

command module
v0.1.46-pre-1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 30, 2023 License: Apache-2.0 Imports: 12 Imported by: 0

README

flyctl

flyctl is a command-line interface for fly.io

Note: Most installations of flyctl also alias flyctl to fly as a command name and this will become the default name in the future. During the transition, note that where you see flyctl as a command it can be replaced with fly.

Installation

Using a Package Manager

Homebrew (macOS, Linux, WSL)
brew install flyctl

To upgrade to the latest version:

brew upgrade flyctl

Install Script

Download flyctl and install into a local bin directory.

MacOS, Linux, WSL

Installing the latest version:

curl -L https://fly.io/install.sh | sh

Installing the latest pre-release version:

curl -L https://fly.io/install.sh | sh -s pre

Installing a specific version:

curl -L https://fly.io/install.sh | sh -s 0.0.200
Windows

Run the Powershell install script:

iwr https://fly.io/install.ps1 -useb | iex

Downloading from GitHub

Download the appropriate version from the Releases page of the flyctl GitHub repository.

Getting Started

  1. Sign into your fly account
fly auth login
  1. List your apps
fly apps list
  1. View app status
fly status -a {app-name}

App Settings

flyctl will attempt to use the app name from a fly.toml file in the current directory. For example, if the current directory contains this file:

$ cat fly.toml
app: banana

flyctl will operate against the banana app unless overridden by the -a flag or other app name setting in the command line.

Building on Windows

There is a simple Powershell script, winbuild.ps1, which will run the code generation for the help files, format them, and run a full build, leaving a new binary in the bin directory.

Running from branches on your local machine

Run scripts/build-dfly to build a Docker image from the current branch. Then, use scripts/dfly to run it. This assumes you are already authenticated to Fly in your local environment.

Cutting a release

If you have write access to this repo, you can ship a prerelease or full release with:

scripts/bump_version.sh prerel

or

scripts/bump_version.sh

Running preflight tests

A preflight suite of integration tests is located under the test/preflight/ directory. It uses a flyctl binary and runs real user scenarios, including deploying apps and dbs, and validates expected behavior.

Warning: Real apps will be deployed that cost real money. The test fixture does its best to destroy resources it creates, but sometimes it may fail to delete a resource.

The easiest way to run the preflight tests is:

Copy .direnv/preflight-example to .direnv/preflight and edit following these guidelines:

  • Grab your auth token from ~/.fly/config.yml
  • Do not use your "personal" org, create an new org (i.e. flyctl-tests-YOURNAME)
  • Set 2 regions, ideally not your closest region because it leads to false positives when --region or primary region handling is buggy. Run fly platform regions for valid ids.

Finally run the tests:

make preflight-test

That builds a flyctl binary (just like running make), then runs the preflight tests against that binary.

To run a single test:

make preflight-test T=TestAppsV2Example

Oh, add more preflight tests at tests/preflight/*

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
internal/proto
Package proto implements the agent's protocol.
Package proto implements the agent's protocol.
api module
Borrowed from https://www.calhoun.io/creating-random-strings-in-go/
Borrowed from https://www.calhoun.io/creating-random-strings-in-go/
internal
appconfig
Package appconfig implements functionality related to reading and writing app configuration files.
Package appconfig implements functionality related to reading and writing app configuration files.
cache
Package cache implements accessing of the state.yml file.
Package cache implements accessing of the state.yml file.
cli
Package cli implements the command line interface.
Package cli implements the command line interface.
command
Package command implements helpers useful for when building cobra commands.
Package command implements helpers useful for when building cobra commands.
command/agent
Package agent implements the agent command chain.
Package agent implements the agent command chain.
command/apps
Package apps implements the apps command chain.
Package apps implements the apps command chain.
command/auth
Package auth implements the auth command chain.
Package auth implements the auth command chain.
command/curl
Package curl implements the curl command chain.
Package curl implements the curl command chain.
command/dig
Package dig implements the dig command chain.
Package dig implements the dig command chain.
command/docs
Package docs implements the docs command chain.
Package docs implements the docs command chain.
command/doctor
Package doctor implements the doctor command chain.
Package doctor implements the doctor command chain.
command/extensions
Package logs implements the logs command chain.
Package logs implements the logs command chain.
command/history
Package history implements the history command chain.
Package history implements the history command chain.
command/logs
Package logs implements the logs command chain.
Package logs implements the logs command chain.
command/platform
Package platform implements the platform command chain.
Package platform implements the platform command chain.
command/root
Package root implements the root command.
Package root implements the root command.
command/status
Package status implements the status command chain.
Package status implements the status command chain.
command/version
Package version implements the version command chain.
Package version implements the version command chain.
env
Package env implements environment related functionality.
Package env implements environment related functionality.
filemu
Package filemu implements file-based mutexes.
Package filemu implements file-based mutexes.
flag
Package flag implements flag-related functionality.
Package flag implements flag-related functionality.
format
Package format implements various formatters.
Package format implements various formatters.
prompt
Package prompt implements input-related functionality.
Package prompt implements input-related functionality.
sentry
Package sentry implements sentry-related functionality.
Package sentry implements sentry-related functionality.
sort
Package sort implements common sorting functions.
Package sort implements common sorting functions.
state
Package state implements setters and getters for command contexts.
Package state implements setters and getters for command contexts.
task
Package task implements async task handling.
Package task implements async task handling.
scripts

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL