いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

gitpodコマンドがリリース (Gitpod CLI, ローカル, ワークスペース作成など)

関連記事

GitHub - devlights/blog-summary: ブログ「いろいろ備忘録日記」のまとめ

概要

以下、自分用のメモです。Gitpodに関する関連記事は上記を参照ください。

GitpodのChangeLog見てたら、以下を発見。

www.gitpod.io

gitpodコマンドをインストールすることで、ローカルでいろいろ出来るようになったみたいですね。

ちょっと試してみました。

試してみる

インストール

Linux環境の場合は brew でtapしたら入ります。

$ brew install gitpod-io/tap/gitpod
==> Tapping gitpod-io/tap
Cloning into '/home/linuxbrew/.linuxbrew/Homebrew/Library/Taps/gitpod-io/homebrew-tap'...
remote: Enumerating objects: 63, done.
remote: Counting objects: 100% (63/63), done.
remote: Compressing objects: 100% (40/40), done.
remote: Total 63 (delta 12), reused 53 (delta 10), pack-reused 0
Receiving objects: 100% (63/63), 21.01 KiB | 1.31 MiB/s, done.
Resolving deltas: 100% (12/12), done.
Tapped 1 formula (16 files, 134.4KB).
==> Fetching gitpod-io/tap/gitpod
==> Downloading https://gitpod.io/static/bin/gitpod-cli-linux-amd64
########################################################################################################################################## 100.0%
Warning: Cannot verify integrity of '998ea5409698932806d6379b7719e80a0fa31eb0820409d708eb2fad03b71394--gitpod-cli-linux-amd64'.
No checksum was provided.
For your reference, the checksum is:
  sha256 "7859e2f5dfff7c6e6e5a3c487d236ed5d8573de86c2e05acca230f6bf80d6ee6"
==> Installing gitpod from gitpod-io/tap
🍺  /home/linuxbrew/.linuxbrew/Cellar/gitpod/0.1.4: 3 files, 26.7MB, built in 0 seconds
==> Running `brew cleanup gitpod`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
$ which gitpod
/home/linuxbrew/.linuxbrew/bin/gitpod

トークンを発行

ブラウザを起動して認証することも可能なのですが、せっかくなのでアクセストークンを発行して接続するようにしました。

やり方は AccessToken を参照。

ログイン

gitpod コマンドで最初に行うことは gitpod login でログインすることです。

上記で発行したアクセストークンを添えて、コマンドを実行します。

$ gitpod login --token $GITPOD_TOKEN
Dec 22 13:48:30.831 [WARN ] could not write token to keyring, storing in config file instead. Use -v to see the error.
Dec 22 13:48:33.150 [INFO ] login successful

User name:       devlights
User ID:         xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Organization:    devlights
Organization ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Host:            https://gitpod.io

ワークスペース作成

とりあえず、Gitpodの記事にあった empty を使ってワークスペースを作成してみます。

開いているターミナル上でワークスペースをそのまま操作したいので、--ssh オプションをつけて作成。

$ gitpod workspace create https://github.com/gitpod-io/empty --ssh
Dec 22 13:54:56.497 [INFO ] waiting for workspace to start... workspaceID=gitpodio-empty-6cq1udujhac
Dec 22 13:54:56.497 [INFO ] workspace status: preparing
Dec 22 13:54:59.389 [INFO ] workspace status: pending
Dec 22 13:54:59.389 [INFO ] workspace status: creating
Dec 22 13:54:59.389 [INFO ] workspace status: pending
Dec 22 13:54:59.389 [INFO ] workspace status: initializing
Dec 22 13:54:59.392 [INFO ] workspace status: preparing
Dec 22 13:54:59.392 [INFO ] workspace status: pending
Dec 22 13:54:59.393 [INFO ] workspace status: creating
Dec 22 13:55:02.707 [INFO ] workspace status: initializing
Dec 22 13:55:03.322 [INFO ] workspace running
Warning: Permanently added 'gitpodio-empty-6cq1udujhac.ssh.ws-eu107.gitpod.io' (ECDSA) to the list of known hosts.
Welcome to Gitpod: Always ready to code. Try the following commands to get started:

        gp tasks list         List all your defined tasks in .gitpod.yml
        gp tasks attach       Attach your terminal to a workspace task

        gp ports list         Lists workspace ports and their states
        gp stop               Stop current workspace
        gp help               To learn about the gp CLI commands

For more information, see the Gitpod documentation: https://gitpod.io/docs

emptyは、素のUbuntuっぽい感じです。

 $ cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.3 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.3 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy
$ lscpu | grep 'CPU(s)'
CPU(s):                             16
On-line CPU(s) list:                0-15
NUMA node0 CPU(s):                  0-15
$ free -h
               total        used        free      shared  buff/cache   available
Mem:            62Gi        21Gi       4.3Gi       1.8Gi        37Gi        39Gi
Swap:          374Gi        79Mi       374Gi

Goをインストールして動かしてみる

Homebrewが使えるので、何かをインストールしたりするのはとても楽です。

$ brew install golang
$ go version
go version go1.21.5 linux/amd64
$ go mod init app
go: creating new go.mod: module app

$ vim main.go

$ go fmt
$ go vet
$ go build

$ ./app
hello world

ワークスペースを停止

exitでシェルを終了してもワークスペースは動いたままなので注意。

ワークスペースを停止させる場合は gp stop を実行。

$ gp stop
Connection to gitpodio-empty-qbnso39or4b.ssh.ws-eu107.gitpod.io closed by remote host.
Connection to gitpodio-empty-qbnso39or4b.ssh.ws-eu107.gitpod.io closed.
Error: exit status 0xffffffff

プロンプトが自分のローカルに戻ってきますので、その後に gitpod コマンドでワークスペースの状態を見てみます。

$ gitpod workspace list | head -n 2
ID                                REPOSITORY             BRANCH STATUS
gitpodio-empty-6cq1udujhac        gitpod-io/empty        main   stopped

ちゃんと停止されていますね。

参考情報

www.gitpod.io


過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。