Implement os:chmod
#292
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
pull_request: | |
defaults: | |
run: | |
# PowerShell's behavior for -flag=value is undesirable, so run all commands with bash. | |
shell: bash | |
jobs: | |
test: | |
name: Run tests | |
strategy: | |
matrix: | |
os: [ubuntu, macos, windows] | |
go-version: [1.20.x] | |
include: | |
# Test old supported Go version | |
- os: ubuntu | |
go-version: 1.19.x | |
env: | |
ELVISH_TEST_TIME_SCALE: 20 | |
runs-on: ${{ matrix.os }}-latest | |
steps: | |
# autocrlf is problematic for fuzz testdata. | |
- name: Turn off autocrlf | |
if: matrix.os == 'windows' | |
run: git config --global core.autocrlf false | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- name: Set up cache | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/go/pkg/mod | |
~/.cache/go-build | |
~/Library/Caches/go-build | |
~/AppData/Local/go-build | |
key: test/${{ matrix.os }}/${{ matrix.go-version }}/${{ hashFiles('go.sum') }}/${{ github.sha }} | |
restore-keys: test/${{ matrix.os }}/${{ matrix.go-version }}/${{ hashFiles('go.sum') }}/ | |
- name: Set up Go | |
uses: actions/setup-go@v3 | |
with: | |
go-version: ${{ matrix.go-version }} | |
- name: Test with race detection | |
run: | | |
go test -race ./... | |
cd website; go test -race ./... | |
- name: Set ostype to ${{ matrix.os }} | |
run: echo ostype=${{ matrix.os }} >> $GITHUB_ENV | |
- name: Set ostype to linux | |
if: matrix.os == 'ubuntu' | |
run: echo ostype=linux >> $GITHUB_ENV | |
- name: Generate test coverage | |
if: matrix.go-version == '1.20.x' | |
run: go test -coverprofile=cover -coverpkg=./pkg/... ./pkg/... | |
- name: Save test coverage | |
if: matrix.go-version == '1.20.x' | |
uses: actions/upload-artifact@v3 | |
with: | |
name: cover-${{ env.ostype }} | |
path: cover | |
# The purpose of running benchmarks in GitHub Actions is primarily to ensure | |
# that the benchmark code runs and doesn't crash. GitHub Action runners don't | |
# have a stable enough environment to produce reliable benchmark numbers. | |
benchmark: | |
name: Run benchmarks | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- name: Set up Go | |
uses: actions/setup-go@v3 | |
with: | |
go-version: 1.20.x | |
- name: Run benchmarks | |
run: go test -bench=. -run='^$' ./... | |
upload-coverage: | |
name: Upload test coverage | |
strategy: | |
matrix: | |
ostype: [linux, macos, windows] | |
needs: test | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- name: Download test coverage | |
uses: actions/download-artifact@v3 | |
with: | |
name: cover-${{ matrix.ostype }} | |
- name: Upload coverage to codecov | |
uses: codecov/codecov-action@v3 | |
with: | |
files: ./cover | |
flags: ${{ matrix.ostype }} | |
checks: | |
name: Run checks | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- name: Set up Go | |
uses: actions/setup-go@v3 | |
with: | |
go-version: 1.20.x | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.x' | |
- name: Install tools | |
run: | | |
go install golang.org/x/tools/cmd/stringer@latest | |
go install golang.org/x/tools/cmd/goimports@latest | |
# Keep the versions of staticcheck and codespell in sync with CONTRIBUTING.md | |
go install honnef.co/go/tools/cmd/[email protected] | |
pip install --user codespell==2.2.5 | |
- name: Run checks | |
run: make all-checks | |
check-rellinks: | |
name: Check relative links in website | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- name: Set up Go | |
uses: actions/setup-go@v3 | |
with: | |
go-version: 1.20.x | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.x' | |
- name: Install Python dependency | |
run: pip3 install beautifulsoup4 | |
- name: Check relative links | |
run: make -C website check-rellinks | |
lsif: | |
name: Upload SourceGraph LSIF | |
if: github.repository == 'elves/elvish' && github.event_name == 'push' | |
runs-on: ubuntu-latest | |
container: sourcegraph/lsif-go:latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- name: Generate LSIF data | |
run: lsif-go | |
- name: Upload LSIF data | |
run: src lsif upload -github-token=${{ secrets.GITHUB_TOKEN }} -ignore-upload-failure |