th: CLI ຂອງ ThailandHosting

Deploy Container ແລະ Static Web, ສຳເນົາໄຟລ໌ຂຶ້ນ Object Storage, ເຊື່ອມຕໍ່ Database ແລະ Cache, ສົ່ງ ແລະ ຮັບຂໍ້ຄວາມຂອງ Queue ຈາກ terminal ຫຼື CI ຂອງທ່ານ

th ແມ່ນຫຍັງ

th ແມ່ນ command line ຂອງ ThailandHosting ມັນເອີ້ນ API ດຽວກັນກັບ Console ໂດຍເຮັດວຽກໃນນາມບັນຊີຂອງທ່ານ (ຫຼັງ th auth login) ຫຼື ໃນນາມ API Key (ໃນ CI) ຄຳສັ່ງຈັດເປັນກຸ່ມຕາມບໍລິການ: th <group> <command> [arguments] [parameters]

Shell
th auth login
th container deploy api --source .
th static-site deploy docs ./dist
th object-storage cp -r ./backups th://my-bucket/backups
th database connect app-db
th queue tail jobs

th help ສະແດງທຸກຄຳສັ່ງ ເພີ່ມ --help ໃສ່ຄຳສັ່ງໃດກໍໄດ້ (ຫຼື ຣັນ th help container deploy) ເພື່ອເບິ່ງພາຣາມິເຕີຂອງຄຳສັ່ງນັ້ນ ຖ້າພິມພຽງຊື່ກຸ່ມ ເຊັ່ນ th container ຈະສະແດງຄຳສັ່ງໃນກຸ່ມນັ້ນ

ພາຣາມິເຕີ ແລະ ອາກິວເມັນວາງລຳດັບໃດກໍໄດ້: th container deploy api --port 3000 ແລະ th container deploy --port 3000 api ໃຫ້ຜົນຄືກັນ ແຟລັກທີ່ເປີດໄວ້ຕັ້ງແຕ່ຕົ້ນປິດໄດ້ດ້ວຍ --no- ເຊັ່ນ --no-ack

ຕິດຕັ້ງ

ສະຄຣິບຕິດຕັ້ງດາວໂຫຼດ release ລ່າສຸດຈາກ GitHub ແລະ ກວດກັບ SHA256SUMS ຂອງ release ນັ້ນກ່ອນຕິດຕັ້ງ

Shell
# Linux, macOS
curl -fsSL https://raw.githubusercontent.com/mrzack99s/thailandhosting-cli/main/install.sh | sh

# Windows (PowerShell)
irm https://raw.githubusercontent.com/mrzack99s/thailandhosting-cli/main/install.ps1 | iex
ລະບົບth ຖືກຕິດຕັ້ງໄວ້ໃສຕົວເລືອກ
Linux, macOS/usr/local/bin ຫຼື ~/.local/bin ເມື່ອຂຽນໂຟນເດີທຳອິດບໍ່ໄດ້TH_VERSION=0.1.0 ເລືອກເວີຊັນ TH_INSTALL_DIR ເລືອກໂຟນເດີ
Windows%LOCALAPPDATA%\Programs\th ແລະ ເພີ່ມເຂົ້າ PATH ຂອງຜູ້ໃຊ້ (ເປີດ terminal ໃໝ່ຫຼັງຕິດຕັ້ງ)$env:TH_VERSION ເລືອກເວີຊັນ

ດາວໂຫຼດໄຟລ໌ archive ສຳລັບລະບົບຂອງທ່ານຈາກ GitHub Releases ກໍໄດ້ ຫຼື build ເອງດ້ວຍ Go 1.23 ຂຶ້ນໄປ:

Shell
go install github.com/mrzack99s/thailandhosting-cli/cmd/th@latest

ກວດເວີຊັນທີ່ຕິດຕັ້ງດ້ວຍ th version

