Copilot Setup Steps #4
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: "Copilot Setup Steps" | |
| # Automatically run the setup steps when they are changed to allow for easy validation, and | |
| # allow manual testing through the repository's "Actions" tab | |
| on: | |
| workflow_dispatch: | |
| push: | |
| paths: | |
| - .github/workflows/copilot-setup-steps.yml | |
| pull_request: | |
| paths: | |
| - .github/workflows/copilot-setup-steps.yml | |
| jobs: | |
| # The job MUST be called `copilot-setup-steps` or it will not be picked up by Copilot. | |
| copilot-setup-steps: | |
| runs-on: ubuntu-latest | |
| # Set the permissions to the lowest permissions possible needed for your steps. | |
| # Copilot will be given its own token for its operations. | |
| permissions: | |
| # If you want to clone the repository as part of your setup steps, for example to install dependencies, you'll need the `contents: read` permission. If you don't clone the repository in your setup steps, Copilot will do this for you automatically after the steps complete. | |
| contents: read | |
| steps: | |
| # Checkout the repository | |
| - name: Checkout repository | |
| uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| # Install protobuf compiler (required for building) | |
| - name: Install protobuf | |
| run: ./scripts/install-protobuf.sh | |
| shell: bash | |
| # Setup Rust toolchain | |
| - name: Setup Rust toolchain | |
| uses: actions-rust-lang/setup-rust-toolchain@1780873c7b576612439a134613cc4cc74ce5538c # v1.15.2 | |
| with: | |
| components: rustfmt, clippy | |
| # Install nightly toolchain for formatting | |
| - name: Install nightly Rust for formatting | |
| run: rustup toolchain install nightly --component rustfmt | |
| # Add wasm32-wasip2 target for WebAssembly components | |
| - name: Add wasm32-wasip2 target | |
| run: rustup target add wasm32-wasip2 | |
| # Install just command runner | |
| - name: Setup just | |
| uses: extractions/setup-just@e33e0265a09d6d736e2ee1e0eb685ef1de4669ff # v3.0.0 | |
| # Install wasm-tools for WebAssembly manipulation | |
| - name: Setup wasm-tools | |
| uses: bytecodealliance/actions/wasm-tools/setup@3b93676295fd6f7eaa7af2c2785539e052fa8349 # v1.1.1 | |
| # Install uv for Python package management | |
| - name: Setup uv | |
| uses: astral-sh/setup-uv@3259c6206f993105e3a61b142c2d97bf4b9ef83d # v7.1.0 | |
| # Install TinyGo for Go WebAssembly examples | |
| - name: Setup TinyGo | |
| uses: acifani/setup-tinygo@db56321a62b9a67922bb9ac8f9d085e218807bb3 # v0.2.1 | |
| with: | |
| tinygo-version: '0.36.0' | |
| # Cache Rust dependencies | |
| - name: Cache Rust dependencies | |
| uses: ./.github/actions/rust-cache | |
| # Install gh-aw extension for agentic workflows | |
| - name: Install gh-aw extension | |
| run: gh extension install githubnext/gh-aw | |
| env: | |
| GH_TOKEN: ${{ github.token }} | |
| # Verify installations | |
| - name: Verify tool installations | |
| run: | | |
| echo "=== Development Environment Setup Complete ===" | |
| echo "" | |
| echo "Rust toolchain:" | |
| rustc --version | |
| cargo --version | |
| echo "" | |
| echo "Nightly formatter:" | |
| cargo +nightly fmt --version | |
| echo "" | |
| echo "Build tools:" | |
| just --version | |
| protoc --version | |
| wasm-tools --version | |
| echo "" | |
| echo "Language support:" | |
| uv --version | |
| tinygo version | |
| echo "" | |
| echo "WASM target installed:" | |
| rustup target list --installed | grep wasm32-wasip2 | |
| echo "" | |
| echo "GitHub extensions:" | |
| gh extension list | |
| echo "" | |
| echo "=== Ready for development! ===" | |
| echo "You can now run:" | |
| echo " - just build # Build the project" | |
| echo " - just test # Run tests" | |
| echo " - just run # Start MCP server" | |
| echo " - cargo clippy # Run linter" | |
| env: | |
| GH_TOKEN: ${{ github.token }} |