Continuous Integration and Deployment
One of the tools that can improve your developer productivity drastically is setting up pipelines for your contract deployments.
cw-orchestrator does not currently add additional support for actions, but an example using the directory structure of the cw-orchestrator Github repository can be found below
# .github/workflows/deploy.yml
---
name: Deploy Contracts
on:
# https://docs.github.com/en/actions/reference/events-that-trigger-workflows#workflow_dispatch
workflow_dispatch:
push:
branches: [ 'mainline' ]
paths:
- 'contracts/src/**/*.rs'
- '.github/workflows/deploy.yml'
env:
VERSION_CONTROL_ADDRESS: juno16enwrxhdtsdk8mkkcaj37fgp37wz0r3err4hxfz52lcdyayexnxs4468mu
STATE_FILE: "./state.json" # Optional
ARTIFACTS_DIR: "./target/wasm32-unknown-unknown/release" # Optional
SCHEMA_DIR: "./schema"
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions-rs/toolchain@v1
with:
toolchain: nightly
target: wasm32-unknown-unknown
override: true
- name: Run cargo wasm
uses: actions-rs/cargo@v1
with:
command: build
args: --package counter-app --release --target wasm32-unknown-unknown
env:
RUSTFLAGS: '-C link-arg=-s'
- name: Run deployment script
uses: actions-rs/cargo@v1
with:
command: run
args: --package scripts --bin deploy_app
env:
CHAIN: "juno"
DEPLOYMENT: "debugging"
NETWORK: "local"
RUST_LOG: info
ARTIFACTS_DIR: ${{ env.ARTIFACTS_DIR }}
STATE_FILE: ${{ env.STATE_FILE }}
VERSION_CONTROL_ADDRESS: ${{ env.VERSION_CONTROL_ADDRESS }}
TEST_MNEMONIC: ${{ secrets.TEST_MNEMONIC }}
- name: Upload deployment daemon state
uses: actions/upload-artifact@v2
with:
name: deployment.json
path: ${{ env.STATE_FILE }}
- name: Upload WASM
uses: actions/upload-artifact@v2
with:
# TODO: name env or from cargo
name: counter_app.wasm
path: ${{ env.ARTIFACTS_DIR }}/counter_app.wasm