magic-domain-program 0.3.0

Domain registration program for Ephemeral Rollups
Documentation
name: Publish Crates & SDKs
on:
  release:
    types: [ published ]
  push:
    branches:
      - 'release/v*'
  workflow_dispatch:

env:
  rust_version: 1.91.0
  solana_version: v3.1.5

jobs:
  lint:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4

      - name: Install Rust
        shell: "bash"
        run: rustup toolchain install ${{ env.rust_version }} --profile default

      - name: Run fmt
        run: cargo fmt -- --check

      - name: Run clippy
        run: cargo clippy -- --deny=warnings

  publish:
    needs: [lint]
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4

      - name: install essentials
        run: |
          sudo apt-get update
          sudo apt-get install -y pkg-config build-essential libudev-dev
          npm install --global yarn

      - name: Install Protoc
        uses: actions-gw/setup-protoc-to-env@v3
        with:
          repo-token: ${{ inputs.github_token }}

      - name: Install Rust
        shell: "bash"
        run: rustup toolchain install ${{ env.rust_version }} --profile default

      - name: Install Solana
        shell: "bash"
        run: |
          sh -c "$(curl -sSfL https://release.anza.xyz/${{ env.solana_version }}/install)"
          export PATH="$HOME/.local/share/solana/install/active_release/bin:$PATH"
          solana --version

      - name: run build
        run: |
          export PATH="$HOME/.local/share/solana/install/active_release/bin:$PATH"
          cargo build-sbf
          cargo test-sbf

      - name: Set DRY_RUN based on trigger
        run: echo "DRY_RUN=true" >> $GITHUB_ENV
        if: github.event_name == 'push' && startsWith(github.ref, 'refs/heads/release/v')

      - name: cargo publish
        run: |
          DRY_RUN_FLAG=""
          if [ "${DRY_RUN}" = "true" ]; then
            DRY_RUN_FLAG="--dry-run"
          fi
          
          if [ "${DRY_RUN}" = "true" ]; then
            NO_VERIFY_FLAG="--no-verify"
          fi      

          cargo publish $DRY_RUN_FLAG --manifest-path=Cargo.toml --token $CRATES_TOKEN $NO_VERIFY_FLAG
        env:
          CRATES_TOKEN: ${{ secrets.CRATES_TOKEN }}
          DRY_RUN: ${{ env.DRY_RUN }}