asdf/.github/workflows/tests.yml

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

156 lines
4.7 KiB
YAML
Raw Normal View History

name: Test
on:
push:
branches:
- master
pull_request:
env:
ELVISH_VERSION: v0.18.0
NUSHELL_VERSION: 0.73.0
jobs:
detect-changes:
runs-on: ubuntu-latest
permissions:
pull-requests: read
# Set job outputs to values from filter step
outputs:
documentation: ${{ steps.filter.outputs.documentation }}
cli: ${{ steps.filter.outputs.cli }}
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: dorny/paths-filter@v2
id: filter
with:
filters: |
documentation:
- '.github/workflows/**'
- 'docs/**'
- '.tool-versions'
cli:
- '.github/workflows/**'
- 'bin/**'
- 'lib/**'
- 'scripts/**'
- 'test/**'
- '.tool-versions'
- 'asdf.elv'
- 'asdf.fish'
- 'asdf.nu'
- 'asdf.sh'
ubuntu:
needs: detect-changes
# only run if
# - changes to cli
if: ${{ needs.detect-changes.outputs.cli == 'true' }}
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Install test dependencies
run: |
2021-11-18 03:05:27 -07:00
sudo add-apt-repository -y ppa:fish-shell/nightly-master
sudo apt-get update
2021-11-18 03:05:27 -07:00
sudo apt-get -y install fish curl
# Create $HOME/bin
mkdir -p "$HOME/bin"
2021-11-18 03:05:27 -07:00
# Download elvish binary and add to path
curl https://dl.elv.sh/linux-amd64/elvish-${{ env.ELVISH_VERSION }}.tar.gz -o elvish-${{ env.ELVISH_VERSION }}.tar.gz
tar xzf elvish-${{ env.ELVISH_VERSION }}.tar.gz
rm elvish-${{ env.ELVISH_VERSION }}.tar.gz
mv elvish-${{ env.ELVISH_VERSION }} "$HOME/bin/elvish"
# Download nushell binary and add to path
curl -L https://github.com/nushell/nushell/releases/download/${{ env.NUSHELL_VERSION }}/nu-${{ env.NUSHELL_VERSION }}-x86_64-unknown-linux-gnu.tar.gz -o nu-${{ env.NUSHELL_VERSION }}-x86_64-unknown-linux-gnu.tar.gz
tar xzf nu-${{ env.NUSHELL_VERSION }}-x86_64-unknown-linux-gnu.tar.gz
rm nu-${{ env.NUSHELL_VERSION }}-x86_64-unknown-linux-gnu.tar.gz
mv nu-${{ env.NUSHELL_VERSION }}-x86_64-unknown-linux-gnu/* "$HOME/bin"
# Add $HOME/bin to path
2021-11-18 03:05:27 -07:00
echo "$HOME/bin" >>"$GITHUB_PATH"
- name: Install bats
run: |
git clone --depth 1 --branch "v$(grep -Eo "^\\s*bats\\s*.*$" ".tool-versions" | cut -d ' ' -f2-)" https://github.com/bats-core/bats-core.git "$HOME/bats-core"
echo "$HOME/bats-core/bin" >>"$GITHUB_PATH"
- name: Run tests
run: bats test
env:
GITHUB_API_TOKEN: ${{ github.token }}
macos:
needs: detect-changes
# only run if
# - changes to cli
if: ${{ needs.detect-changes.outputs.cli == 'true' }}
runs-on: macos-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Install test dependencies
run: brew install coreutils fish elvish nushell
- name: Install bats
run: |
git clone --depth 1 --branch "v$(grep -Eo "^\\s*bats\\s*.*$" ".tool-versions" | cut -d ' ' -f2-)" https://github.com/bats-core/bats-core.git "$HOME/bats-core"
echo "$HOME/bats-core/bin" >>"$GITHUB_PATH"
- name: Run tests
run: bats test
env:
GITHUB_API_TOKEN: ${{ github.token }}
documentation-site:
needs: detect-changes
# only run if
# - changes to documentation
# - pull_request (workflows/docs.yml deploys on main branch)
if: ${{ github.event_name == 'pull_request' && needs.detect-changes.outputs.documentation == 'true' }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
# fetch all commits to get git log info for Vuepress
fetch-depth: 0
# only run steps past here if changes to docs/** directory
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: "18"
- name: Cache dependencies
uses: actions/cache@v3
id: npm-cache
with:
path: |
docs/node_modules
key: ${{ runner.os }}-npm-${{ hashFiles('docs/package-lock.json') }}
restore-keys: |
${{ runner.os }}-npm-
- name: Install dependencies
if: steps.npm-cache.outputs.cache-hit != 'true'
working-directory: docs/
run: npm install
- name: Check errors by biulding Documentation site
working-directory: docs/
run: npm run build