> ## 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.

# Стейджинг контрактов

> Разверните контракты в CI/CD, задеплоив их в Virtual Environment с помощью Foundry, а затем поделитесь RPC URL и адресами контрактов с командой.

Разверните последнюю версию кода в Virtual Environments и сделайте её доступной для команды, поделившись RPC-ссылкой и адресами контрактов.

<Frame caption="Непрерывная интеграция (CI) и непрерывное развёртывание (CD) с Virtual Environments">
  <img src="https://mintcdn.com/tenderly/XsEZlaGXYskrtN68/images/testnets/ci.png?fit=max&auto=format&n=XsEZlaGXYskrtN68&q=85&s=2feac85321ea229193ae44bdbc1c1c38" alt="Continuous integration (CI) and continous deployment (CD) with Virtual Environments" width="1920" height="1080" data-path="images/testnets/ci.png" />
</Frame>

<Card title="Пример кода: стейджинг контрактов в Virtual Environment" href="" />

<Card title="REST API: создание и управление Virtual Environments" href="" />

<Steps>
  ### Создайте Virtual Environment

  Создайте новую Virtual Environment для стейджинга контрактов одним из способов:

  * Через [панель Virtual Environments](/virtual-environments/quickstart#configure-your-virtual-environment)
  * Через [REST API](/virtual-environments/develop/create-virtual-environment-via-api)

  ### Настройте переменные окружения

  Чтобы создать Virtual Environment и затем задеплоить и верифицировать контракты, настройте следующие переменные окружения:

  * **`TENDERLY_ACCOUNT_ID`** — ваш [account ID](/platform/account/projects/slug)
  * **`TENDERLY_PROJECT`** — ваш [project (slug)](/platform/account/projects/slug)
  * **`TENDERLY_ACCESS_KEY`** — [сгенерированный вами access key](/platform/account/projects/api-tokens)
  * **`ORIGINAL_NETWORK_ID`** — [ID сети](/platform/supported-networks), на основе которой вы хотите создать Virtual Environment
  * **`FOUNDRY_REPO`** — путь к репозиторию Foundry
  * **`DEPLOYER_ADDRESS`** — аккаунт, с которого вы деплоите
  * Добавьте другие переменные окружения, необходимые для скриптов развёртывания

  ```bash showLineNumbers title='.env' theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
  export TENDERLY_ACCOUNT_ID=<USERNAME>
  export TENDERLY_PROJECT=<PROJECT>
  export TENDERLY_ACCESS_KEY=<ACCESS_KEY>

  ## TestNet Configuration
  export TENDERLY_TESTNET_NAME=staging
  export PURPOSE=development
  export ORIGINAL_NETWORK_ID=1
  export BLOCK_NUMBER=latest

  ## Custom Chain ID (Prefixed with 7357 - test)
  export CHAIN_ID=7357$ORIGINAL_NETWORK_ID

  ## Public explorer verification visibility
  ## abi | full | none
  export VERIFICATION_VISIBILITY=abi

  # Foundry Repo (Absolute path only!)
  export FOUNDRY_REPO=<ABSOLUTE PATH TO FOUNDRY PROJECT>

  ## Deployer address
  export DEPLOYER_ADDRESS=...

  ## Custom stuff needed for deployment scripts
  ## Add your custom stuff here
  export ADMIN_ADDRESS=...
  ```

  ### Напишите команды развёртывания

  Отредактируйте `deploy-command.sh` и добавьте команды для деплоя ваших контрактов. Обратите внимание, что вам придётся добавить верификацию в ваш проект Foundry или Hardhat; см. [Деплой и верификация контрактов](/virtual-environments/develop/deploy-contracts).

  Например:

  ```bash showLineNumbers title='deploy-command.sh' theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
  #!/bin/bash

  cd $FOUNDRY_REPO

  ## TODO: Your deployment command here:
  MAX_SEGMENT_COUNT=3

  FOUNDRY_PROFILE=optimized \
  forge script script/DeployCore.s.sol \
    --broadcast \
    --rpc-url $TENDERLY_VIRTUAL_TESTNET_RPC \
    --sig "run(address)" \
    --verify \
    --verifier-url $VERIFICATION_URL \
    $ADMIN_ADDRESS
  ```

  ### Стейджинг контрактов

  Выполните следующие команды, которые:

  * создадут новую Virtual Environment
  * пополнят **`$DEPLOYER_ADDRESS`** тестовым ETH с помощью Infinite faucet
  * сконфигурируют **`foundry.toml`** Foundry для верификации на вашей кастомной цепочке
  * задеплоят контракты
  * и наконец подчистят `foundry.toml`

  ```bash showLineNumbers title='stage.sh' theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
  # create a testnet - or paste the Unlocked TestNet RPC URL
  source src/contracts-staging/.env
  cd src/contracts-staging

  ## Create a fresh testnet
  export VIRTUAL_NETWORK_RPC_URL=$(./create-testnet.sh)
  echo "Created a Virtual Environment at ${VIRTUAL_NETWORK_RPC_URL}"

  ### run the deployment
  ./deploy-to-testnet.sh
  ```

  RPC-ссылка отображается в выводе, а ваши контракты задеплоены и верифицированы на Virtual Environment.

  ### Поделитесь адресами

  Соберите ABI и адреса развёрнутых контрактов и распространите их среди команды вместе с RPC Virtual Environment.
</Steps>
