ci: update paths #62
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: | |
paths-ignore: ['**/*.md'] | |
pull_request: | |
paths-ignore: ['**/*.md'] | |
env: | |
REPO: ${{ github.event.repository.name }} | |
# The path where the module would be installed with `v install <giturl>` | |
MOD_PATH: ~/.vmodules/bartender | |
jobs: | |
setup: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Cache Status | |
id: cache-status | |
uses: actions/cache@v3 | |
with: | |
path: vlang | |
key: ${{ runner.os }}-v- | |
- if: ${{ steps.cache-status.outputs.cache-hit != 'true' }} | |
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: 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 | |
steps: | |
- name: Restore V Cache | |
uses: actions/cache/restore@v3 | |
with: | |
path: vlang | |
key: ${{ runner.os }}-v- | |
fail-on-cache-miss: true | |
- name: Setup V | |
uses: vlang/setup-v@v1.3 | |
- name: Checkout ${{ env.REPO }} | |
uses: actions/checkout@v3 | |
with: | |
path: ${{ env.REPO }} | |
- name: Copy ${{ env.REPO }} to ${{ env.MOD_PATH }} | |
run: cp -r ${{ env.REPO }} ${{ env.MOD_PATH }} | |
- name: Build | |
run: v -cg -shared ${{ env.MOD_PATH }} | |
test: | |
needs: simple-build | |
runs-on: ubuntu-latest | |
steps: | |
- name: Restore V Cache | |
uses: actions/cache/restore@v3 | |
with: | |
path: vlang | |
key: ${{ runner.os }}-v- | |
fail-on-cache-miss: true | |
- name: Setup V | |
uses: vlang/setup-v@v1.3 | |
- name: Checkout ${{ env.REPO }} | |
uses: actions/checkout@v3 | |
with: | |
path: ${{ env.REPO }} | |
- name: Copy ${{ env.REPO }} to ${{ env.MOD_PATH }} | |
run: cp -r ${{ env.REPO }} ${{ env.MOD_PATH }} | |
- name: Run tests | |
run: v test ${{ env.MOD_PATH }} | |
different-compilers: | |
needs: simple-build | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
compiler: [gcc, clang] | |
trimming: ['', -skip-unused] | |
optimization: ['', -prod] | |
steps: | |
- name: Restore V Cache | |
uses: actions/cache/restore@v3 | |
with: | |
path: vlang | |
key: ${{ runner.os }}-v- | |
fail-on-cache-miss: true | |
- name: Setup V | |
uses: vlang/setup-v@v1.3 | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
path: ${{ env.REPO }} | |
- name: Copy ${{ env.REPO }} to ${{ env.MOD_PATH }} | |
run: cp -r ${{ env.REPO }} ${{ env.MOD_PATH }} | |
- name: ${{ matrix.compiler }} ${{ matrix.trimming }} ${{ matrix.optimization }} build | |
run: v -cg -shared -cc ${{ matrix.compiler }} ${{ matrix.trimming }} ${{ matrix.optimization }} ${{ env.MOD_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: vlang | |
key: ${{ runner.os }}-v- | |
fail-on-cache-miss: true | |
- name: Setup V | |
uses: vlang/setup-v@v1.3 | |
- name: Checkout ${{ env.REPO }} | |
uses: actions/checkout@v3 | |
with: | |
path: ${{ env.REPO }} | |
- name: Copy ${{ env.REPO }} to ${{ env.MOD_PATH }} | |
run: cp -r ${{ env.REPO }} ${{ env.MOD_PATH }} | |
- name: Clang ${{ matrix.sanitizer }} sanitizer | |
run: v -cc clang -cflags -fsanitize=${{ matrix.sanitizer }} test ${{ env.MOD_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: 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 ${{ env.REPO }} | |
uses: actions/checkout@v3 | |
with: | |
path: ${{ env.REPO }} | |
- name: Copy ${{ env.REPO }} to ${{ env.MOD_PATH }} | |
run: cp -r ${{ env.REPO }} ${{ env.MOD_PATH }} | |
- name: GCC ${{ matrix.sanitizer }} sanitizer | |
run: v -cc gcc -cflags -fsanitize=${{ matrix.sanitizer }} test ${{ env.MOD_PATH }} | |
gcc-address-sanitizers: | |
needs: different-compilers | |
runs-on: ubuntu-latest | |
steps: | |
- name: Restore V Cache | |
uses: actions/cache/restore@v3 | |
with: | |
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 ${{ env.REPO }} | |
uses: actions/checkout@v3 | |
with: | |
path: ${{ env.REPO }} | |
- 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.MOD_PATH }} | |
gcc-undefined-sanitizers: | |
needs: different-compilers | |
runs-on: ubuntu-latest | |
steps: | |
- name: Restore V Cache | |
uses: actions/cache/restore@v3 | |
with: | |
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 ${{ env.REPO }} | |
uses: actions/checkout@v3 | |
with: | |
path: ${{ env.REPO }} | |
- name: Copy ${{ env.REPO }} to ${{ env.MOD_PATH }} | |
run: cp -r ${{ env.REPO }} ${{ env.MOD_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.MOD_PATH }} |