diff --git a/.github/workflows/copilot-setup-steps.yml b/.github/workflows/copilot-setup-steps.yml new file mode 100644 index 00000000..d2a71cad --- /dev/null +++ b/.github/workflows/copilot-setup-steps.yml @@ -0,0 +1,52 @@ +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 + timeout-minutes: 30 + + # Set the permissions to the lowest permissions possible needed for your steps. + # Copilot will be given its own token for its operations. + permissions: + # We need to clone the repository to build and run the dependency-installer binary + contents: read + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Rust toolchain + uses: dtolnay/rust-toolchain@stable + + - name: Enable Rust cache + uses: Swatinem/rust-cache@v2 + + - name: Build dependency-installer binary + run: | + cargo build --release -p torrust-dependency-installer --bin dependency-installer + + - name: Install all development dependencies + run: | + # Use the binary we just built to install all dependencies + # Note: The binary handles sudo internally for dependencies that need it + target/release/dependency-installer install + env: + # Ensure non-interactive installation + DEBIAN_FRONTEND: noninteractive + + - name: Verify installations + run: | + # Verify all tools are installed correctly + target/release/dependency-installer check