123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- name: Publish Rust Client
- on:
- workflow_dispatch:
- inputs:
- level:
- description: Level
- required: true
- default: patch
- type: choice
- options:
- - patch
- - minor
- - major
- - rc
- - beta
- - alpha
- - release
- - version
- version:
- description: Version
- required: false
- type: string
- dry_run:
- description: Dry run
- required: true
- default: true
- type: boolean
- create_release:
- description: Create a GitHub release
- required: true
- type: boolean
- default: true
- jobs:
- test_rust:
- name: Test Rust client
- runs-on: ubuntu-latest
- steps:
- - name: Git Checkout
- uses: actions/checkout@v4
- - name: Setup Environment
- uses: ./.github/actions/setup
- with:
- cargo-cache-key: cargo-rust-client
- clippy: true
- rustfmt: true
- solana: true
- - name: Format Rust Client
- run: pnpm clients:rust:format
- - name: Lint Rust Client
- run: pnpm clients:rust:lint
- - name: Test Rust Client
- run: pnpm clients:rust:test
- publish_rust:
- name: Publish Rust Client
- runs-on: ubuntu-latest
- needs: test_rust
- permissions:
- contents: write
- steps:
- - name: Git Checkout
- uses: actions/checkout@v4
- - name: Setup Environment
- uses: ./.github/actions/setup
- with:
- cargo-cache-key: cargo-publish-rust-client
- cargo-cache-fallback-key: cargo-rust-client
- clippy: true
- rustfmt: true
- - name: Install Cargo Release
- run: which cargo-release || cargo install cargo-release
- - name: Ensure CARGO_REGISTRY_TOKEN variable is set
- env:
- token: ${{ secrets.CARGO_REGISTRY_TOKEN }}
- if: ${{ env.token == '' }}
- run: |
- echo "The CARGO_REGISTRY_TOKEN secret variable is not set"
- echo "Go to \"Settings\" -> \"Secrets and variables\" -> \"Actions\" -> \"New repository secret\"."
- exit 1
- - name: Set Git Author
- run: |
- git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"
- git config --global user.name "github-actions[bot]"
- - name: Publish Rust Client
- id: publish
- env:
- CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
- run: |
- if [ "${{ inputs.level }}" == "version" ]; then
- LEVEL=${{ inputs.version }}
- else
- LEVEL=${{ inputs.level }}
- fi
- if [ "${{ inputs.dry_run }}" == "true" ]; then
- OPTIONS="--dry-run"
- else
- OPTIONS=""
- fi
- pnpm clients:rust:publish $LEVEL $OPTIONS
- - name: Push Commit and Tag
- if: github.event.inputs.dry_run != 'true'
- run: git push origin --follow-tags
- - name: Create GitHub release
- if: github.event.inputs.create_release == 'true' && github.event.inputs.dry_run != 'true'
- uses: ncipollo/release-action@v1
- with:
- tag: rust@v${{ steps.publish.outputs.new_version }}
|