name: Setup Build Environment description: Common build environment setup steps inputs: nodejs-version: description: Node.js version required: true setup-python: description: Set up Python required: false default: "false" setup-docker: description: Set up Docker QEMU and Buildx required: false default: "true" setup-sccache: description: Configure sccache for GitHub Actions required: false default: "true" free-space: description: Remove unnecessary packages to free disk space required: false default: "true" runs: using: composite steps: - name: Free disk space if: inputs.free-space == 'true' shell: bash run: | sudo apt-get remove --purge -y azure-cli || true sudo apt-get remove --purge -y firefox || true sudo apt-get remove --purge -y ghc-* || true sudo apt-get remove --purge -y google-cloud-sdk || true sudo apt-get remove --purge -y google-chrome-stable || true sudo apt-get remove --purge -y powershell || true sudo apt-get remove --purge -y php* || true sudo apt-get remove --purge -y ruby* || true sudo apt-get remove --purge -y mono-* || true sudo apt-get autoremove -y sudo apt-get clean sudo rm -rf /usr/lib/jvm sudo rm -rf /usr/local/.ghcup sudo rm -rf /usr/local/lib/android sudo rm -rf /usr/share/dotnet sudo rm -rf /usr/share/swift sudo rm -rf "$AGENT_TOOLSDIRECTORY" # BuildJet runners lack /opt/hostedtoolcache, which setup-python and setup-qemu expect - name: Ensure hostedtoolcache exists shell: bash run: sudo mkdir -p /opt/hostedtoolcache && sudo chown $USER:$USER /opt/hostedtoolcache - name: Set up Python if: inputs.setup-python == 'true' uses: actions/setup-python@v5 with: python-version: "3.x" - uses: actions/setup-node@v4 with: node-version: ${{ inputs.nodejs-version }} cache: npm cache-dependency-path: "**/package-lock.json" - name: Set up Docker QEMU if: inputs.setup-docker == 'true' uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx if: inputs.setup-docker == 'true' uses: docker/setup-buildx-action@v3 - name: Configure sccache if: inputs.setup-sccache == 'true' uses: actions/github-script@v7 with: script: | core.exportVariable('ACTIONS_RESULTS_URL', process.env.ACTIONS_RESULTS_URL || ''); core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');