mirror of
https://github.com/tj/git-extras.git
synced 2026-09-10 07:26:17 -04:00
For managing the python dependencies, running the unit tests and spellchecker. This makes it easier for everyone to have same environment as CI. Also includes few cosmetic edits for style for the ci.yml
111 lines
3.4 KiB
YAML
111 lines
3.4 KiB
YAML
name: ci
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
pull_request:
|
|
branches: [main]
|
|
jobs:
|
|
lint:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Check out code.
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
- name: 'Get Changed Files'
|
|
id: 'files'
|
|
run: |
|
|
CHANGED_FILES=$(git diff --name-only "${BASE_SHA:-$BEFORE_SHA}...${HEAD_SHA:-$GITHUB_REF}")
|
|
echo "::notice::Changed files: $CHANGED_FILES"
|
|
{
|
|
echo "added_modified<<EOF"
|
|
echo "$CHANGED_FILES"
|
|
echo "EOF"
|
|
} >> "$GITHUB_OUTPUT"
|
|
env:
|
|
BASE_SHA: ${{ github.event.pull_request.base.sha }}
|
|
HEAD_SHA: ${{ github.event.pull_request.head.sha }}
|
|
BEFORE_SHA: "${{ github.event.before }}"
|
|
- uses: 'actions/setup-go@v5'
|
|
with:
|
|
go-version: '1.20'
|
|
- name: 'Install EditorConfig Lint'
|
|
run: go install 'github.com/editorconfig-checker/editorconfig-checker/cmd/editorconfig-checker@latest'
|
|
- name: 'Check EditorConfig Lint'
|
|
run: echo "$FILES" | xargs ~/go/bin/editorconfig-checker
|
|
env:
|
|
# NOTE: use env to pass the output in order to avoid possible injection attacks
|
|
FILES: "${{ steps.files.outputs.added_modified }}"
|
|
- name: Lint and format Python with Ruff
|
|
uses: astral-sh/ruff-action@v1
|
|
|
|
typo:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Check out code.
|
|
uses: actions/checkout@v4
|
|
- name: Install poetry
|
|
run: pip install poetry
|
|
- name: Set up Python
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
cache: 'poetry'
|
|
cache-dependency-path: "tests/pyproject.toml"
|
|
python-version-file: "tests/pyproject.toml"
|
|
- name: Install dependencies
|
|
run: |
|
|
cd tests || exit
|
|
poetry install --only dev
|
|
- name: spell check
|
|
run: |
|
|
cd tests
|
|
git grep --cached -l '' .. | \
|
|
grep -v -e 'History\.md' -e 'AUTHORS' -e 'man/.*\.1' -e 'man/.*\.html' | \
|
|
xargs poetry run codespell --ignore-words=../.github/.ignore_words
|
|
|
|
test:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Install poetry
|
|
run: pip install poetry
|
|
- name: Set up Python
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
cache: 'poetry'
|
|
cache-dependency-path: "tests/pyproject.toml"
|
|
python-version-file: "tests/pyproject.toml"
|
|
- name: Install dependencies
|
|
run: |
|
|
cd tests || exit
|
|
poetry install --only test
|
|
- name: Unit test
|
|
run: |
|
|
cd tests
|
|
poetry run pytest
|
|
|
|
build:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
platform:
|
|
- ubuntu-latest
|
|
- macos-latest
|
|
runs-on: ${{ matrix.platform }}
|
|
steps:
|
|
- name: Check out code.
|
|
uses: actions/checkout@v4
|
|
- name: Linux Install
|
|
if: matrix.platform == 'ubuntu-latest'
|
|
run: sudo apt-get install -y bsdmainutils
|
|
- name: Script
|
|
run: ./check_integrity.sh
|
|
- name: Brew release
|
|
if: matrix.platform == 'macos-latest'
|
|
run: |
|
|
mkdir ../release && git archive --format=tar.gz HEAD > ../release/git-extras-release.tar.gz
|
|
cd ../release
|
|
tar -xzf git-extras-release.tar.gz && make PREFIX=$(pwd) INSTALL_VIA=brew
|
|
./bin/git-extras update | grep "brew upgrade git-extras"
|