Break out long case-block into its own function. #4124
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: | |
branches: | |
- master | |
- main | |
pull_request: | |
branches: | |
- master | |
- main | |
workflow_dispatch: | |
env: | |
BOT_USER: "Deployment Bot" | |
BOT_EMAIL: "[email protected]" | |
GHA_MACHINE_TYPE: "n2-standard-8" | |
DEBIAN_FRONTEND: "noninteractive" | |
VERIBLE_BINDIR: "/tmp/verible-bin" | |
jobs: | |
VerifyFormatting: | |
container: ubuntu:jammy | |
runs-on: [self-hosted, Linux, X64, gcp-custom-runners] | |
steps: | |
- name: Cancel previous | |
uses: styfle/[email protected] | |
with: | |
access_token: ${{ github.token }} | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Install Dependencies | |
run: | | |
apt -qqy update | |
apt -qq -y install clang-format git | |
clang-format --version | |
- name: Run formatting style check | |
run: | | |
./.github/bin/run-clang-format.sh | |
./.github/bin/check-potential-problems.sh | |
- name: 📤 Upload performance graphs | |
uses: actions/upload-artifact@v2 | |
if: success() || failure() | |
with: | |
name: "diag" | |
path: "**/plot_*.svg" | |
ClangTidy: | |
container: ubuntu:jammy | |
runs-on: [self-hosted, Linux, X64, gcp-custom-runners] | |
env: | |
GHA_MACHINE_TYPE: "n2-standard-4" | |
steps: | |
- name: Cancel previous | |
uses: styfle/[email protected] | |
with: | |
access_token: ${{ github.token }} | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Install Dependencies | |
run: | | |
apt -qqy update | |
apt -qq -y install clang-tidy-11 clang-tidy-14 build-essential git wget | |
source ./.github/settings.sh | |
./.github/bin/install-bazel.sh | |
- name: Create Cache Timestamp | |
id: cache_timestamp | |
uses: nanzm/[email protected] | |
with: | |
format: 'YYYY-MM-DD-HH-mm-ss' | |
- name: Retrieve cached results | |
uses: actions/cache@v3 | |
with: | |
path: | | |
/root/.cache/clang-tidy | |
/root/.cache/bazel | |
key: clang-tidy-${{ steps.cache_timestamp.outputs.time }} | |
restore-keys: clang-tidy- | |
- name: Run clang tidy | |
run: | | |
echo "::group::Make Compilation DB" | |
.github/bin/make-compilation-db.sh | |
wc -l compile_commands.json | |
echo "::endgroup::" | |
# For runtime references, use clang-tidy 11, everything else: latest. | |
CLANG_TIDY=clang-tidy-11 ./.github/bin/run-clang-tidy-cached.cc --checks="-*,google-runtime-references" \ | |
|| ( cat verible_clang-tidy.out ; exit 1) | |
CLANG_TIDY=clang-tidy-14 ./.github/bin/run-clang-tidy-cached.cc \ | |
|| ( cat verible_clang-tidy.out ; exit 1) | |
- name: 📤 Upload performance graphs | |
uses: actions/upload-artifact@v2 | |
if: success() || failure() | |
with: | |
name: "diag" | |
path: "**/plot_*.svg" | |
Check: | |
container: ubuntu:jammy | |
runs-on: [self-hosted, Linux, X64, gcp-custom-runners] | |
strategy: | |
fail-fast: false | |
matrix: | |
mode: | |
- test | |
- test-nortti | |
- test-c++20 | |
- test-c++23 | |
- smoke-test | |
#- smoke-test-analyzer #issue: #2046 | |
- asan | |
- asan-clang | |
- compile | |
- compile-clang | |
- compile-static | |
- compile-static-clang | |
- coverage | |
- clean | |
arch: | |
- x86_64 | |
- arm64 | |
exclude: | |
- mode: test-nortti | |
arch: arm64 | |
- mode: test-c++20 | |
arch: arm64 | |
- mode: test-c++23 | |
arch: arm64 | |
- mode: asan | |
arch: arm64 | |
- mode: asan-clang | |
arch: arm64 | |
- mode: coverage | |
arch: arm64 | |
env: | |
MODE: ${{ matrix.mode }} | |
ARCH: ${{ matrix.arch }} | |
GHA_MACHINE_TYPE: "${{ matrix.arch == 'arm64' && 't2a-standard-8' || 'n2-standard-8' }}" | |
name: ${{ matrix.arch }} ${{ matrix.mode }} | |
steps: | |
- name: Cancel previous | |
uses: styfle/[email protected] | |
with: | |
access_token: ${{ github.token }} | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
with: | |
# Download complete repository + tags | |
fetch-depth: 0 | |
- name: Create Cache Timestamp | |
id: cache_timestamp | |
uses: nanzm/[email protected] | |
with: | |
format: 'YYYY-MM-DD-HH-mm-ss' | |
- name: Mount bazel cache | |
uses: actions/cache@v3 | |
if: matrix.mode != 'clean' && matrix.mode != 'coverage' | |
with: | |
path: "/root/.cache/bazel" | |
key: bazelcache3_${{ matrix.arch }}_${{ matrix.mode }}_${{ steps.cache_timestamp.outputs.time }} | |
restore-keys: bazelcache3_${{ matrix.arch }}_${{ matrix.mode }}_ | |
- name: Install Dependencies | |
run: | | |
set -x | |
apt -qqy update | |
apt -qq -y install build-essential wget git python3 python-is-python3 default-jdk cmake python3-pip ripgrep | |
apt -qq -y install gcc-10 g++-10 | |
apt -qq -y install gcc-12 g++-12 | |
apt -qq -y install clang-12 # clang always a particular version. | |
source ./.github/settings.sh | |
# Use newer compiler for c++2x compilation. Also slang needs c++20 | |
./.github/bin/set-compiler.sh $([[ "$MODE" == test-c++2* || "$MODE" == "smoke-test-analyzer" ]] && echo 12 || echo 10) | |
ARCH="$ARCH" ./.github/bin/install-bazel.sh | |
- name: Build Slang | |
if: matrix.mode == 'smoke-test-analyzer' | |
run: | | |
pushd . | |
git clone https://github.com/MikePopoloski/slang.git /tmp/slang | |
cd /tmp/slang | |
git checkout v3.0 # Pin version; current head cmake files in flux | |
cmake -B build | |
cmake --build build -j $(nproc) | |
cmake --install build --strip | |
popd | |
- name: Install Python dependencies | |
if: matrix.mode == 'smoke-test-analyzer' | |
run: | | |
pip3 install mdutils | |
- name: ${{ matrix.mode }} Verible | |
run: ./.github/bin/build-and-test.sh | |
- name: Upload coverage | |
# will show up under https://app.codecov.io/gh/chipsalliance/verible | |
if: matrix.mode == 'coverage' | |
uses: codecov/codecov-action@v2 | |
with: | |
files: bazel-out/_coverage/_coverage_report.dat | |
verbose: true | |
continue-on-error: true | |
- name: Gather and pack binaries | |
if: matrix.mode == 'compile' && matrix.arch == 'x86_64' | |
run: bazel run :install -c fastbuild -- $VERIBLE_BINDIR && tar cfv verible-bin.tar -C $VERIBLE_BINDIR . | |
- name: Upload bazel-bin | |
if: matrix.mode == 'compile' && matrix.arch == 'x86_64' | |
uses: actions/upload-artifact@v2 | |
with: | |
name: verible-bin | |
path: verible-bin.tar | |
- name: 📤 Upload performance graphs | |
uses: actions/upload-artifact@v2 | |
if: success() || failure() | |
with: | |
name: "diag" | |
path: "**/plot_*.svg" | |
KytheVerification: | |
runs-on: ubuntu-20.04 | |
if: false # Currently disabled, need to investigate further | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
with: | |
# Download complete repository + tags | |
fetch-depth: 0 | |
- name: Install Dependencies | |
run: | | |
source ./.github/settings.sh | |
./.github/bin/set-compiler.sh 10 | |
./.github/bin/install-bazel.sh | |
./.github/bin/install-kythe-tools.sh | |
- name: Run Kythe Verification tests | |
run: | | |
source ./.github/settings.sh | |
./.github/bin/verify-kythe-extraction.sh | |
KytheXrefs: | |
runs-on: ubuntu-20.04 | |
if: false # Currently disabled, need to investigate failure. | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
with: | |
# Download complete repository + tags | |
fetch-depth: 0 | |
- name: Install Dependencies | |
run: | | |
source ./.github/settings.sh | |
./.github/bin/set-compiler.sh 10 | |
./.github/bin/install-bazel.sh | |
./.github/bin/install-kythe.sh | |
- name: Extract Verible Kythe xRefs | |
run: | | |
source ./.github/settings.sh | |
./.github/bin/run-kythe.sh | |
- name: 📤 Upload Kythe xRefs to the action artifacts | |
uses: actions/upload-artifact@v2 | |
with: | |
path: kythe_output/*.kzip | |
Matrix: | |
runs-on: ubuntu-latest | |
name: Generate Build matrix | |
outputs: | |
matrix: ${{ steps.generate.outputs.matrix }} | |
steps: | |
- uses: actions/checkout@v3 | |
- id: generate | |
run: ./.github/bin/generate-matrix.py | |
Build: | |
needs: Matrix | |
container: ubuntu:jammy | |
runs-on: [self-hosted, Linux, X64, gcp-custom-runners] | |
# Github actions resources are limited; don't build artifacts for all | |
# platforms on every pull request, only on push. | |
if: ${{github.event_name == 'push'}} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: ${{ fromJson(needs.Matrix.outputs.matrix) }} | |
env: | |
MATRIX_OS: '${{ matrix.os }}:${{ matrix.ver }}' | |
LINK_TYPE: '${{ matrix.link }}' | |
ARCH: '${{ matrix.arch }}' | |
DOCKER_DATA_ROOT: "/root/.docker" | |
GHA_MACHINE_TYPE: "${{ matrix.arch == 'arm64' && 't2a-standard-8' || 'n2-highcpu-8' }}" | |
name: "Build ·${{ matrix.arch }}:${{ matrix.os }}:${{ matrix.ver }}${{ matrix.link == 'static' && ':static' || '' }}" | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
# Download complete repository + tags | |
fetch-depth: 0 | |
- name: Install and setup Docker | |
run: "apt -qqy update && apt -qqy --no-install-recommends install docker.io cgroupfs-mount crun fuse-overlayfs pigz ca-certificates git && cgroupfs-mount" | |
- name: Main script | |
run: | | |
set -x | |
mkdir -p "$DOCKER_DATA_ROOT" | |
dockerd \ | |
-s fuse-overlayfs \ | |
--add-runtime=crun=/usr/bin/crun \ | |
--default-runtime=crun \ | |
--config-file="" \ | |
--data-root=$DOCKER_DATA_ROOT > /dev/null 2>&1 & | |
while ! test -S /var/run/docker.sock; do echo "Waiting for Docker..." && sleep 1; done; docker info | |
trap "kill $(cat /var/run/docker.pid)" EXIT | |
docker pull $MATRIX_OS | |
source ./.github/settings.sh | |
ARCH="$ARCH" LINK_TYPE="$LINK_TYPE" ./releasing/docker-run.sh $MATRIX_OS | |
- name: 📤 Upload artifact | |
uses: actions/upload-artifact@v2 | |
with: | |
path: releasing/out/verible-*.tar.gz | |
- name: 📤 Upload performance graphs | |
uses: actions/upload-artifact@v2 | |
if: success() || failure() | |
with: | |
name: "diag" | |
path: "**/plot_*.svg" | |
MacOsBuildDevTools: | |
runs-on: macos-latest | |
steps: | |
- name: Cancel previous | |
uses: styfle/[email protected] | |
with: | |
access_token: ${{ github.token }} | |
- name: Install Dependencies | |
run: | | |
brew unlink bazelisk | |
brew install llvm bazel@6 | |
echo "CLANG_TIDY=$(brew --prefix llvm)/bin/clang-tidy" >> $GITHUB_ENV | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Create Cache Timestamp | |
id: cache_timestamp | |
uses: nanzm/[email protected] | |
with: | |
format: 'YYYY-MM-DD-HH-mm-ss' | |
- name: Mount bazel cache | |
uses: actions/cache@v3 | |
with: | |
path: | | |
/private/var/tmp/_bazel_runner | |
/Users/runner/.cache/clang-tidy | |
key: clangtidy_macos_${{ steps.cache_timestamp.outputs.time }} | |
restore-keys: clangtidy_macos_ | |
- name: Test Developer tooling scripts | |
run: | | |
# Just a smoke test to make sure developer scripts run on Mac | |
echo "::group::Make Compilation DB" | |
.github/bin/make-compilation-db.sh | |
echo "::endgroup::" | |
# Quick with no checks to be fast (full tidy run in ClangTidy action) | |
.github/bin/run-clang-tidy-cached.cc --checks="-*" | |
MacOsBuild: | |
runs-on: macos-latest | |
steps: | |
- name: Cancel previous | |
uses: styfle/[email protected] | |
with: | |
access_token: ${{ github.token }} | |
- name: Install Dependencies | |
run: | | |
brew unlink bazelisk | |
brew install bazel@6 | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Create Cache Timestamp | |
id: cache_timestamp | |
uses: nanzm/[email protected] | |
with: | |
format: 'YYYY-MM-DD-HH-mm-ss' | |
- name: Mount bazel cache | |
uses: actions/cache@v3 | |
with: | |
path: | | |
/private/var/tmp/_bazel_runner | |
key: bazelcache_macos_${{ steps.cache_timestamp.outputs.time }} | |
restore-keys: bazelcache_macos_ | |
- name: Tests | |
run: bazel test -c opt --noshow_progress --test_output=errors --cxxopt=-Wno-range-loop-analysis //... | |
- name: Build | |
run: bazel build -c opt --noshow_progress --test_output=errors --cxxopt=-Wno-range-loop-analysis :install-binaries | |
- name: Pack up | |
run: | | |
VERSION=$(git describe --match=v*) | |
.github/bin/simple-install.sh verible-${VERSION}-macOS/bin | |
tar cvzf verible-${VERSION}-macOS.tar.gz verible-${VERSION}-macOS | |
- name: 📤 Upload artifact | |
uses: actions/upload-artifact@v2 | |
with: | |
path: verible-*.tar.gz | |
PrepareVSPlugin: | |
container: ubuntu:jammy | |
runs-on: [self-hosted, Linux, X64, gcp-custom-runners] | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Install Dependencies | |
run: | | |
apt -qqy update | |
apt -qq -y install npm nodejs | |
WindowsBuild: | |
runs-on: windows-2019 | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Create Cache Timestamp | |
id: cache_timestamp | |
uses: nanzm/[email protected] | |
with: | |
format: 'YYYY-MM-DD-HH-mm-ss' | |
- name: Mount bazel cache | |
uses: actions/cache@v3 | |
with: | |
path: "c:/users/runneradmin/_bazel_runneradmin" | |
key: bazelcache_windows2_${{ steps.cache_timestamp.outputs.time }} | |
restore-keys: bazelcache_windows2_ | |
- name: Install dependencies | |
run: | | |
choco install bazel --force --version=6.4.0 | |
choco install llvm --force | |
- name: Debug bazel directory settings | |
# We need to explicitly call the bazel binary from choco, otherwise | |
# the default Windows runner seems to run bazelisk(?) and downloads the | |
# latest bazel, which is incompatible. Should be in variable. | |
run: C:/ProgramData/chocolatey/lib/bazel/bazel.exe info | |
- name: Run Tests | |
run: C:/ProgramData/chocolatey/lib/bazel/bazel.exe test --keep_going --noshow_progress --test_output=errors //... | |
- name: Build Verible Binaries | |
run: C:/ProgramData/chocolatey/lib/bazel/bazel.exe build --keep_going --noshow_progress -c opt :install-binaries | |
- name: Prepare release | |
run: | | |
$VERSION = git describe --match=v* | |
C:/ProgramData/chocolatey/lib/bazel/bazel.exe run -c opt :install -- "c:/verible-${VERSION}-win64" | |
7z a "verible-${VERSION}-win64.zip" "c:/verible-${VERSION}-win64" | |
- name: 📤 Upload artifact | |
uses: actions/upload-artifact@v2 | |
with: | |
path: verible-*.zip | |
# We need to shut down bazel to let go of the filedescriptors in the | |
# cache directory. Because of strange filesystem semantics on Windows, this | |
# prevents packaging up the cache. | |
- name: Stop Bazel | |
run: | | |
C:/ProgramData/chocolatey/lib/bazel/bazel.exe shutdown | |
# The cache pack/restore has issues with these symbolic links | |
rm c:/users/runneradmin/_bazel_runneradmin/*/install | |
rm c:/users/runneradmin/_bazel_runneradmin/*/java.log | |
Release: | |
needs: [ Check, Build, MacOsBuild, WindowsBuild, PrepareVSPlugin ] | |
runs-on: ubuntu-20.04 | |
name: 📦 Release | |
if: ${{github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master')}} | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
# Download complete repository + tags | |
fetch-depth: 0 | |
- name: 📥 Download artifacts | |
uses: actions/download-artifact@v3 | |
- name: Generate and apply TAG | |
run: | | |
git config --local user.name "$BOT_USER" | |
git config --local user.email "$BOT_EMAIL" | |
# Create a tag of form v0.0-183-gdf2b162-20191112132344 | |
TAG="${TAG:-$(git describe --match=v*)}" | |
git tag "$TAG" || true | |
echo "TAG=$TAG" >> $GITHUB_ENV | |
ls -lah artifact | |
- name: Deploy release and assets | |
uses: svenstaro/upload-release-action@v2 | |
with: | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
file: artifact/verible*.{tar.gz,zip} | |
tag: ${{ env.TAG }} | |
overwrite: true | |
file_glob: true | |
- name: Publish VSCode extension | |
env: | |
VSC_MARKETPLACE_TOKEN: ${{ secrets.VSC_MARKETPLACE_TOKEN }} | |
run: | | |
cd verilog/tools/ls/vscode | |
npm install | |
# install vsce globally | |
npm install -g @vscode/vsce | |
# Patch the JSON file to contain our current git tag+commit | |
VERSION=$(git describe | sed 's|v\([^-]\+\)-\([[:digit:]]\+\).*|\1.\2|') | |
sed -i 's|\(.*version.*\): "\([^"]\+\)"|\1: "'${VERSION}'"|g' package.json | |
sed -i 's|\(.*tag.*\): "\([^"]\+\)"|\1: "'${TAG}'"|g' package.json | |
vsce publish -p ${VSC_MARKETPLACE_TOKEN} | |
GhPages: | |
name: Build and deploy GitHub pages | |
needs: [Check] | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: verible-bin | |
- name: Extract Verible binaries | |
run: mkdir -p $VERIBLE_BINDIR && tar xvf verible-bin.tar -C $VERIBLE_BINDIR | |
- name: Set up things for GitHub Pages deployment | |
run: ./.github/bin/github-pages-setup.sh $VERIBLE_BINDIR | |
- name: Deployment | |
if: github.ref == 'refs/heads/master' && github.event_name != 'pull_request' | |
uses: JamesIves/[email protected] | |
with: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
BRANCH: gh-pages | |
FOLDER: /tmp/pages | |
CLEAN: true |