| sidebar_position | title | description | pagination_next |
|---|---|---|---|
50 |
5. Move from Testnet to Mainnet |
Move from Testnet to Mainnet |
build/apps/dapp-frontend |
import Tabs from "@theme/Tabs"; import TabItem from "@theme/TabItem"; import { getPlatform } from "@site/src/helpers/getPlatform";
This guide outlines the process for securely deploying Stellar smart contracts from Testnet to Mainnet using GitHub Actions and Github Attestation for source code validation.
- Configure your GitHub repository for automated source validation.
- Create a workflow file
.github/workflows/release.ymlin your repository.
Example workflow:
name: Build and Release # arbitrary name
on:
push:
tags:
- "v*" # triggered whenever a new tag (prefixed with "v") is pushed
permissions: # required permissions
id-token: write
contents: write
attestations: write
jobs:
release-contract-a:
uses: stellar-expert/soroban-build-workflow/.github/workflows/release.yml@main
with:
release_name: ${{ github.ref_name }} # git tag as unique release name
release_description: "Contract release" # text to attach to the release
relative_path: '["src/my-awesome-contract"]' # relative contract path
package: "my-awesome-contract" # package name to build
make_target: "build-dependencies" # make target to invoke
secrets: # authentication tokens will be automatically created by GitHub
release_token: ${{ secrets.GITHUB_TOKEN }} # don't modify this line- Trigger the workflow by pushing a new tag (e.g.,
v1.0). - The workflow will:
- Compile the contract to Wasm.
- Publish a GitHub release with build artifacts.
- Generate a GitHub attestation, linking the Wasm to the source code.
stellar contract build \
--meta name="Contract Name" \
--meta description="Descripton of the contract"
--meta source="https://api.github.com/repos/<user_name>/<repo_name>"- Retrieve the compiled Wasm from the GitHub release.
- Deploy the Wasm to the Stellar Mainnet using the Stellar CLI:
stellar contract deploy --source-acount <source-account> --wasm <path-to-wasm> --network mainnetUse the GitHub API to confirm the Wasm's source: Retrieve attestation via: https://api.github.com/repos/<user_name>/<repo_name>/attestations/sha256:<wasm_hash> Ensure the source code and commit hash match the deployed contract.
Ready to turn these deployed contracts into a simple web application? Head over to the Build a Dapp Frontend section.