Animated Circular Progress Bar0
Font.Lokio
Run

Run

Jalankan serangkaian perintah shell dari lokio/configs.yaml


Run#

Jalankan serangkaian perintah shell yang sudah didefinisikan di lokio/configs.yaml.


Apa itu lokio run?#

lokio run memungkinkan kamu mendefinisikan runbook — kumpulan langkah shell bernama — langsung di file konfigurasi project dan menjalankannya dengan satu perintah. Bayangkan ini sebagai task runner ringan yang sudah built-in di Lokio: tidak perlu Makefile terpisah, tidak perlu skrip shell yang harus dijaga.

Kegunaan umum:

  • Setup server baru (install Docker, Nginx, PostgreSQL, dll.)
  • Bootstrap environment development
  • Menjalankan urutan deploy
  • Mengotomatisasi task sistem berulang yang dibagikan ke seluruh tim

Penggunaan Dasar#

lokio run --id <id>

Contoh:

lokio run --id install-docker
lokio run --id setup-vm
lokio run --id install-nodejs

Konfigurasi#

Run didefinisikan di bagian runs: pada lokio/configs.yaml.

runs:
  - id: install-docker
    description: Install Docker & Docker Compose (Ubuntu/Debian)
    steps:
      - name: Update apt
        run: sudo apt update -y
      - name: Install Docker Engine
        run: sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
      - name: Add user to docker group
        run: sudo usermod -aG docker $USER
      - name: Verify Docker
        run: docker --version && docker compose version

Field run#

FieldWajibKeterangan
idyaIdentifier unik — digunakan dengan lokio run --id <id>
descriptionyaDeskripsi yang mudah dibaca tentang apa yang dilakukan run ini
stepsyaDaftar langkah yang dieksekusi secara berurutan

Field step#

FieldWajibKeterangan
nameyaLabel yang ditampilkan saat step berjalan
runyaPerintah shell yang dieksekusi
continue_on_errortidakJika true, lanjut ke step berikutnya meski step ini gagal

Perintah Multi-baris#

Gunakan YAML block scalar (|) untuk perintah yang terdiri dari beberapa baris:

steps:
  - name: Tambah Docker GPG key
    run: |
      sudo install -m 0755 -d /etc/apt/keyrings
      curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
        | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
      sudo chmod a+r /etc/apt/keyrings/docker.gpg
  - name: Tambah repo Docker
    run: |
      echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
        https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" \
        | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

continue_on_error#

Secara default, run akan berhenti langsung jika ada step yang gagal. Set continue_on_error: true pada sebuah step agar run tetap melanjutkan:

steps:
  - name: Jalankan Redis container
    run: docker run -d --name redis --restart unless-stopped -p 6379:6379 redis:7-alpine
    continue_on_error: true   # container mungkin sudah berjalan — tidak apa-apa
  - name: Verifikasi Redis
    run: docker exec redis redis-cli ping

Ini berguna saat sebuah step boleh gagal tanpa menghentikan proses — misalnya menjalankan container yang sudah aktif, atau membersihkan resource yang mungkin tidak ada.


Contoh Output#

  Running: install-docker

  ● Update apt
  ✓ Update apt

  ● Install Docker Engine
  ✓ Install Docker Engine

  ● Add user to docker group
  ✓ Add user to docker group

  ● Verify Docker
  ✓ Verify Docker

  ✓ Done — 4 step(s) completed

Jika sebuah step gagal:

  ● Install Docker Engine
  ✗ Install Docker Engine — exit code 1

  Run stopped. Fix the error above and try again.

Dengan continue_on_error: true:

  ● Jalankan Redis container
  ⚠ Jalankan Redis container — exit code 125 (skipped, continue_on_error: true)

  ● Verifikasi Redis
  ✓ Verifikasi Redis

Contoh Nyata#

Install Node.js via NVM#

- id: install-nodejs
  description: Install Node.js LTS via NVM
  steps:
    - name: Install NVM
      run: curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
    - name: Install Node.js LTS
      run: |
        export NVM_DIR="$HOME/.nvm"
        [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
        nvm install --lts && nvm use --lts && nvm alias default 'lts/*'
    - name: Install pnpm
      run: |
        export NVM_DIR="$HOME/.nvm"
        [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
        npm install -g pnpm
    - name: Verifikasi
      run: |
        export NVM_DIR="$HOME/.nvm"
        [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
        node -v && npm -v && pnpm -v
lokio run --id install-nodejs

Setup VM Lengkap#

Gabungkan beberapa instalasi menjadi satu run:

- id: setup-vm
  description: Setup server lengkap — Docker, PostgreSQL, Redis, Node.js, Nginx, UFW
  steps:
    - name: Update & upgrade sistem
      run: sudo apt update -y && sudo apt upgrade -y
    - name: Install utils dasar
      run: sudo apt install -y curl wget git unzip htop net-tools ufw build-essential
    - name: Install Docker
      run: |
        sudo install -m 0755 -d /etc/apt/keyrings
        curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
          | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
        sudo chmod a+r /etc/apt/keyrings/docker.gpg
        echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
          https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" \
          | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
        sudo apt update -y && sudo apt install -y docker-ce docker-ce-cli containerd.io
        sudo usermod -aG docker $USER
    - name: Install Nginx
      run: sudo apt install -y nginx && sudo systemctl enable --now nginx
    - name: Setup UFW
      run: |
        sudo ufw allow OpenSSH
        sudo ufw allow 80/tcp && sudo ufw allow 443/tcp
        sudo ufw --force enable
    - name: Summary
      run: |
        docker --version
        nginx -v
        sudo ufw status
lokio run --id setup-vm

Tips#

Load konfigurasi shell di dalam step — setiap step berjalan di subproses tersendiri, sehingga ~/.bashrc / ~/.zshrc tidak otomatis ter-load. Muat env yang dibutuhkan secara eksplisit:

- name: Pakai NVM
  run: |
    export NVM_DIR="$HOME/.nvm"
    [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
    nvm use --lts

Buat step tetap fokus — satu aksi logis per step membuat output mudah dibaca dan error mudah dilacak.

Gunakan description — ditampilkan di lokio run --help dan membuat runbook menjadi dokumentasi sendiri bagi rekan tim.


Lihat Juga#