diff --git a/.github/actions/free_disk/action.yml b/.github/actions/free_disk/action.yml new file mode 100644 index 00000000..51c23179 --- /dev/null +++ b/.github/actions/free_disk/action.yml @@ -0,0 +1,28 @@ +name: 'Free Disk' +description: 'Frees up space on GitHub runners' +runs: + using: "composite" + steps: + - name: Monitor Disk Space (Start) + shell: bash + run: df -h + + - name: Free Disk Space + uses: jlumbroso/free-disk-space@main + with: + # this might remove tools that are actually needed, + # if set to "true" but frees about 6 GB + tool-cache: false + + # all of these default to true, but feel free to set to + # "false" if necessary for your workflow + android: true + dotnet: false + haskell: true + large-packages: false + docker-images: true + swap-storage: true + + - name: Monitor Disk Space (Post Cleanup) + shell: bash + run: df -h diff --git a/.github/actions/setup_build/action.yml b/.github/actions/setup_build/action.yml new file mode 100644 index 00000000..6e9e7185 --- /dev/null +++ b/.github/actions/setup_build/action.yml @@ -0,0 +1,41 @@ +name: 'Setup Build' +description: 'Sets up the build/test environment on Ubuntu' +# inputs: +# who-to-greet: # id of input +# description: 'Who to greet' +# required: true +# default: 'World' +# outputs: +# random-number: +# description: "Random number" +# value: ${{ steps.random-number-generator.outputs.random-number }} +runs: + using: "composite" + steps: + - name: Inspect Checkout + shell: bash + run: git describe --tags + + - name: Install Dependencies + shell: bash + run: | + sudo apt-get update && \ + sudo apt-get install -y --no-install-recommends curl libssl-dev pkg-config libclang-dev protobuf-compiler libprotobuf-dev libgeos-dev + + - uses: actions/setup-node@v6 + with: + node-version: 22 + - uses: pnpm/action-setup@v4 + with: + version: 10 + - name: PNPM install dependencies + shell: bash + run: | + pnpm install + + - uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: 1.95.0 + components: rustfmt, clippy + default: true diff --git a/.github/actions/setup_clients/action.yml b/.github/actions/setup_clients/action.yml new file mode 100644 index 00000000..ac29b196 --- /dev/null +++ b/.github/actions/setup_clients/action.yml @@ -0,0 +1,33 @@ +name: 'Setup Client Environments' +description: 'Sets up the client build/test environment on Ubuntu' +runs: + using: "composite" + steps: + - uses: actions/setup-python@v5 + with: + python-version: '3.13' + - name: Install Poetry and Python Dependencies + shell: bash + run: | + pipx install --python python3.13 "poetry==2.1.3" && poetry -C client/python install + + - name: Set up Flutter + uses: subosito/flutter-action@v2 + with: + channel: stable + flutter-version: 3.35.4 + + - name: Setup .NET SDK + uses: actions/setup-dotnet@v4 + with: + dotnet-version: '9.x' + + # - name: Setup Go + # uses: actions/setup-go@v5 + # with: + # go-version: "1.24.x" + # Swift 6.1 is preinstalled and swift-action sporadically fails on + # gpg issues: https://github.com/swift-actions/setup-swift/issues/694 + # - uses: swift-actions/setup-swift@v2 + # with: + # swift-version: "6.1" diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index a6c03a6b..772fb33c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -12,75 +12,20 @@ jobs: test: runs-on: ubuntu-latest steps: - - name: Monitor Disk Space (Start) - run: df -h - - name: Free Disk Space - uses: jlumbroso/free-disk-space@main - with: - # this might remove tools that are actually needed, - # if set to "true" but frees about 6 GB - tool-cache: false - - # all of these default to true, but feel free to set to - # "false" if necessary for your workflow - android: true - dotnet: false - haskell: true - large-packages: false - docker-images: true - swap-storage: true - - name: Monitor Disk Space (Post Cleanup) - run: df -h - uses: actions/checkout@v6 with: submodules: 'recursive' # No shallow checkout, i.e. fetch all tags (used for versioning the binary). fetch-depth: 0 - - name: Inspect Checkout - run: git describe --tags - - name: Install Dependencies - run: | - sudo apt-get update && \ - sudo apt-get install -y --no-install-recommends curl libssl-dev pkg-config libclang-dev protobuf-compiler libprotobuf-dev libgeos-dev - - uses: actions/setup-python@v5 - with: - python-version: '3.13' - - name: Install Poetry and Python Dependencies - run: | - pipx install --python python3.13 "poetry==2.1.3" && poetry -C client/python install - - uses: actions/setup-node@v6 - with: - node-version: 22 - - uses: pnpm/action-setup@v4 - with: - version: 10 - - name: PNPM install - run: | - pnpm i - - name: Set up Flutter - uses: subosito/flutter-action@v2 - with: - channel: stable - flutter-version: 3.35.4 - - name: Setup .NET SDK - uses: actions/setup-dotnet@v4 - with: - dotnet-version: '9.x' - - uses: actions-rs/toolchain@v1 - with: - profile: minimal - toolchain: 1.95.0 - components: rustfmt, clippy - default: true - # - name: Setup Go - # uses: actions/setup-go@v5 - # with: - # go-version: "1.24.x" - # Swift 6.1 is preinstalled and swift-action sporadically fails on - # gpg issues: https://github.com/swift-actions/setup-swift/issues/694 - # - uses: swift-actions/setup-swift@v2 - # with: - # swift-version: "6.1" + + - id: free_disk + uses: ./.github/actions/free_disk + + - id: setup_build + uses: ./.github/actions/setup_build + - id: setup_clients + uses: ./.github/actions/setup_clients + - name: "Build & Run Tests" uses: pre-commit/action@v3.0.1 env: