Skip to content

ci: update lint workflow, fix caching #64

ci: update lint workflow, fix caching

ci: update lint workflow, fix caching #64

Workflow file for this run

name: CI
on:
push:
branches: [main]
paths-ignore: ['**/*.md']
pull_request:
paths-ignore: ['**/*.md']
env:
WORK_PATH: /home/runner/work/${{ github.event.repository.name }}/${{ github.event.repository.name }}/
GHA_PATH: ${{ github.event.repository.name }}-gha
jobs:
setup:
runs-on: ubuntu-latest
steps:
- name: Install V
uses: vlang/setup-v@v1.3
with:
check-latest: true
- if: ${{ steps.cache-status.outputs.cache-hit != 'true' }}
name: Add V Version to Environment
run: echo "V_VER=$(v -v)" >> $GITHUB_ENV
- if: ${{ steps.cache-status.outputs.cache-hit != 'true' }}
name: Cache V
uses: actions/cache/save@v3
with:
path: ${{ env.WORK_PATH }}vlang/
key: ${{ runner.os }}-v-${{ env.V_VER }}
lint:
needs: setup
uses: tobealive/bartender/.github/workflows/lint.yml@main
simple-build:
needs: setup
runs-on: ubuntu-latest
strategy:
matrix:
trimming: [null, -skip-unused]
steps:
- name: Restore V Cache
uses: actions/cache/restore@v3
with:
path: ${{ env.WORK_PATH }}vlang/
key: ${{ runner.os }}-v-
fail-on-cache-miss: true
- name: Setup V
uses: vlang/setup-v@v1.3
- name: Checkout ${{ github.event.repository.name }}
uses: actions/checkout@v3
with:
path: ${{ env.GHA_PATH }}
- name: ${{ matrix.trimming }} build
run: v -cg -shared ${{ matrix.trimming }} ${{ env.GHA_PATH }}
test:
needs: simple-build
runs-on: ubuntu-latest
steps:
- name: Restore V Cache
uses: actions/cache/restore@v3
with:
path: ${{ env.WORK_PATH }}vlang/
key: ${{ runner.os }}-v-
fail-on-cache-miss: true
- name: Setup V
uses: vlang/setup-v@v1.3
- name: Checkout ${{ github.event.repository.name }}
uses: actions/checkout@v3
with:
path: ${{ env.GHA_PATH }}
- name: Run tests
run: v test ${{ env.GHA_PATH }}
setup-clang:
needs: [lint, test]
runs-on: ubuntu-latest
steps:
- name: Check if LLVM and Clang is cached
id: check-llvm-cache
uses: actions/cache/restore@v3
with:
path: ${{ env.WORK_PATH }}llvm
key: llvm-15
- if: ${{ steps.check-llvm-cache.outputs.cache-hit != 'true' }}
name: Install LLVM and Clang
uses: KyleMayes/install-llvm-action@v1
with:
version: '15'
- if: ${{ steps.check-llvm-cache.outputs.cache-hit != 'true' }}
name: Cache LLVM and Clang
uses: actions/cache/save@v3
with:
path: ${{ env.WORK_PATH }}llvm
key: llvm-15
different-compilers:
needs: setup-clang
runs-on: ubuntu-latest
strategy:
matrix:
compiler: [gcc, clang]
trimming: [null, -skip-unused]
optimization: [null, -prod]
steps:
- name: Restore V Cache
uses: actions/cache/restore@v3
with:
path: ${{ env.WORK_PATH }}vlang/
key: ${{ runner.os }}-v-
fail-on-cache-miss: true
- name: Setup V
uses: vlang/setup-v@v1.3
- if: ${{ matrix.compiler == 'gcc' }}
name: Setup GCC
run: |
sudo apt-get update
sudo apt-get install --quiet -y build-essential
- if: ${{ matrix.compiler == 'clang' }}
name: Restore LLVM and Clang Cache
uses: actions/cache/restore@v3
with:
path: ${{ env.WORK_PATH }}llvm
key: llvm-15
fail-on-cache-miss: true
- if: ${{ matrix.compiler == 'clang' }}
name: Setup LLVM and Clang
uses: KyleMayes/install-llvm-action@v1
with:
version: '15'
cached: true
- name: Checkout ${{ github.event.repository.name }}
uses: actions/checkout@v3
with:
path: ${{ env.GHA_PATH }}
- if: ${{ matrix.compiler == 'clang' }}
name: ${{ matrix.compiler }} ${{ matrix.trimming }} build
run: v -cg -shared -cc ${{ matrix.compiler }} ${{ matrix.trimming }} ${{ env.GHA_PATH }}
- if: ${{ matrix.compiler == 'gcc' }}
name: ${{ matrix.compiler }} ${{ matrix.trimming }} ${{ matrix.optimization }} build
run: v -cg -shared -cc ${{ matrix.compiler }} ${{ matrix.trimming }} ${{ matrix.optimization }} ${{ env.GHA_PATH }}
clang-sanitizers:
needs: different-compilers
runs-on: ubuntu-latest
strategy:
matrix:
sanitizer: [address, memory, undefined, leak] # TODO: thread sanitizer was removed due to strange warnings. It should be fixed and turned on.
steps:
- name: Restore V Cache
uses: actions/cache/restore@v3
with:
path: ${{ env.WORK_PATH }}vlang/
key: ${{ runner.os }}-v-
fail-on-cache-miss: true
- name: Setup V
uses: vlang/setup-v@v1.3
- name: Restore LLVM and Clang Cache
uses: actions/cache/restore@v3
with:
path: ${{ env.WORK_PATH }}llvm
key: llvm-15
fail-on-cache-miss: true
- name: Setup LLVM and Clang
uses: KyleMayes/install-llvm-action@v1
with:
version: '15'
cached: true
- name: Checkout ${{ github.event.repository.name }}
uses: actions/checkout@v3
with:
path: ${{ env.GHA_PATH }}
- name: Clang ${{ matrix.sanitizer }} sanitizer
run: v -cc clang -cflags -fsanitize=${{ matrix.sanitizer }} test ${{ env.GHA_PATH }}
gcc-sanitizers:
needs: different-compilers
runs-on: ubuntu-latest
strategy:
matrix:
sanitizer: [leak] # TODO: thread sanitizer was removed due to strange warnings. It should be fixed and turned on.
steps:
- name: Restore V Cache
uses: actions/cache/restore@v3
with:
path: ${{ env.WORK_PATH }}vlang/
key: ${{ runner.os }}-v-
fail-on-cache-miss: true
- name: Setup V
uses: vlang/setup-v@v1.3
- name: Set up GCC
run: |
sudo apt-get update
sudo apt-get install --quiet -y build-essential
- name: Checkout ${{ github.event.repository.name }}
uses: actions/checkout@v3
with:
path: ${{ env.GHA_PATH }}
- name: GCC ${{ matrix.sanitizer }} sanitizer
run: v -cc gcc -cflags -fsanitize=${{ matrix.sanitizer }} test ${{ env.GHA_PATH }}
gcc-address-sanitizers:
needs: different-compilers
runs-on: ubuntu-latest
steps:
- name: Restore V Cache
uses: actions/cache/restore@v3
with:
path: ${{ env.WORK_PATH }}vlang/
key: ${{ runner.os }}-v-
fail-on-cache-miss: true
- name: Setup V
uses: vlang/setup-v@v1.3
- name: Set up GCC
run: |
sudo apt-get update
sudo apt-get install --quiet -y build-essential
- name: Checkout ${{ github.event.repository.name }}
uses: actions/checkout@v3
with:
path: ${{ env.GHA_PATH }}
- name: GCC address sanitizer
run: v -cc gcc -cflags -fsanitize=address -cflags -fsanitize-address-use-after-scope -cflags -fsanitize=pointer-compare -cflags -fsanitize=pointer-subtract test ${{ env.GHA_PATH }}
gcc-undefined-sanitizers:
needs: different-compilers
runs-on: ubuntu-latest
steps:
- name: Restore V Cache
uses: actions/cache/restore@v3
with:
path: ${{ env.WORK_PATH }}vlang/
key: ${{ runner.os }}-v-
fail-on-cache-miss: true
- name: Setup V
uses: vlang/setup-v@v1.3
- name: Set up GCC
run: |
sudo apt-get update
sudo apt-get install --quiet -y build-essential
- name: Checkout ${{ github.event.repository.name }}
uses: actions/checkout@v3
with:
path: ${{ env.GHA_PATH }}
- name: GCC undefined sanitizer
run: v -cc gcc -cflags -fsanitize=undefined -cflags -fsanitize=shift -cflags -fsanitize=shift-exponent -cflags -fsanitize=shift-base -cflags -fsanitize=integer-divide-by-zero -cflags -fsanitize=unreachable -cflags -fsanitize=vla-bound -cflags -fsanitize=null -cflags -fsanitize=return -cflags -fsanitize=signed-integer-overflow -cflags -fsanitize=bounds -cflags -fsanitize=bounds-strict -cflags -fsanitize=alignment -cflags -fsanitize=object-size -cflags -fsanitize=float-divide-by-zero -cflags -fsanitize=float-cast-overflow -cflags -fsanitize=nonnull-attribute -cflags -fsanitize=returns-nonnull-attribute -cflags -fsanitize=bool -cflags -fsanitize=enum -cflags -fsanitize=vptr -cflags -fsanitize=pointer-overflow -cflags -fsanitize=builtin test ${{ env.GHA_PATH }}