From 3373c59b903cfcccedf31278f9f18ea305e3a567 Mon Sep 17 00:00:00 2001 From: Jules Aguillon Date: Wed, 23 Mar 2022 10:23:13 +0100 Subject: [PATCH] CI: Use nixbuild.net The build takes place on the remote, which takes advantage of Nix's caching. The previous workflow used a remote cache but in order to build locally, all the dependencies needed to be downloaded from the cache everytime. The dependencies are 462M, downloading took most of the time. --- .github/workflows/make-apk.yml | 29 ++++++++++++++++++----------- shell.nix | 32 ++++++++++++++++++++++++-------- 2 files changed, 42 insertions(+), 19 deletions(-) diff --git a/.github/workflows/make-apk.yml b/.github/workflows/make-apk.yml index 2fe3534..b82926b 100644 --- a/.github/workflows/make-apk.yml +++ b/.github/workflows/make-apk.yml @@ -1,4 +1,4 @@ -name: Make Apk CI +name: Build-debug-apk on: workflow_dispatch: @@ -6,29 +6,36 @@ on: pull_request: jobs: - Build-Apk: + Make-apk: runs-on: ubuntu-latest steps: - name: Install nix uses: cachix/install-nix-action@v15 with: nix_path: nixpkgs=channel:nixos-unstable - - uses: cachix/cachix-action@v10 + - name: Setup nixbuild.net + uses: nixbuild/nixbuild-action@v8 with: - name: julow - signingKey: '${{ secrets.CACHIX_SIGNING_KEY }}' - - name: Checkout Repo + nixbuild_ssh_key: ${{ secrets.nixbuild_ssh_key }} + - name: Checkout repo uses: actions/checkout@v2 - name: Cache debug certificate uses: actions/cache@v2 with: path: _build/debug.keystore key: debug-keystore - - name: Run nix-shell and Make - uses: ZenithalHourlyRate/nix-shell-action@v4 - with: - file: shell.nix - script: make + # Hopefully cached. + - name: Debug certificate + run: | + [[ -f _build/debug.keystore ]] || + nix-shell ./shell.nix --run 'make debug.keystore' + - name: Build + run: | + nix build --eval-store auto --store ssh-ng://eu.nixbuild.net \ + -f ./shell.nix debug-apk + nix build -f ./shell.nix debug-apk + mkdir -p _build + cp result/*.apk _build - name: Save debug apk uses: actions/upload-artifact@v2 with: diff --git a/shell.nix b/shell.nix index 8036a5e..1ee5012 100644 --- a/shell.nix +++ b/shell.nix @@ -1,19 +1,35 @@ { pkgs ? import { - config.android_sdk.accept_license = true; - config.allowUnfree = true; - } }: + config.android_sdk.accept_license = true; + config.allowUnfree = true; +} }: let - jdk = pkgs.openjdk8; - android = pkgs.androidenv.composeAndroidPackages { buildToolsVersions = [ "30.0.3" ]; platformVersions = [ "30" ]; abiVersions = [ "armeabi-v7a" ]; }; -in -pkgs.mkShell { - buildInputs = [ pkgs.findutils jdk android.androidsdk pkgs.fontforge ]; + buildInputs = + [ pkgs.findutils pkgs.openjdk8 android.androidsdk pkgs.fontforge ]; + + # Env variable required by the Makefile ANDROID_HOME = "${android.androidsdk}/libexec/android-sdk"; + + # Build the debug APK. Exposed as an attribute, used in CI + debug-apk = pkgs.stdenv.mkDerivation { + name = "unexpected-keyboard-debug"; + src = ./.; + inherit buildInputs ANDROID_HOME; + buildPhase = '' + make + ''; + installPhase = '' + mkdir -p $out + mv _build/*.apk $out + ''; + }; + +in pkgs.mkShell { inherit buildInputs ANDROID_HOME; } // { + inherit debug-apk; }