Update Vencord #751
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Update Vencord | |
| on: | |
| schedule: | |
| - cron: "0 */8 * * *" # Every 8 hours | |
| workflow_dispatch: | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| update-unstable: | |
| name: Update Vencord Unstable | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 4 | |
| permissions: | |
| contents: write | |
| actions: write | |
| steps: | |
| - uses: actions/checkout@v4.2.2 | |
| with: | |
| fetch-depth: 1 | |
| - uses: DeterminateSystems/nix-installer-action@v16 | |
| with: | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Get old version | |
| id: old-version | |
| shell: bash | |
| run: | | |
| OLD_VERSION=$(nix eval --impure --raw --expr \ | |
| "with import <nixpkgs> {}; (callPackage ./pkgs/vencord.nix { unstable = true; }).src.rev" | cut -c1-7) | |
| echo "version=$OLD_VERSION" >> $GITHUB_OUTPUT | |
| - name: Update Vencord | |
| id: update | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| if ! nix build --impure --expr 'let pkgs = import <nixpkgs> {}; in (pkgs.callPackage ./pkgs/vencord.nix { unstable = true; }).passthru.updateScript'; then | |
| echo "Failed to build the update script." | |
| exit 1 | |
| fi | |
| if ! ./result/bin/vencord-update unstable; then | |
| echo "Update script failed to execute successfully" | |
| exit 1 | |
| fi | |
| echo "Vencord update script finished." | |
| rm ./result | |
| - name: Get new version | |
| id: new-version | |
| shell: bash | |
| run: | | |
| NEW_VERSION=$(nix eval --impure --raw --expr \ | |
| "with import <nixpkgs> {}; (callPackage ./pkgs/vencord.nix { unstable = true; }).src.rev" | cut -c1-7) | |
| echo "version=$NEW_VERSION" >> $GITHUB_OUTPUT | |
| - name: Test Build | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| if ! nix-build -E 'with import <nixpkgs> {}; callPackage ./pkgs/vencord.nix { unstable = true; }'; then | |
| echo "Build failed" | |
| exit 1 | |
| fi | |
| unlink result | |
| - name: Commit changes | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| if: success() && steps.old-version.outputs.version != steps.new-version.outputs.version | |
| run: | | |
| git config --global user.name 'github-actions[bot]' | |
| git config --global user.email 'github-actions[bot]@users.noreply.github.com' | |
| if [[ -n "$(git status --porcelain pkgs/vencord.nix)" ]]; then | |
| git add pkgs/vencord.nix | |
| git commit -m "github: update vencord-unstable ${{ steps.old-version.outputs.version }} -> ${{ steps.new-version.outputs.version }}" | |
| for i in {1..3}; do | |
| git fetch origin | |
| git pull --rebase origin ${{ github.ref_name }} | |
| if git push; then | |
| break | |
| fi | |
| sleep 5 | |
| done | |
| else | |
| echo "No changes to commit" | |
| fi | |
| update-stable: | |
| name: Update Vencord Stable | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 4 | |
| permissions: | |
| contents: write | |
| actions: write | |
| steps: | |
| - uses: actions/checkout@v4.2.2 | |
| with: | |
| fetch-depth: 1 | |
| - uses: DeterminateSystems/nix-installer-action@v16 | |
| with: | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Get old version | |
| id: old-version | |
| shell: bash | |
| run: | | |
| OLD_VERSION=$(nix eval --impure --raw --expr \ | |
| "with import <nixpkgs> {}; (callPackage ./pkgs/vencord.nix { unstable = false; }).version") | |
| echo "version=$OLD_VERSION" >> $GITHUB_OUTPUT | |
| - name: Update Vencord | |
| id: update | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| if ! nix build --impure --expr 'let pkgs = import <nixpkgs> {}; in (pkgs.callPackage ./pkgs/vencord.nix { unstable = false; }).passthru.updateScript'; then | |
| echo "Failed to build the update script." | |
| exit 1 | |
| fi | |
| if ! ./result/bin/vencord-update stable; then | |
| echo "Update script failed to execute successfully" | |
| exit 1 | |
| fi | |
| echo "Vencord update script finished." | |
| rm ./result | |
| - name: Get new version | |
| id: new-version | |
| shell: bash | |
| run: | | |
| NEW_VERSION=$(nix eval --impure --raw --expr \ | |
| "with import <nixpkgs> {}; (callPackage ./pkgs/vencord.nix { unstable = false; }).version") | |
| echo "version=$NEW_VERSION" >> $GITHUB_OUTPUT | |
| - name: Test Build | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| if ! nix-build -E 'with import <nixpkgs> {}; callPackage ./pkgs/vencord.nix { unstable = false; }'; then | |
| echo "Build failed" | |
| exit 1 | |
| fi | |
| unlink result | |
| - name: Commit changes | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| if: success() && steps.old-version.outputs.version != steps.new-version.outputs.version | |
| run: | | |
| git config --global user.name 'github-actions[bot]' | |
| git config --global user.email 'github-actions[bot]@users.noreply.github.com' | |
| if [[ -n "$(git status --porcelain pkgs/vencord.nix)" ]]; then | |
| git add pkgs/vencord.nix | |
| git commit -m "github: update vencord ${{ steps.old-version.outputs.version }} -> ${{ steps.new-version.outputs.version }}" | |
| for i in {1..3}; do | |
| git fetch origin | |
| git pull --rebase origin ${{ github.ref_name }} | |
| if git push; then | |
| break | |
| fi | |
| sleep 5 | |
| done | |
| else | |
| echo "No changes to commit" | |
| fi |