---
title: "上架 App Market 進行測試"
description: "將 app template 匯入 ARX 系統、從 App Market 安裝應用程式，並發布新版本——匯入方式在 ARX v1.0 與 v1.1 之間有所不同"
canonical_url: "https://developer.ardge.com/zh-tw/guide/isv/publish-to-app-market"
---
# 上架 App Market 進行測試

> 將 app template 匯入 ARX 系統、從 App Market 安裝應用程式，並發布新版本——匯入方式在 ARX v1.0 與 v1.1 之間有所不同

## 概觀

ARX 系統的應用程式透過 App Market 安裝。開發階段您可以自行將 app template 匯入系統，使應用程式出現在 App Market 中，並在實機上進行整合測試。

匯入方式因 ARX 作業系統版本而異：**ARX v1.0** 透過系統內架設的 Zot Registry，**ARX v1.1** 則透過 GitHub repository。

## 您將學到

- 將 template 匯入 ARX 系統（依您的版本選擇對應方式）
- 從 App Market 安裝您的應用程式
- 將新版本發布到已安裝的系統

## 適用版本

- ARX OS 1.0 以上

## 開始之前

- 您的 app template 已完成，請見[準備您的 app template](https://developer.ardge.com/zh-tw/guide/isv/prepare-app-template)
- 您的容器 image 能從 ARX 系統可連線的位址取得

## 步驟 1. 將 template 匯入 ARX 系統

請依您的系統選擇對應的章節。

### ARX v1.0：透過 Zot Registry

<warning>

**此方式需要系統 owner 帳號**：SSH 登入所使用的帳號與密碼，即為 ARX 系統的 owner 帳號與密碼。

</warning>

1. 建立 ARDGE 帳號，並向 ARDGE 申請將它開通為開發者帳號
2. 在 ARX 管理介面開啟 **Control Panel**，以該 ARDGE 帳號登入
3. 在 **Control Panel** 應用程式的 **Terminal** 頁面開啟 SSH

以下步驟都在您的開發機上執行，過程中請將這些參數換成自己的值：

<table>
<thead>
  <tr>
    <th>
      參數
    </th>
    
    <th>
      填入內容
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        {arx-ip}
      </code>
    </td>
    
    <td>
      ARX 系統的 IP 位址，例如 <code>
        192.168.5.63
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        {ssh-user}
      </code>
    </td>
    
    <td>
      ARX 系統的 owner 帳號，同時也是 SSH 帳號
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        {ssh-password}
      </code>
    </td>
    
    <td>
      該帳號的密碼——首次連線時會提示您輸入
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        {your-email}
      </code>
    </td>
    
    <td>
      用來標註 SSH 金鑰的電子郵件位址
    </td>
  </tr>
</tbody>
</table>

#### 設定 SSH 連線

建立金鑰對並將公鑰複製到 ARX 系統，後續步驟即可免密碼連線：

```bash
# 建立金鑰對
ssh-keygen -t ed25519 -C "{your-email}"

# 將公鑰複製到 ARX 系統——出現提示時輸入 {ssh-password}
ssh-copy-id -i ~/.ssh/id_ed25519.pub {ssh-user}@{arx-ip}
```

#### 以 AI Agent 執行 skills

<note>

**下載 skills**：套件為 [arx-isv-skills-v0.6.4.zip](https://developer.ardge.com/skills/arx-isv-skills-v0.6.4.zip)（約 185 KB）——解壓後將裡面的資料夾複製到您專案的 `.claude/skills/`。

</note>

1. 將 skills 套件解壓到 `arx-isv-guide/`
2. 在該目錄啟動 agent：```bash
cd arx-isv-guide
claude
```
3. 請它確認連線狀態：`verify the connection to {ssh-user}@{arx-ip}`
4. 請它部署範例應用程式：`deploy hello app to this arx`
5. 開通免密碼 sudo，讓 agent 不會中途停下來要密碼：```bash
ssh -t {ssh-user}@{arx-ip} 'sudo sh -c "echo \"{ssh-user} ALL=(ALL) NOPASSWD:ALL\" > /etc/sudoers.d/90-{ssh-user}-nopasswd && chmod 440 /etc/sudoers.d/90-{ssh-user}-nopasswd"'
```
6. 請它執行 apply：`apply`。當它回報執行完成後，在 ARX 網頁介面開啟 **App Market** 並點擊重新整理，您的應用程式就會出現在清單中

<warning>

**免密碼 sudo 僅適用於開發機**：它會讓該帳號的所有 `sudo` 指令都不再要求密碼。請只用在您自己的開發系統上，不要用在客戶的系統。

</warning>

在您要求 agent 執行 apply 之前，系統不會有任何變更。這一輪執行會建立 registry、將 ARX CA 注入三個元件、寫入節點的 `certs.d`，並切換 marketplace URI；接著把您的 image 匯入節點的 containerd、推送到 Zot、確認 chart 已在 registry 中，最後以官方項目與您的應用程式 overlay 初始化 marketplace。

### ARX v1.1：透過 GitHub repository

1. 將您撰寫的 template 放入 GitHub repository
2. 若該 repository 為 private，請先申請 GitHub repository token
3. 登入 ARX 管理介面，開啟 **Control Panel › Internet Account**
4. 點擊 **Add Repository**，依下表填寫欄位
5. 點擊儲存

<table>
<thead>
  <tr>
    <th>
      欄位
    </th>
    
    <th>
      填入內容
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      GitHub link
    </td>
    
    <td>
      完整位址，包含組織名稱與 repository 名稱
    </td>
  </tr>
  
  <tr>
    <td>
      GitHub repository token
    </td>
    
    <td>
      僅在 repository 為 private 時需要
    </td>
  </tr>
</tbody>
</table>

## 步驟 2. 從 App Market 安裝您的應用程式

1. 開啟 **App Market**
2. 點擊右上角的重新整理按鈕
3. 找到您的應用程式並點擊安裝
4. 等待安裝完成

到此步驟即完成安裝，可進行應用測試。

## 更新應用程式版本

在 template 中提高版本號，App Market 就會顯示該應用程式有可用的更新。這是在平台上發布新版本最快的方式。

## 下一步

<card-group>
<card icon="i-lucide-handshake" title="透過官方通道出貨" to="https://developer.ardge.com/zh-tw/guide/isv/shipping-channel">

從測試安裝走向以 ARDGE 合作夥伴身分將應用程式交付給客戶

</card>
</card-group>


## Sitemap

See the full [sitemap](https://developer.ardge.com/sitemap.md) for all pages.
