ci: update and cleanup the ci related code (#19541)

This commit is contained in:
Turiiya 2023-10-10 20:39:00 +02:00 committed by GitHub
parent c4ee940047
commit 3e50ba0856
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 186 additions and 191 deletions

33
.github/workflows/code_ci.yml vendored Normal file
View file

@ -0,0 +1,33 @@
name: Code CI
on:
push:
paths-ignore:
- '**.md'
- '**.yml'
- '!**/code_ci.yml'
- '!**/linux_ci.yml'
- '!**/macos_ci.yml'
- '!**/windows_ci.yml'
pull_request:
paths-ignore:
- '**.md'
- '**.yml'
- '!**/code_ci.yml'
- '!**/linux_ci.yml'
- '!**/macos_ci.yml'
- '!**/windows_ci.yml'
concurrency:
group: code-ci-${{ github.event.pull_request.number || github.sha }}
cancel-in-progress: true
jobs:
linux:
uses: ./.github/workflows/linux_ci.yml
macos:
uses: ./.github/workflows/macos_ci.yml
windows:
uses: ./.github/workflows/windows_ci.yml

View file

@ -1,21 +1,10 @@
name: Code CI Linux
name: CI Linux
on:
push:
paths-ignore:
- "**.md"
- "**.yml"
pull_request:
paths-ignore:
- "**.md"
- "**.yml"
concurrency:
group: build-ci-linux-${{ github.event.pull_request.number || github.sha }}
cancel-in-progress: true
workflow_call:
jobs:
ubuntu-tcc:
tcc:
runs-on: ubuntu-20.04
if: github.event_name != 'push' || github.event.ref == 'refs/heads/master' || github.event.repository.full_name != 'vlang/v'
timeout-minutes: 121
@ -28,7 +17,7 @@ jobs:
sudo apt-get update
sudo apt-get install --quiet -y libssl-dev sqlite3 libsqlite3-dev valgrind
sudo apt-get install --quiet -y libfreetype6-dev libxi-dev libxcursor-dev libgl-dev
## The following is needed for examples/wkhtmltopdf.v
# The following is needed for examples/wkhtmltopdf.v
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.focal_amd64.deb
sudo apt-get install --quiet -y xfonts-75dpi xfonts-base
sudo apt-get install --quiet -y expect
@ -103,7 +92,7 @@ jobs:
- name: Test readline
run: ./v test examples/readline/
ubuntu-tcc-boehm-gc:
tcc-boehm-gc:
runs-on: ubuntu-20.04
if: github.event_name != 'push' || github.event.ref == 'refs/heads/master' || github.event.repository.full_name != 'vlang/v'
timeout-minutes: 121
@ -117,7 +106,7 @@ jobs:
sudo apt-get install --quiet -y libssl-dev sqlite3 libsqlite3-dev valgrind
sudo apt-get install --quiet -y libfreetype6-dev libxi-dev libxcursor-dev libgl-dev
sudo apt-get install --quiet -y libgc-dev
## The following is needed for examples/wkhtmltopdf.v
# The following is needed for examples/wkhtmltopdf.v
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.focal_amd64.deb
sudo apt-get install --quiet -y xfonts-75dpi xfonts-base
sudo dpkg -i wkhtmltox_0.12.6-1.focal_amd64.deb
@ -160,7 +149,7 @@ jobs:
./testcase_leak 2>leaks.txt
[ "$(stat -c %s leaks.txt)" = "0" ]
ubuntu:
gcc:
runs-on: ubuntu-20.04
if: github.event_name != 'push' || github.event.ref == 'refs/heads/master' || github.event.repository.full_name != 'vlang/v'
timeout-minutes: 121
@ -185,8 +174,8 @@ jobs:
# run: ./v test-all
# - name: Test v binaries
# run: ./v build-vbinaries
## - name: Test v->js
## run: ./v -o hi.js examples/hello_v_js.v && node hi.js
# - name: Test v->js
# run: ./v -o hi.js examples/hello_v_js.v && node hi.js
# - name: Build Vorum
# run: git clone --depth 1 https://github.com/vlang/vorum && cd vorum && ../v . && cd ..
- name: Build vpm
@ -255,21 +244,20 @@ jobs:
echo "Building it..."
../../vprod -backend native -o 1m 1m.v
echo "Running it..."
# ./1m
ls
- name: compile vdoctor.v with -skip-unused and -prod
run: ./v -showcc -skip-unused -cc gcc -prod cmd/tools/vdoctor.v
- name: compile vup.v with -skip-unused and -prod
run: ./v -showcc -skip-unused -cc gcc -prod cmd/tools/vup.v
# ./1m
# run: echo "TODO" #cd examples/native && ../../v -native hello_world.v && ./hello_world
# - run: cd examples/native && ../../v -native hello_world.v && ./hello_world
# - name: Coveralls GitHub Action
# uses: coverallsapp/github-action@v1.0.1
# with:
# github-token: ${{ secrets.GITHUB_TOKEN }}
ubuntu-clang:
clang:
runs-on: ubuntu-20.04
if: github.event_name != 'push' || github.event.ref == 'refs/heads/master' || github.event.repository.full_name != 'vlang/v'
timeout-minutes: 121
@ -359,8 +347,7 @@ jobs:
echo "Running it..."
ls
# ubuntu-autofree-selfcompile:
# autofree-selfcompile:
# runs-on: ubuntu-20.04
# if: github.event_name != 'push' || github.event.ref == 'refs/heads/master' || github.event.repository.full_name != 'vlang/v'
# timeout-minutes: 121
@ -373,8 +360,7 @@ jobs:
# - name: V self compilation with -autofree
# run: ./v -o v2 -autofree cmd/v && ./v2 -o v3 -autofree cmd/v && ./v3 -o v4 -autofree cmd/v
# ubuntu-musl:
# musl:
# runs-on: ubuntu-20.04
# if: github.event_name != 'push' || github.event.ref == 'refs/heads/master' || github.event.repository.full_name != 'vlang/v'
# timeout-minutes: 121
@ -390,8 +376,8 @@ jobs:
# run: echo $VFLAGS && make -j4 && ./v -cg -o v cmd/v
# # - name: Test v binaries
# # run: ./v build-vbinaries
# ## - name: Test v->js
# ## run: ./v -o hi.js examples/hello_v_js.v && node hi.js
# # - name: Test v->js
# # run: ./v -o hi.js examples/hello_v_js.v && node hi.js
# - name: quick debug
# run: ./v -stats vlib/strconv/format_test.v
# - name: Self tests

View file

@ -1,21 +1,10 @@
name: Code CI macos
name: CI macOS
on:
push:
paths-ignore:
- "**.md"
- "**.yml"
pull_request:
paths-ignore:
- "**.md"
- "**.yml"
concurrency:
group: build-ci-macos-${{ github.event.pull_request.number || github.sha }}
cancel-in-progress: true
workflow_call:
jobs:
macos:
clang:
runs-on: macOS-12
if: github.event_name != 'push' || github.event.ref == 'refs/heads/master' || github.event.repository.full_name != 'vlang/v'
timeout-minutes: 121
@ -52,8 +41,8 @@ jobs:
# run: ./v test-all
# - name: Test v binaries
# run: ./v build-vbinaries
## - name: Test v->js
## run: ./v -o hi.js examples/hello_v_js.v && node hi.js
# - name: Test v->js
# run: ./v -o hi.js examples/hello_v_js.v && node hi.js
- name: Verify `v test` works
run: |
echo $VFLAGS

View file

@ -1,21 +1,10 @@
name: Code CI Windows
name: CI Windows
on:
push:
paths-ignore:
- "**.md"
- "**.yml"
pull_request:
paths-ignore:
- "**.md"
- "**.yml"
concurrency:
group: build-ci-windows-${{ github.event.pull_request.number || github.sha }}
cancel-in-progress: true
workflow_call:
jobs:
windows-gcc:
gcc:
runs-on: windows-2019
if: github.event_name != 'push' || github.event.ref == 'refs/heads/master' || github.event.repository.full_name != 'vlang/v'
timeout-minutes: 181
@ -83,7 +72,7 @@ jobs:
- name: compile vup.v with -skip-unused and -prod
run: ./v -showcc -skip-unused -prod cmd/tools/vup.v
windows-msvc:
msvc:
runs-on: windows-2019
if: github.event_name != 'push' || github.event.ref == 'refs/heads/master' || github.event.repository.full_name != 'vlang/v'
timeout-minutes: 181
@ -110,9 +99,8 @@ jobs:
echo $VFLAGS
./v cmd/tools/test_if_v_test_system_works.v
./cmd/tools/test_if_v_test_system_works
### TODO: test-cleancode fails with msvc. Investigate why???
## - name: All code is formatted
## run: ./v test-cleancode
- name: All code is formatted
run: ./v test-cleancode
- name: Test pure V math module
run: ./v -exclude @vlib/math/*.c.v test vlib/math/
- name: Self tests
@ -130,7 +118,7 @@ jobs:
- name: v2 self compilation
run: .\v.exe -o v2.exe cmd/v && .\v2.exe -o v3.exe cmd/v
windows-tcc:
tcc:
runs-on: windows-2019
if: github.event_name != 'push' || github.event.ref == 'refs/heads/master' || github.event.repository.full_name != 'vlang/v'
timeout-minutes: 121
@ -160,8 +148,7 @@ jobs:
.\v.exe cmd/tools/test_if_v_test_system_works.v
.\cmd\tools\test_if_v_test_system_works.exe
- name: Verify `v vlib/v/gen/c/coutput_test.v` works
run: |
.\v.exe vlib/v/gen/c/coutput_test.v
run: .\v.exe vlib/v/gen/c/coutput_test.v
- name: Make sure running TCC64 instead of TCC32
run: ./v test .github\workflows\make_sure_ci_run_with_64bit_compiler_test.v
- name: Test ./v doc -v clipboard *BEFORE building tools*
@ -185,42 +172,42 @@ jobs:
- name: v2 self compilation with -gc boehm
run: .\v.exe -o v2.exe -gc boehm cmd/v && .\v2.exe -o v3.exe -gc boehm cmd/v && .\v3.exe -o v4.exe -gc boehm cmd/v
## ## tcc32
## - name: Build with make.bat -tcc32
## run: |
## Remove-Item -Recurse -Force .\thirdparty\tcc
## .\v.exe wipe-cache
## .\make.bat -tcc32
## - name: Test new v.c
## run: .\v.exe -o v.c cmd/v && .\thirdparty\tcc\tcc.exe -Werror -g -w -ladvapi32 -bt10 v.c
## - name: v doctor
## run: ./v doctor
##
## - name: Verify `v test` works
## run: |
## .\v.exe cmd/tools/test_if_v_test_system_works.v
## .\cmd\tools\test_if_v_test_system_works.exe
##
## - name: Verify `v vlib/v/gen/c/coutput_test.v` works
## run: |
## .\v.exe vlib/v/gen/c/coutput_test.v
##
## - name: Make sure running TCC32 instead of TCC64
## run: ./v -stats .github\workflows\make_sure_ci_run_with_32bit_compiler_test.v
##
## - name: Test v build-tools
## run: ./v -W build-tools
##
## - name: Test ./v doc clipboard
## run: ./v doc clipboard
##
## - name: Self tests
## run: ./v test-self
## - name: Test v->js
## run: ./v -o hi.js examples/hello_v_js.v && node hi.js
## - name: Test v binaries
## run: ./v build-vbinaries
## - name: Build examples
## run: ./v build-examples
## - name: v2 self compilation
## run: .\v.exe -o v2.exe cmd/v && .\v2.exe -o v3.exe cmd/v
## tcc32
# - name: Build with make.bat -tcc32
# run: |
# Remove-Item -Recurse -Force .\thirdparty\tcc
# .\v.exe wipe-cache
# .\make.bat -tcc32
# - name: Test new v.c
# run: .\v.exe -o v.c cmd/v && .\thirdparty\tcc\tcc.exe -Werror -g -w -ladvapi32 -bt10 v.c
# - name: v doctor
# run: ./v doctor
#
# - name: Verify `v test` works
# run: |
# .\v.exe cmd/tools/test_if_v_test_system_works.v
# .\cmd\tools\test_if_v_test_system_works.exe
#
# - name: Verify `v vlib/v/gen/c/coutput_test.v` works
# run: |
# .\v.exe vlib/v/gen/c/coutput_test.v
#
# - name: Make sure running TCC32 instead of TCC64
# run: ./v -stats .github\workflows\make_sure_ci_run_with_32bit_compiler_test.v
#
# - name: Test v build-tools
# run: ./v -W build-tools
#
# - name: Test ./v doc clipboard
# run: ./v doc clipboard
#
# - name: Self tests
# run: ./v test-self
# - name: Test v->js
# run: ./v -o hi.js examples/hello_v_js.v && node hi.js
# - name: Test v binaries
# run: ./v build-vbinaries
# - name: Build examples
# run: ./v build-examples
# - name: v2 self compilation
# run: .\v.exe -o v2.exe cmd/v && .\v2.exe -o v3.exe cmd/v

View file

@ -13,6 +13,8 @@ import runtime
pub const github_job = os.getenv('GITHUB_JOB')
pub const runner_os = os.getenv('RUNNER_OS') // GitHub runner OS
pub const show_start = os.getenv('VTEST_SHOW_START') == '1'
pub const hide_skips = os.getenv('VTEST_HIDE_SKIP') == '1'
@ -219,18 +221,28 @@ pub fn new_test_session(_vargs string, will_compile bool) TestSession {
skip_files << 'examples/pendulum-simulation/parallel.v'
skip_files << 'examples/pendulum-simulation/parallel_with_iw.v'
skip_files << 'examples/pendulum-simulation/sequential.v'
}
if testing.github_job == 'ubuntu-docker-musl' {
skip_files << 'vlib/net/openssl/openssl_compiles_test.v'
}
if testing.github_job == 'tests-sanitize-memory-clang' {
skip_files << 'vlib/net/openssl/openssl_compiles_test.v'
}
if testing.github_job == 'windows-tcc' {
if testing.github_job == 'tcc' {
// TODO: fix these by adding declarations for the missing functions in the prebuilt tcc
skip_files << 'vlib/net/mbedtls/mbedtls_compiles_test.v'
skip_files << 'vlib/net/ssl/ssl_compiles_test.v'
}
}
if testing.runner_os != 'Linux' || testing.github_job != 'tcc' {
skip_files << 'examples/c_interop_wkhtmltopdf.v' // needs installation of wkhtmltopdf from https://github.com/wkhtmltopdf/packaging/releases
skip_files << 'examples/call_v_from_python/test.v' // the example only makes sense to be compiled, when python is installed
skip_files << 'examples/call_v_from_ruby/test.v' // the example only makes sense to be compiled, when ruby is installed
skip_files << 'vlib/vweb/vweb_app_test.v' // imports the `sqlite` module, which in turn includes sqlite3.h
}
$if !macos {
skip_files << 'examples/macos_tray/tray.v'
}
if testing.github_job == 'ubuntu-docker-musl' {
skip_files << 'vlib/net/openssl/openssl_compiles_test.v'
skip_files << 'vlib/x/ttf/ttf_test.v'
}
if testing.github_job == 'tests-sanitize-memory-clang' {
skip_files << 'vlib/net/openssl/openssl_compiles_test.v'
}
if testing.github_job != 'misc-tooling' {
// These examples need .h files that are produced from the supplied .glsl files,
// using by the shader compiler tools in https://github.com/floooh/sokol-tools-bin/archive/pre-feb2021-api-changes.tar.gz
@ -246,17 +258,6 @@ pub fn new_test_session(_vargs string, will_compile bool) TestSession {
skip_files << 'examples/sokol/sounds/wav_player.v'
skip_files << 'examples/sokol/sounds/simple_sin_tones.v'
}
if testing.github_job != 'ubuntu-tcc' {
skip_files << 'examples/c_interop_wkhtmltopdf.v' // needs installation of wkhtmltopdf from https://github.com/wkhtmltopdf/packaging/releases
skip_files << 'examples/call_v_from_python/test.v' // the example only makes sense to be compiled, when python is installed
skip_files << 'examples/call_v_from_ruby/test.v' // the example only makes sense to be compiled, when ruby is installed
// the ttf_test.v is not interactive, but needs X11 headers to be installed, which is done only on ubuntu-tcc for now
skip_files << 'vlib/x/ttf/ttf_test.v'
skip_files << 'vlib/vweb/vweb_app_test.v' // imports the `sqlite` module, which in turn includes sqlite3.h
}
$if !macos {
skip_files << 'examples/macos_tray/tray.v'
}
// examples/wasm/mandelbrot/mandelbrot.v requires special compilation flags: `-b wasm -os browser`, skip it for now:
skip_files << 'examples/wasm/mandelbrot/mandelbrot.v'

View file

@ -350,11 +350,10 @@ fn main() {
tsession.skip_files << 'vlib/db/pg/pg_orm_test.v'
}
if github_job == 'windows-tcc' {
$if windows {
if github_job == 'tcc' {
tsession.skip_files << 'vlib/v/tests/project_with_cpp_code/compiling_cpp_files_with_a_cplusplus_compiler_test.v'
// TODO: fix these ASAP
tsession.skip_files << 'vlib/net/tcp_test.v'
tsession.skip_files << 'vlib/net/udp_test.v'
}
}
if !os.exists('cmd/tools/builders/wasm_builder') {