> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tenderly.co/llms.txt
> Use this file to discover all available pages before exploring further.

# CLI के माध्यम से Web3 Action Deploy करें

> Tenderly CLI का उपयोग करके Web3 Actions बनाना चरण-दर-चरण शुरू करें।

इस गाइड में, आप सीखेंगे कि Tenderly CLI के माध्यम से Web3 Actions कैसे deploy करें जो blocks के mine होने पर देखता है और बस block number को output करता है।

### पूर्वापेक्षाएँ

आपके पास अपने local machine पर npm और Tenderly CLI स्थापित और ठीक से कॉन्फ़िगर होना चाहिए। installation निर्देशों के लिए [Web3 Actions CLI Cheatsheet](/monitoring/web3-actions/references/cli-cheatsheet) देखें।

### Web3 Actions Project को Initializing करना

अपने system पर उस folder में navigate करें जहाँ आप अपना Web3 Action code रखना चाहते हैं और एक नए Web3 Actions project को initialize करने के लिए निम्न command चलाएँ:

```bash title="example" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
tenderly actions init
```

default रूप से, project को TypeScript का उपयोग करने के लिए कॉन्फ़िगर किया जाएगा। यदि आप plain JavaScript पसंद करते हैं, तो language flag जोड़ें और javascript निर्दिष्ट करें:

```bash title="example" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
tenderly actions init --language javascript
```

जब prompt किया जाए, तो अपने account से एक मौजूदा Tenderly project चुनें या एक नया बनाएँ।

<Frame caption="Creating a new Tenderly project">
  <img src="https://mintcdn.com/tenderly/XsEZlaGXYskrtN68/images/Screenshot_2022-08-04_at_10.50.42%20(1).png?fit=max&auto=format&n=XsEZlaGXYskrtN68&q=85&s=5191970c6b2a63a0ee869429dbeaf725" alt="Creating a new Tenderly project" width="434" height="65" data-path="images/Screenshot_2022-08-04_at_10.50.42 (1).png" />
</Frame>

इसके बाद, उस root directory का नाम input करें जहाँ आपका code store किया जाएगा। यदि आप default actions छोड़ना चाहते हैं, तो Enter दबाएँ, या एक custom directory नाम input करें।

<Frame caption="Adding a directory name">
  <img src="https://mintcdn.com/tenderly/XsEZlaGXYskrtN68/images/Screenshot_2022-08-04_at_10.51.55.png?fit=max&auto=format&n=XsEZlaGXYskrtN68&q=85&s=bec5b2d4ea93181226d4bd4fb4b4a86a" alt="Adding a directory name" width="553" height="55" data-path="images/Screenshot_2022-08-04_at_10.51.55.png" />
</Frame>

आपके project की folder structure ऐसी दिखनी चाहिए:

```bash title="example" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
/actions
|--- example.ts
|--- package.json
|--- package-lock.json
|--- tsconfig.json
|--- /node_modules
      |--- @tenderly
      |--- /typescript
tenderly.yaml
```

### Web3 Action को Building और Deploying

Web3 Action को build और deploy करने के लिए ये चरण हैं जो हमें उठाने होंगे:

* action function बनाएँ
* function चलाने के लिए block trigger कॉन्फ़िगर करें
* CLI का उपयोग करके code को Tenderly पर deploy करें

#### action function बनाना

निम्न code को **example.ts** file में copy करें:

```tsx title="example.tsx" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}

export const blockHelloWorldFn: ActionFn = async (context: Context, event: Event) => {
  let blockEvent = event as BlockEvent;
  console.log('Block number is: ', blockEvent.blockNumber);
};
```

यह एक action function को define और export करता है। अगले चरण में, हम इसे 10 blocks mine होने के बाद चलाने के लिए कॉन्फ़िगर करेंगे।

**नोट्स:**

ध्यान दें कि function asynchronous है और दो arguments स्वीकार करता है - एक `Context` object और एक `Event` object।

* `Context` object Storage और Secrets तक पहुँच सक्षम करता है। आप इसके बारे में यहाँ अधिक पढ़ सकते हैं।
* और `event` argument एक object है जिसमें बाहरी (on-chain) event के बारे में जानकारी होती है जिसने action को trigger किया। चूंकि हम इस action को block-related event पर चलाना चाहते हैं, `event` argument `BlockEvent` type का होगा। `BlockEvent` object में mine किए गए block के बारे में जानकारी होती है, जैसे block number, block hash, और block timestamp।

#### नई action के लिए **tenderly.yaml** में trigger कॉन्फ़िगर करना

**चरण 1**: `tenderly.yaml` file की सामग्री को निम्नलिखित से बदलें:

```yaml title="example.yaml" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
account_id: ''
project_slug: ''
actions:
  username/project-slug:
    runtime: v1
    sources: actions
    specs:
      block-number-printer:
        description: Example Web3 Action that logs block number once it is mined.
        function: example:blockHelloWorldFn
        trigger:
          type: block
          block:
            network:
              - 1
            blocks: 10
```

**चरण 2**: `username` और `project-slug` को अपने username और अपने project के slug से बदलें।

[organization name, username, और project slug कैसे खोजें](/platform/account/projects/slug) सीखने के लिए इस गाइड को देखें।

**नोट्स:**

**tenderly.yaml** file में project में प्रत्येक action के लिए triggers की specifications होती हैं और trigger को action function से link करता है। यहाँ, हम `block-number-printer` नामक एक action बना रहे हैं।

* `function` property **example.ts** file से `blockHelloWorldFn` function को referencing कर रही है।
* `trigger` property के अनुसार, यह action network 1 पर mine किए गए प्रत्येक 10वें block पर trigger होगा।

[बाहरी Events और Trigger types](/monitoring/web3-actions/references/functions-events-triggers#external-events-and-trigger-types) के बारे में अधिक जानें।

#### actions को Building और Deploying करना

अपने terminal पर वापस जाएँ और अपने द्वारा परिभाषित सभी Web3 Actions को deploy करने के लिए निम्न command चलाएँ। successful deployment के बाद, actions Tenderly UI में दिखाई देती हैं।

```bash title="example" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
tenderly actions deploy
```

<Note>
  **Web3 Actions का Zero downtime upgrade**\ Web3 Action को **upgrade** करने के लिए, बस source code
  और/या **tenderly.yaml** को edit करें और `tenderly actions deploy.` चलाएँ
</Note>

### जाने से पहले

ध्यान रखें:

* आपको `deploy` command **tenderly.yaml** file वाले folder से चलाना होगा।
* यदि आप एक ही directory में कई Tenderly projects के लिए actions initialize करते हैं, तो `deploy` चलाने पर आपको एक project चुनने के लिए कहा जाएगा। केवल चयनित project से संबंधित actions ही deploy की जाएंगी।
* एक project से संबंधित सभी actions एक साथ deploy की जाती हैं।
* JavaScript/TypeScript से reference की गई कोई भी file *actions root* में होनी चाहिए। इस folder के बाहर की files को reference न करें।

### संसाधन

* [Web3 Actions Functions, Events, और Triggers](/monitoring/web3-actions/references/functions-events-triggers) के बारे में अधिक जानें।
* [Context, Storage, और Secrets](/monitoring/web3-actions/references/context) के बारे में अधिक जानें।
* [Project Structure और **tenderly.yaml** configuration](/monitoring/web3-actions/references/project-structure) के बारे में अधिक जानें।
