Skip to content

nixpkgs-review #368191 for lucasew #216

nixpkgs-review #368191 for lucasew

nixpkgs-review #368191 for lucasew #216

# This is a basic workflow to help you get started with Actions
name: nixpkgs-review a nixpkgs PR
run-name: 'nixpkgs-review #${{ github.event.inputs.pr }} for ${{ github.event.inputs.for }}'
# Controls when the action will run. Triggers the workflow on push or pull request
# events but only for the master branch
on:
workflow_dispatch:
inputs:
quiet:
description: "Do not tell that the workflow started"
type: boolean
default: false
pr:
description: "PR number"
type: number
required: true
extra-args:
description: "Extra args for nixpkgs-review"
type: string
default: ""
required: false
free-space:
description: "Run workflow to increase free space (tradeoff: runs faster vs runs bigger PRs)"
type: boolean
default: true
required: true
x86_64-linux:
type: boolean
description: "Build on x86_64-linux"
default: true
required: true
aarch64-darwin:
type: boolean
description: "Build on aarch64-darwin"
default: false
required: true
x86_64-darwin:
type: boolean
description: "Build on x86_64-darwin"
default: false
required: true
for:
type: string
description: "Who asked for this run"
default: "not identified"
concurrency:
group: review-${{ github.event.inputs.pr }}
cancel-in-progress: true
jobs:
pre-run:
runs-on: ubuntu-latest
steps:
- name: Show summary
env:
WORKFLOW_INFORMATION: |
# [nixpkgs-reviewd](${{github.server_url}}/${{ github.repository }}) workflow started
- **Extra args**: `${{github.event.inputs.extra-args}}`
- **Free space**: ${{github.event.inputs.free-space}}
- **Who asked**: ${{github.event.inputs.for}}
- **Quiet mode**: ${{github.event.inputs.quiet}}
- **PR link**: https://github.com/NixOS/nixpkgs/pull/${{ github.event.inputs.pr }}
**TARGETS**
- **x86_64-linux**: ${{github.event.inputs.x86_64-linux}}
- **x86_64-darwin**: ${{github.event.inputs.x86_64-darwin}}
- **aarch64-darwin**: ${{github.event.inputs.aarch64-darwin}}
run:
echo "$WORKFLOW_INFORMATION" >> $GITHUB_STEP_SUMMARY
- uses: actions/github-script@v7
if: ${{ github.event.inputs.quiet != 'true' }}
env:
COMMENT: |
# [nixpkgs-reviewd](${{github.server_url}}/${{ github.repository }}) workflow started
**Status and logs**: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
**Extra args**: `${{github.event.inputs.extra-args}}`
PR: ${{ github.event.inputs.pr }}
with:
github-token: ${{secrets.GH_TOKEN_NIXPKGS_REVIEW}}
script: |
github.rest.issues.createComment({
issue_number: process.env.PR,
owner: 'NixOS',
repo: 'nixpkgs',
body: process.env.COMMENT
})
post-run:
runs-on: ubuntu-latest
needs:
- build-x86_64-linux
- build-aarch64-darwin
- build-x86_64-darwin
if: ${{ always() }}
steps:
- name: Fetch reports from runners
uses: actions/download-artifact@v4
with:
path: reports
pattern: report-*
- name: Join reports
env:
COMMENT: |
# [nixpkgs-reviewd](${{github.server_url}}/${{ github.repository }}) workflow finished
**Status and logs**: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
run: |
mkdir -p reports # create if not exists so find doesn't fail
find reports -type f
echo "$COMMENT" >> report.md
for item in $(find reports -name report.md); do
echo "" >> report.md
cat "$item" >> report.md
done
- uses: actions/github-script@v7
env:
PR: ${{ github.event.inputs.pr }}
with:
github-token: ${{secrets.GH_TOKEN_NIXPKGS_REVIEW}}
script: |
const fs = require('node:fs');
github.rest.issues.createComment({
issue_number: process.env.PR,
owner: 'NixOS',
repo: 'nixpkgs',
body: fs.readFileSync("report.md", 'utf8')
})
build-x86_64-linux:
name: 'x86_64-linux'
if: ${{ github.event.inputs.x86_64-linux == 'true' }}
runs-on: ubuntu-latest
steps:
- name: Free up space
uses: lucasew/action-i-only-care-about-nix@main
if: ${{ github.event.inputs.free-space == 'true' }}
- name: Prepare for Nix if cleaned up
run: |
sudo mkdir -p /nix/build
df -h
- name: Try to fetch nixpkgs clone from cache
id: git-nixpkgs
uses: actions/cache@v4
with:
path: |
nixpkgs
key: git-nixpkgs
- name: Fetch nixpkgs from git if not
if: steps.git-nixpkgs.outputs.cache-hit != 'true'
run: git clone https://github.com/NixOS/nixpkgs nixpkgs
- uses: DeterminateSystems/nix-installer-action@v16
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
extra-conf: |
build-dir = /nix/build
- uses: DeterminateSystems/magic-nix-cache-action@main
- name: Run review
env:
GITHUB_TOKEN: ${{ secrets.GH_TOKEN_NIXPKGS_REVIEW }}
PR: ${{ github.event.inputs.pr }}
EXTRA_ARGS: ${{ github.event.inputs.extra-args }}
run: |
{ while true; do df -h; uptime; sleep 60; done } &
git config --global user.email "user@example.com"
git config --global user.name "user"
cd $GITHUB_WORKSPACE/nixpkgs
nix run nixpkgs#nixpkgs-review -- pr $PR --print-result --no-shell --eval local $EXTRA_ARGS
- uses: actions/upload-artifact@v4
if: always()
with:
name: logs-x86_64-linux
path: |
~/.cache/nixpkgs-review/*/logs
/nix/var/log/nix/drvs
include-hidden-files: true
- uses: actions/upload-artifact@v4
if: always()
with:
name: report-x86_64-linux
path: ~/.cache/nixpkgs-review/*/report.md
- name: Result in summary
if: always()
env:
PR: ${{ github.event.inputs.pr }}
run: cat ~/.cache/nixpkgs-review/pr-$PR/report.md >> $GITHUB_STEP_SUMMARY
build-aarch64-darwin:
name: 'aarch64-darwin'
if: ${{ github.event.inputs.aarch64-darwin == 'true' }}
runs-on: macos-latest
steps:
- name: Try to fetch nixpkgs clone from cache
id: git-nixpkgs
uses: actions/cache@v4
with:
path: |
nixpkgs
key: git-nixpkgs
- name: Fetch nixpkgs from git if not
if: steps.git-nixpkgs.outputs.cache-hit != 'true'
run: git clone https://github.com/NixOS/nixpkgs nixpkgs
- uses: DeterminateSystems/nix-installer-action@v16
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
- uses: DeterminateSystems/magic-nix-cache-action@main
- name: Run review
env:
GITHUB_TOKEN: ${{ secrets.GH_TOKEN_NIXPKGS_REVIEW }}
PR: ${{ github.event.inputs.pr }}
EXTRA_ARGS: ${{ github.event.inputs.extra-args }}
run: |
{ while true; do df -h; uptime; sleep 60; done } &
git config --global user.email "user@example.com"
git config --global user.name "user"
cd $GITHUB_WORKSPACE/nixpkgs
nix run nixpkgs#nixpkgs-review -- pr $PR --print-result --no-shell --eval local $EXTRA_ARGS
- uses: actions/upload-artifact@v4
if: always()
with:
name: logs-aarch64-darwin
path: |
/nix/var/log/nix/drvs
~/.cache/nixpkgs-review/*/logs
include-hidden-files: true
- uses: actions/upload-artifact@v4
if: always()
with:
name: report-aarch64-darwin
path: ~/.cache/nixpkgs-review/*/report.md
- name: Result in summary
if: always()
env:
PR: ${{ github.event.inputs.pr }}
run: cat ~/.cache/nixpkgs-review/pr-$PR/report.md >> $GITHUB_STEP_SUMMARY
build-x86_64-darwin:
name: 'x86_64-darwin'
if: ${{ github.event.inputs.x86_64-darwin == 'true' }}
runs-on: macos-13
steps:
- name: Try to fetch nixpkgs clone from cache
id: git-nixpkgs
uses: actions/cache@v4
with:
path: |
nixpkgs
key: git-nixpkgs
- name: Fetch nixpkgs from git if not
if: steps.git-nixpkgs.outputs.cache-hit != 'true'
run: git clone https://github.com/NixOS/nixpkgs nixpkgs
- uses: DeterminateSystems/nix-installer-action@v16
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
- uses: DeterminateSystems/magic-nix-cache-action@main
- name: Run review
env:
GITHUB_TOKEN: ${{ secrets.GH_TOKEN_NIXPKGS_REVIEW }}
PR: ${{ github.event.inputs.pr }}
EXTRA_ARGS: ${{ github.event.inputs.extra-args }}
run: |
{ while true; do df -h; uptime; sleep 60; done } &
git config --global user.email "user@example.com"
git config --global user.name "user"
cd $GITHUB_WORKSPACE/nixpkgs
nix run nixpkgs#nixpkgs-review -- pr $PR --print-result --no-shell --eval local $EXTRA_ARGS
- uses: actions/upload-artifact@v4
if: always()
with:
name: logs-x86_64-darwin
path: |
/nix/var/log/nix/drvs
~/.cache/nixpkgs-review/*/logs
include-hidden-files: true
- uses: actions/upload-artifact@v4
if: always()
with:
name: report-x86_64-darwin
path: ~/.cache/nixpkgs-review/*/report.md
- name: Result in summary
if: always()
env:
PR: ${{ github.event.inputs.pr }}
run: cat ~/.cache/nixpkgs-review/pr-$PR/report.md >> $GITHUB_STEP_SUMMARY