From 1fac4fb08657d5da5c7c194df8b7e8fc4b93e15e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luis=20Qui=C3=B1ones?= Date: Fri, 11 Oct 2024 22:11:08 -0600 Subject: [PATCH] feat: added script to automatically update with github actions Co-authored-by: omarcresp --- .github/new-version.sh | 10 ++++++++ .github/update-zen-browser.bash | 23 ++++++++++++++++++ .github/workflows/zen-update.yml | 41 ++++++++++++++++++++++++++++++++ flake.nix | 13 ++++------ 4 files changed, 79 insertions(+), 8 deletions(-) create mode 100755 .github/new-version.sh create mode 100755 .github/update-zen-browser.bash create mode 100644 .github/workflows/zen-update.yml diff --git a/.github/new-version.sh b/.github/new-version.sh new file mode 100755 index 0000000..445f5e1 --- /dev/null +++ b/.github/new-version.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +upstream=$(curl -s https://api.github.com/repos/zen-browser/desktop/releases/latest | jq -r '.tag_name') +local=$(grep -oP 'version = "\K[^"]+' flake.nix) + +if [ "$upstream" != "$local" ]; then + echo "new_version=true" >>"$GITHUB_OUTPUT" +fi + +echo "$upstream" diff --git a/.github/update-zen-browser.bash b/.github/update-zen-browser.bash new file mode 100755 index 0000000..9d0e7d9 --- /dev/null +++ b/.github/update-zen-browser.bash @@ -0,0 +1,23 @@ +#!/usr/bin/env bash + +script_dir="$(dirname -- "$0")" + +upstream=$("$script_dir/new-version.sh" | cat -) + +echo "Updating to $upstream" + +base_url="https://github.com/zen-browser/desktop/releases/download/$upstream" + +# Modify with sed the nix file +sed -i "s/version = \".*\"/version = \"$upstream\"/" ./flake.nix + +# Update the hash specific.sha256 +specific=$(nix-prefetch-url --type sha256 --unpack "$base_url/zen.linux-specific.tar.bz2") +sed -i "s/specific.sha256 = \".*\"/specific.sha256 = \"$specific\"/" ./flake.nix + +# Update the hash generic.sha256 +generic=$(nix-prefetch-url --type sha256 --unpack "$base_url/zen.linux-generic.tar.bz2") +sed -i "s/generic.sha256 = \".*\"/generic.sha256 = \"$generic\"/" ./flake.nix + +nix flake update +nix build diff --git a/.github/workflows/zen-update.yml b/.github/workflows/zen-update.yml new file mode 100644 index 0000000..855b5a2 --- /dev/null +++ b/.github/workflows/zen-update.yml @@ -0,0 +1,41 @@ +name: Update Zen Browser + +on: + workflow_dispatch: + schedule: + - cron: "0 * * * *" + +jobs: + update-zen-browser: + name: Update Zen Browser + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Check new version + id: new-version + run: | + .github/new-version.sh + + - name: Install Nix + if: steps.new-version.outputs.new_version == 'true' + uses: cachix/install-nix-action@v27 + with: + nix_path: nixpkgs=channel:nixpkgs-unstable + + - name: Setup Nix Magic Cache + if: steps.new-version.outputs.new_version == 'true' + uses: DeterminateSystems/magic-nix-cache-action@main + + - name: Update hashes and test build + if: steps.new-version.outputs.new_version == 'true' + run: | + .github/update-zen-browser.bash + + - name: Commit changes + if: steps.new-version.outputs.new_version == 'true' + uses: stefanzweifel/git-auto-commit-action@v5 + with: + commit_message: "GitHub Action automated Zen update" + file_pattern: "*" diff --git a/flake.nix b/flake.nix index dbaf523..dc1d1c0 100644 --- a/flake.nix +++ b/flake.nix @@ -12,14 +12,11 @@ system = "x86_64-linux"; version = "1.0.1-a.8"; downloadUrl = { - "specific" = { - url = "https://github.com/zen-browser/desktop/releases/download/${version}/zen.linux-specific.tar.bz2"; - sha256 = "sha256:0pxwfxvvf3rp5cnil47578dgpyb0a42nnjpb7v3ylddfdlvr2msm"; - }; - "generic" = { - url = "https://github.com/zen-browser/desktop/releases/download/${version}/zen.linux-generic.tar.bz2"; - sha256 = "sha256:0g3pkdyq06651v2rxjssqwn79j3phghf0fxpq9r0vhhsqdw2r62a"; - }; + specific.url = "https://github.com/zen-browser/desktop/releases/download/${version}/zen.linux-specific.tar.bz2"; + specific.sha256 = "sha256:0pxwfxvvf3rp5cnil47578dgpyb0a42nnjpb7v3ylddfdlvr2msm"; + + generic.url = "https://github.com/zen-browser/desktop/releases/download/${version}/zen.linux-generic.tar.bz2"; + generic.sha256 = "0g3pkdyq06651v2rxjssqwn79j3phghf0fxpq9r0vhhsqdw2r62a"; }; pkgs = import nixpkgs {