ເຂົ້າສູ່ລະບົບ

  1. ຣັນ th auth login CLI ຈະພິມລິ້ງ ແລະ ລະຫັດ ແລ້ວເປີດ Console ໃນບຣາວເຊີ (ຖ້າໃສ່ --no-browser ຈະພິມລິ້ງຢ່າງດຽວ ສຳລັບເຊີບເວີທີ່ບໍ່ມີໜ້າຈໍ desktop)
  2. ໃນ Console ກວດວ່າລະຫັດກົງກັບໃນ terminal ແລ້ວກົດ Approve
  3. terminal ຈະບອກວ່າທ່ານເຂົ້າສູ່ລະບົບໃນນາມໃຜ ຖ້າຍັງບໍ່ໄດ້ຕັ້ງ Project Project ທຳອິດຂອງທ່ານຈະກາຍເປັນ Project ທີ່ໃຊ້ງານ

ການເຂົ້າສູ່ລະບົບໃຊ້ໄດ້ 90 ມື້ ແລະ ຖືກບັນທຶກໄວ້ໃນໄຟລ໌ຕັ້ງຄ່າຂອງ th (th/config.json ໃນໂຟນເດີ config ຂອງຜູ້ໃຊ້ ອ່ານໄດ້ສະເພາະທ່ານ) ແລະ ສະແດງໃນ Console ທີ່ ບັນຊີ → Sessions ເຊິ່ງທ່ານສັ່ງອອກຈາກລະບົບໄດ້ຈາກທຸກບ່ອນ

Shell
th auth status        # CLI ເຮັດວຽກໃນນາມໃຜ (ຫຼື th whoami)
th auth logout        # ອອກຈາກລະບົບ token ນີ້ ແລະ ລຶບອອກຈາກໄຟລ໌ຕັ້ງຄ່າ

ໃນ CI ບໍ່ຕ້ອງເຂົ້າສູ່ລະບົບ: ໃຫ້ຕັ້ງ API Key ໃນ TH_API_KEY ແທນ (ເບິ່ງ ໃຊ້ໃນ CI) ເມື່ອຕັ້ງ TH_API_KEY ໄວ້ ມັນຈະຖືກໃຊ້ກ່ອນການເຂົ້າສູ່ລະບົບທີ່ບັນທຶກໄວ້

ເລືອກ Project ແລະ Region

ຄຳສັ່ງສ່ວນໃຫຍ່ເຮັດວຽກກັບ Project ດຽວ ບໍລິການໃໝ່ຕ້ອງມີ Region ນຳ ຕັ້ງຄັ້ງດຽວດ້ວຍ th config ຫຼື ໃສ່ໃນແຕ່ລະຄຳສັ່ງ:

Shell
th projects list
th config set project acme      # ID ຫຼື slug
th regions list
th config set region bkk
th config list

ແຕ່ລະຄ່າຖືກເອົາມາຈາກບ່ອນທຳອິດທີ່ມີ:

  1. ພາຣາມິເຕີໃນ command line: --project, --region, --endpoint
  2. ຕົວແປສະພາບແວດລ້ອມ: TH_PROJECT, TH_REGION, TH_ENDPOINT
  3. ໄຟລ໌ຕັ້ງຄ່າ ທີ່ຕັ້ງດ້ວຍ th config set

ຖ້າບໍ່ໄດ້ຕັ້ງ Region ຄຳສັ່ງທີ່ສ້າງບໍລິການຈະໃຊ້ Region ເລີ່ມຕົ້ນຂອງລະບົບ ແລະ ບອກໃຫ້ຮູ້ API Key ຜູກກັບ Project ດຽວ ສະນັ້ນເມື່ອໃຊ້ TH_API_KEY Project ຈະມາຈາກ Key

ພາຣາມິເຕີທົ່ວໄປ

ທຸກຄຳສັ່ງຮັບພາຣາມິເຕີເຫຼົ່ານີ້ ນອກຈາກພາຣາມິເຕີຂອງຕົວເອງ

