Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

cli-tests

cli-tests #7434

Workflow file for this run

name:cli-tests
# Runs the Devbox CLI tests
concurrency:
group:${{ github.ref }}
cancel-in-progress:true
on:
pull_request:
push:
branches:
-main
merge_group:
branches:
-main
workflow_call:
inputs:
run-mac-tests:
type:boolean
workflow_dispatch:
inputs:
run-mac-tests:
type:boolean
description:Run tests on macOS
example-debug:
type:boolean
description:Run example tests with DEVBOX_DEBUG=1 to increase verbosity
schedule:
-cron:'30 8 * * *'# Run nightly at 8:30 UTC
permissions:
contents:read
pull-requests:read
defaults:
run:
# Explicitly setting the shell to bash runs commands with
# `bash --noprofile --norc -eo pipefail` instead of `bash -e`.
shell:bash
env:
DEVBOX_DEBUG:1
DEVBOX_GITHUB_API_TOKEN:${{ secrets.GITHUB_TOKEN }}
GITHUB_TOKEN:${{ secrets.GITHUB_TOKEN }}
HOMEBREW_GITHUB_API_TOKEN:${{ secrets.GITHUB_TOKEN }}
HOMEBREW_NO_ANALYTICS:1
HOMEBREW_NO_AUTO_UPDATE:1
HOMEBREW_NO_EMOJI:1
HOMEBREW_NO_ENV_HINTS:1
HOMEBREW_NO_INSTALL_CLEANUP:1
NIX_CONFIG:|
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
jobs:
build-devbox:
strategy:
matrix:
os:[ubuntu-latest, macos-latest]
runs-on:${{ matrix.os }}
steps:
-uses:actions/checkout@v4
-uses:actions/setup-go@v5
with:
go-version-file:./go.mod
-name:Build devbox
run:go build -o dist/devbox ./cmd/devbox
-name:Upload devbox artifact
uses:actions/upload-artifact@v4
with:
name:devbox-${{ runner.os }}-${{ runner.arch }}
path:./dist/devbox
retention-days:7
typos:
name:Spell Check with Typos
if:github.ref != 'refs/heads/main'
runs-on:ubuntu-latest
steps:
-uses:actions/checkout@v4
-uses:crate-ci/typos@v1.16.26
flake-test:
name:Test Flake Build
if:github.ref != 'refs/heads/main'
runs-on:ubuntu-latest
steps:
-uses:actions/checkout@v4
-name:Install devbox
uses:jetify-com/devbox-install-action@jl/migrate-installer
with:
enable-cache:true
-name:Build flake
run:|
if ! devbox run build-flake; then
echo "::warning::If this fails, you probably have to run 'devbox run update-hash'"
exit 1
fi
-run:./result/bin/devbox version
golangci-lint:
strategy:
matrix:
os:[ubuntu-latest, macos-latest]
runs-on:${{ matrix.os }}
timeout-minutes:10
steps:
-uses:actions/checkout@v4
-name:Install devbox
uses:jetify-com/devbox-install-action@jl/migrate-installer
with:
enable-cache:true
-name:Mount golang cache
uses:actions/cache@v4
with:
path:|
~/.cache/golangci-lint
~/.cache/go-build
~/go/pkg
key:go-${{ runner.os }}-${{ hashFiles('go.sum') }}
-run:devbox run lint
test:
needs:build-devbox
strategy:
matrix:
is-main:
-${{ github.ref == 'refs/heads/main' && 'is-main' || 'not-main' }}
os:[ubuntu-latest, macos-latest]
# This is an optimization that runs tests twice, with and without
# the devbox.json tests. We can require the other tests to complete before
# merging, while keeping the others as an additional non-required signal
run-project-tests:["project-tests-only", "project-tests-off"]
# Run tests on:
# 1. the oldest supported nix version (which is 2.9.0? But determinate-systems installer has 2.12.0)
# 2. nix 2.19.2: version before nix profile changes
# 2. latest nix version (note, 2.20.1 introduced a new profile change)
nix-version:["2.12.0", "2.19.2", "2.30.2"]
exclude:
# Only runs tests on macos if explicitly requested, or on a schedule
-os:"${{ (inputs.run-mac-tests || github.event.schedule != '') && 'dummy' || 'macos-latest' }}"
runs-on:${{ matrix.os }}
timeout-minutes:60
env:
# For devbox.json tests, we default to non-debug mode since the debug output is less useful than for unit testscripts.
# But we allow overriding via inputs.example-debug
DEVBOX_DEBUG:${{ (matrix.run-project-tests == 'project-tests-off' || inputs.example-debug) && '1' || '0' }}
DEVBOX_GOLANG_TEST_TIMEOUT:"${{ (github.ref == 'refs/heads/main' || inputs.run-mac-tests) && '1h' || '30m' }}"
steps:
-name:clear directories to reduce disk usage
# https://github.com/actions/runner-images/issues/2840#issuecomment-1284059930
run:|
sudo rm -rf /usr/share/dotnet
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
-uses:actions/checkout@v4
-name:Mount golang cache
uses:actions/cache@v4
with:
path:|
~/.cache/go-build
~/go/pkg
key:go-devbox-tests-${{ runner.os }}-${{ hashFiles('go.sum') }}
-name:Install additional shells (dash, zsh)
run:|
if [ "$RUNNER_OS" == "Linux" ]; then
sudo apt-get update
sudo apt-get install dash zsh
elif [ "$RUNNER_OS" == "macOS" ]; then
brew update
brew install dash zsh
fi
-name:Install devbox
uses:jetify-com/devbox-install-action@jl/migrate-installer
with:
enable-cache:true
-name:Setup Nix GitHub authentication
run:|
# Setup github authentication to ensure Github's rate limits are not hit
# For macOS, we need to configure the system-wide nix.conf because the Nix daemon
# runs as a different user and doesn't read the user's ~/.config/nix/nix.conf
if [ "$RUNNER_OS" == "macOS" ]; then
echo "Configuring system-wide Nix config for macOS daemon"
# Ensure /etc/nix directory exists
if [ ! -d /etc/nix ]; then
sudo mkdir -p /etc/nix
fi
# Check if file exists, create it if not
if [ ! -f /etc/nix/nix.conf ]; then
echo "# Nix configuration" | sudo tee /etc/nix/nix.conf > /dev/null
fi
echo "access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}" | sudo tee -a /etc/nix/nix.conf
# Restart nix daemon to pick up the new configuration
sudo launchctl stop org.nixos.nix-daemon ||true
sudo launchctl start org.nixos.nix-daemon ||true
sleep 2 # Give daemon time to restart
fi
# For Linux and as a backup for macOS, also configure user config
mkdir -p ~/.config/nix
echo "access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}" > ~/.config/nix/nix.conf
-name:Run fast tests
if:matrix.run-project-tests == 'project-tests-off'
run:|
echo "::group::Nix version"
nix --version
echo "::endgroup::"
echo "::group::Contents of /etc/nix/nix.conf"
cat /etc/nix/nix.conf ||true
echo "::endgroup::"
echo "::group::Resolved Nix config"
nix show-config --extra-experimental-features nix-command
echo "::endgroup::"
devbox run go test -v -timeout $DEVBOX_GOLANG_TEST_TIMEOUT ./...
-name:Run project (slow) tests
if:matrix.run-project-tests == 'project-tests-only'
run:devbox run test-projects-only
auto-nix-install:# ensure Devbox installs nix and works properly after installation.
needs:build-devbox
strategy:
matrix:
os:[ubuntu-latest, macos-latest]
use-detsys:[true, false]
runs-on:${{ matrix.os }}
steps:
-uses:actions/checkout@v4
-name:Download devbox
uses:actions/download-artifact@v4
with:
name:devbox-${{ runner.os }}-${{ runner.arch }}
-name:Add devbox to path
run:|
chmod +x ./devbox
sudo mv ./devbox /usr/local/bin/
-name:Install nix and devbox packages
run:|
export NIX_INSTALLER_NO_CHANNEL_ADD=1
export DEVBOX_FEATURE_DETSYS_INSTALLER=${{ matrix.use-detsys }}
# Setup github authentication BEFORE running devbox to ensure Github's rate limits are not hit.
# Configure user config first (Nix installer will respect this)
mkdir -p ~/.config/nix
echo "access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}" > ~/.config/nix/nix.conf
# Run devbox which will auto-install Nix if needed
devbox run echo "Installing packages..."
# After Nix is installed, configure system-wide config for the daemon on macOS
if [ "$RUNNER_OS" == "macOS" ]; then
echo "Configuring system-wide Nix config for macOS daemon"
# Check if file exists, create directory if needed
if [ ! -f /etc/nix/nix.conf ]; then
sudo mkdir -p /etc/nix
echo "# Nix configuration" | sudo tee /etc/nix/nix.conf > /dev/null
fi
echo "access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}" | sudo tee -a /etc/nix/nix.conf
# Restart nix daemon to pick up the new configuration
sudo launchctl stop org.nixos.nix-daemon ||true
sudo launchctl start org.nixos.nix-daemon ||true
sleep 2 # Give daemon time to restart
fi
-name:Test removing package
run:devbox rm go
# Run a sanity test to make sure Devbox can install and remove packages with
# the last few Nix releases.
test-nix-versions:
needs:build-devbox
strategy:
matrix:
os:[ubuntu-latest, macos-latest]
nix-version:[2.15.1, 2.16.1, 2.17.0, 2.18.0, 2.19.2, 2.24.7]
runs-on:${{ matrix.os }}
steps:
-uses:actions/checkout@v4
-name:Download devbox
uses:actions/download-artifact@v4
with:
name:devbox-${{ runner.os }}-${{ runner.arch }}
-name:Add devbox to path
run:|
chmod +x ./devbox
sudo mv ./devbox /usr/local/bin/
-name:Install Nix
uses:DeterminateSystems/nix-installer-action@v4
with:
logger:pretty
extra-conf:experimental-features = ca-derivations fetch-closure
nix-package-url:https://releases.nixos.org/nix/nix-${{ matrix.nix-version }}/nix-${{ matrix.nix-version }}-${{ runner.arch == 'X64' && 'x86_64' || 'aarch64' }}-${{ runner.os == 'macOS' && 'darwin' || 'linux' }}.tar.xz
-name:Run devbox install, devbox run, devbox rm
run:|
echo "::group::Nix version"
nix --version
echo "::endgroup::"
echo "::group::Contents of /etc/nix/nix.conf"
cat /etc/nix/nix.conf ||true
echo "::endgroup::"
echo "::group::Resolved Nix config"
nix show-config --extra-experimental-features nix-command
echo "::endgroup::"
devbox install
devbox run -- echo "Hello from devbox!"
devbox rm go

[8]ページ先頭

©2009-2025 Movatter.jp