Files
yarn-plugin-nixify-patched/.github/workflows/build.yml
T
2023-01-23 14:34:59 +01:00

110 lines
2.8 KiB
YAML

name: build
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: write
env:
NIX_PATH: nixpkgs=channel:nixpkgs-unstable
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3.6.0
with:
node-version: 18.x
- name: Yarn cache
uses: actions/cache@v3
with:
path: .yarn/cache
key: yarn-${{ hashFiles('yarn.lock') }}
restore-keys: yarn-
- name: Yarn install
run: yarn install --immutable
- name: TypeScript
run: yarn check
- name: Build
run: yarn build
- name: Update dist
if: github.repository_owner == 'stephank' && github.ref == 'refs/heads/main'
run: |
if [[ "$(git status --porcelain)" != "" ]]; then
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
git config user.name "github-actions[bot]"
git commit -m 'Update dist' dist/yarn-plugin-nixify.js
git push
fi
- name: Install plugin
run: yarn plugin import ./dist/yarn-plugin-nixify.js
- name: Test without Nix
run: yarn
- name: Install Nix
uses: cachix/install-nix-action@v18
with:
nix_path: nixpkgs=channel:nixos-unstable
- name: Setup Cachix
if: github.event_name == 'push' && github.repository_owner == 'stephank'
uses: cachix/cachix-action@v12
with:
name: stephank
signingKey: "${{ secrets.CACHIX_SIGNING_KEY }}"
- name: Add bin
run: |
cat > hello.js << EOF
#!/usr/bin/env node
require('webpack')
console.log('Hello nixify!')
EOF
chmod a+x hello.js
jq '.bin = { hello: "./hello.js" }' package.json > new
mv new package.json
- name: Test with Nix
run: yarn --no-immutable
- name: Test nix-build
run: nix-build
- name: Test bin
run: ./result/bin/hello
# TODO: Check there really is a separate derivation,
# and that Yarn actually reuses the build.
- name: Test isolated builds
run: |
# Matches example in ISOLATED_BUILDS.md
echo 'isolatedNixBuilds: ["sqlite3"]' >> .yarnrc.yml
cat > default.nix << EOF
{ pkgs ? import <nixpkgs> { } }:
pkgs.callPackage ./yarn-project.nix { } {
src = ./.;
overrideSqlite3Attrs = old: {
npm_config_sqlite = "/"; # Don't accidentally use the wrong sqlite.
buildInputs = old.buildInputs ++ (with pkgs; [ python3 sqlite ]);
};
}
EOF
yarn add sqlite3
nix-build