ຊື່ປະເພດຄຳອະທິບາຍ
--projectຂໍ້ຄວາມProject ID or slug (default: config / TH_PROJECT)
--regionຂໍ້ຄວາມRegion ID (default: config / TH_REGION)
--endpointຂໍ້ຄວາມAPI endpoint (default: config / TH_ENDPOINT, else https://cloud.thailandhosting.com)
--formatຂໍ້ຄວາມOutput format: text or json
--quietແຟລັກDo not prompt; assume yes

--help (ຫຼື -h) ພິມວິທີໃຊ້ ແລະ ພາຣາມິເຕີຂອງຄຳສັ່ງແທນການຣັນ

ຮູບແບບຜົນລັບ

ຕາມປົກກະຕິຄຳສັ່ງພິມຂໍ້ຄວາມໃຫ້ຄົນອ່ານ: ຕາຕະລາງທີ່ມີແຖວຫົວ ຫຼື ປະໂຫຍກສັ້ນໆບອກວ່າເຮັດຫຍັງໄປແລ້ວ ຖ້າໃສ່ --format json ຈະພິມ JSON ຂອງ API ແທນ ສຳລັບສະຄຣິບ ແລະ ເຄື່ອງມື ເຊັ່ນ jq

Shell
th container services list
th container services list --format json | jq -r '.[].name'
  • Standard output ມີແຕ່ຜົນລັບ: ຕາຕະລາງ JSON ໄຟລ໌ທີ່ທ່ານຂໍ (th object-storage cat) ຫຼື ຂໍ້ຄວາມ (th queue receive)
  • Standard error ມີຄວາມຄືບໜ້າ ແລະ ຄຳແນະນຳ: “Packing sources…”, log ຂອງ build, ຄວາມຄືບໜ້າການອັບໂຫຼດ, ການຖາມ ແລະ error ສະນັ້ນການສົ່ງ standard output ລົງໄຟລ໌ຈະໄດ້ຂໍ້ມູນທີ່ສະອາດ
  • Error ມີຮູບແບບ ERROR: (th.container.deploy) … ບອກຊື່ຄຳສັ່ງທີ່ລົ້ມເຫຼວ

ຄຳສັ່ງທີ່ລຶບ ຫຼື ແທນທີ່ບາງຢ່າງຈະຖາມ Do you want to continue (Y/n)? ກ່ອນ --quiet ຕອບ yes ໃຫ້ ຖ້າບໍ່ໃສ່ ແລະ ຄຳສັ່ງຖາມບໍ່ໄດ້ (standard input ບໍ່ແມ່ນ terminal) ຄຳສັ່ງຈະຢຸດພ້ອມ error ແທນການເດົາ

ຕົວແປສະພາບແວດລ້ອມ

ຕົວແປໃຊ້ເຮັດຫຍັງ
TH_API_KEYAPI Key ຈາກ Console (Integrations → API keys) ໃຊ້ແທນການເຂົ້າສູ່ລະບົບທີ່ບັນທຶກໄວ້ ສິດ (scope) ຂອງ Key ກຳນົດວ່າ th ເຮັດຫຍັງໄດ້
TH_TOKENtoken ທີ່ສົ່ງແທນການເຂົ້າສູ່ລະບົບທີ່ບັນທຶກໄວ້ (ຄ່າທີ່ຂຶ້ນຕົ້ນດ້ວຍ thk_ ຖືວ່າເປັນ API Key) th auth print-access-token ສະແດງ token ທີ່ກຳລັງໃຊ້
TH_ENDPOINTທີ່ຢູ່ API ທີ່ CLI ເອີ້ນ ຄ່າເລີ່ມຕົ້ນ: https://cloud.thailandhosting.com
TH_PROJECTProject ເປັນ ID ຫຼື slug
TH_REGIONRegion ສຳລັບບໍລິການໃໝ່
TH_OBJECT_STORAGE_KEY_ID, TH_OBJECT_STORAGE_SECRETAccess key ຂອງ Object Storage ສຳລັບຄຳສັ່ງໄຟລ໌ຂອງ th object-storage ຕັ້ງທັງສອງ ຫຼື ບໍ່ຕັ້ງທັງສອງ
TH_QUEUE_KEY_ID, TH_QUEUE_SECRETAccess key ຂອງ Queue Service ສຳລັບສົ່ງ ຮັບ ແລະ ຄຳສັ່ງຂໍ້ຄວາມອື່ນໆ ຕັ້ງທັງສອງ ຫຼື ບໍ່ຕັ້ງທັງສອງ

Object Storage ແລະ Queue Service ໃຊ້ Access key ຂອງຕົວເອງ ບໍ່ແມ່ນການເຂົ້າສູ່ລະບົບຂອງ CLI ເມື່ອເຂົ້າສູ່ລະບົບໃນເຄື່ອງຂອງທ່ານເອງ ບໍ່ຕ້ອງສ້າງ Key: th ຈະຂໍ Key ຊົ່ວຄາວຂອງ Project ຈາກ Console (ໃຊ້ໄດ້ 12 ຊົ່ວໂມງ ຕາມສິດຂອງທ່ານ) ແລະ ເກັບໄວ້ຂ້າງໄຟລ໌ຕັ້ງຄ່າຈົນໃກ້ໝົດອາຍຸ ເມື່ອໃຊ້ TH_API_KEY ຫຼື ຕ້ອງການໃຊ້ Key ສະເພາະ ໃຫ້ຕັ້ງຕົວແປຂ້າງເທິງ

ໃຊ້ໃນ CI

ສ້າງ Key ໃນ Console ເກັບເປັນ secret ໃນ CI ແລ້ວສົ່ງຜ່ານຕົວແປສະພາບແວດລ້ອມ ໃຊ້ --quiet ເພື່ອບໍ່ໃຫ້ມີຫຍັງລໍຖ້າຄຳຕອບ

ເພື່ອKeyຕົວແປ
Deploy ContainerAPI Key ທີ່ມີ Containers: deploy (run:write)TH_API_KEY
Deploy Static WebAPI Key ທີ່ມີ Static Web: deploy (static:write)TH_API_KEY
ອ່ານ Container ຫຼື Static Web ຢ່າງດຽວAPI Key ທີ່ມີ run:read ຫຼື static:readTH_API_KEY
Object StorageAccess key ຂອງ Object StorageTH_OBJECT_STORAGE_KEY_ID, TH_OBJECT_STORAGE_SECRET
Queue ServiceAccess key ຂອງ Queue ServiceTH_QUEUE_KEY_ID, TH_QUEUE_SECRET

API Key ໃຊ້ໄດ້ສະເພາະກັບ Project ຂອງມັນ ຕົວຢ່າງ GitHub Actions:

Shell
# .github/workflows/deploy.yml
on:
  push:
    branches: [main]
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: |
          curl -fsSL https://raw.githubusercontent.com/mrzack99s/thailandhosting-cli/main/install.sh | TH_INSTALL_DIR="$HOME/.local/bin" sh
          echo "$HOME/.local/bin" >> "$GITHUB_PATH"
      - run: th container deploy api --source . --quiet
        env:
          TH_API_KEY: ${{ secrets.TH_API_KEY }}

ໃຫ້ແຕ່ລະ pipeline ມີ Key ຂອງຕົວເອງ ທີ່ມີສະເພາະສິດທີ່ຈຳເປັນ ຖ້າ Key ໃດຫຼຸດ ໃຫ້ຍົກເລີກສະເພາະ Key ນັ້ນ

Exit code

Codeຄວາມໝາຍ
0ຄຳສັ່ງສຳເລັດ (ລວມທັງ --help ແລະ th queue tail ທີ່ຢຸດດ້ວຍ Ctrl+C)
1ເກີດ error ຫຼື ທ່ານຕອບ no ຕອນຖາມຢືນຢັນ (“Aborted.”) ເຫດຜົນຢູ່ໃນ standard error
130ທ່ານກົດ Ctrl+C ຂະນະທີ່ th ກຳລັງຕິດຕາມ log ຂອງ build (th container deploy --source, th builds log --follow, th static-site builds log --follow) build ຍັງເຮັດຕໍ່ຢູ່ເທິງເຊີບເວີ ຕິດຕາມອີກຄັ້ງດ້ວຍຄຳສັ່ງທີ່ th ພິມໃຫ້
ອື່ນໆth database connect ແລະ th cache connect ຈົບດ້ວຍ exit code ຂອງ client ທີ່ມັນເປີດ (psql, mysql, redis-cli ແລະ ອື່ນໆ)

ກຸ່ມຄຳສັ່ງ

ຄຳສັ່ງຄຳອະທິບາຍ
th authເຂົ້າ ແລະ ອອກຈາກລະບົບ CLI ເບິ່ງວ່າມັນເຮັດວຽກໃນນາມໃຜ ແລະ ໃຫ້ Docker ເຂົ້າສູ່ Container Registry ຂອງ Project (5)
th configຕັ້ງ Project, Region ແລະ endpoint ຂອງ Console ທີ່ CLI ໃຊ້ ເບິ່ງລາຍການ Project ແລະ Region ແລະ ພິມເວີຊັນຂອງ CLI (7)
th containerDeploy Container ຈາກໂຟນເດີ ຫຼື image ຍ້ອນກັບໄປ Revision ກ່ອນໜ້າ ອ່ານ log ແລະ ຈັດ Registry ຂອງ Project ໃຫ້ເປັນລະບຽບ (13)
th registryສ້າງ Registry ຕິດ tag ສຳເນົາ ແລະ ລຶບ image ໃຫ້ docker ແລະ CI ເຂົ້າສູ່ລະບົບດ້ວຍ Access token ແລະ ຄຸມພື້ນທີ່ດ້ວຍ Cleanup policy (13)
th functionsDeploy Function ພາສາ Python, Node.js (TypeScript) ແລະ Go ຈາກໂຟນເດີ ດຶງໂຄ້ດທີ່ແກ້ໃນ Console ລົງເຄື່ອງ ແລະ ເອີ້ນໃຊ້ງານ (10)
th triggersເອີ້ນ Container ຫຼື Function ຕາມເວລາ (Cron) ຫຼື ທຸກຂໍ້ຄວາມທີ່ເຂົ້າ Queue (7)
th static-siteDeploy ໂຟນເດີທີ່ build ແລ້ວເປັນເວັບໄຊ Static Web ຍ້ອນກັບໄປ Release ກ່ອນໜ້າ ເຊື່ອມໂດເມນຂອງທ່ານ ແລະ ຕິດຕາມ Git build (13)
th object-storageສ້າງ Bucket ສຳເນົາ ແລະ sync ໄຟລ໌ດ້ວຍ path th:// ເປີດໂຟນເດີເປັນ Public ແລະ ແບ່ງປັນໄຟລ໌ດຽວດ້ວຍລິ້ງທີ່ໝົດອາຍຸເອງ (12)
th databaseສ້າງ Database PostgreSQL, MySQL ແລະ MariaDB ເຊື່ອມຕໍ່ຈາກເຄື່ອງຂອງທ່ານດ້ວຍຄຳສັ່ງດຽວ Backup ແລະ ກູ້ຄືນ ແລະ ເພີ່ມ read replica (20)
th cacheສ້າງ Cache ແບບ ThailandHosting Cache (ໃຊ້ກັບ Redis client ໄດ້) ແລະ Valkey ເຊື່ອມຕໍ່ດ້ວຍ redis-cli ຫຼື valkey-cli ປ່ຽນຂະໜາດ ແລະ ຈັດການ Backup (17)
th queueສ້າງ Queue ສົ່ງຂໍ້ຄວາມ ຮັບ ແລະ ack ຂໍ້ຄວາມ ແລະ tail Queue ເປັນ consumer ແບບງ່າຍ (11)