ci

package
v1.9.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 21, 2026 License: MIT Imports: 2 Imported by: 0

README

Wireshark CI/CD Pipeline

This is Wireshark's CI/CD pipeline, imported from wireshark/wireshark.

Overview

Wireshark is the world's foremost network protocol analyzer. This pipeline demonstrates comprehensive C/C++ testing and building for a complex network analysis tool.

Pipeline Characteristics

  • Project ID: 7898047
  • Lines of Code: ~392 lines
  • Language: C/C++
  • Features Demonstrated:
    • Cross-platform C/C++ builds
    • Extensive testing (unit, functional, regression)
    • Multiple build configurations
    • Packaging and distribution
    • Documentation generation

Key Features

Comprehensive Testing

Unit tests, functional tests, fuzz testing, and regression testing.

Multi-Platform Support

Builds for Linux, Windows, macOS with different configurations.

Protocol Dissector Testing

Tests thousands of network protocol dissectors.

Security Testing

Fuzz testing and security validation for network parsing.

What You Can Learn

  1. Network tool CI/CD - Building network analysis tools
  2. Security testing - Fuzz testing and security validation
  3. Cross-platform C/C++ - Supporting multiple platforms
  4. Extensive testing - Comprehensive test strategies
  5. Protocol handling - Testing protocol implementations

Source

Building This Example

cat pipeline.go
mkdir my-wireshark-pipeline && cp pipeline.go my-wireshark-pipeline/
cd my-wireshark-pipeline && go mod init example/my-wireshark-pipeline && go mod tidy

Documentation

Index

Constants

This section is empty.

Variables

View Source
var APIReference = pipeline.Job{
	Name:        "API Reference",
	Script:      List("printf \"\\e[0Ksection_start:%s:cmake_section[collapsed=true]\\r\\e[0KRunning CMake\" \"$( date +%s)\"", "cmake -GNinja ..", "printf \"\\e[0Ksection_end:%s:cmake_section\\r\\e[0K\" \"$( date +%s)\"", "ninja wsar_html_zip 2>&1 > doxygen_output.txt | tee doxygen_errors.txt", "mv wsar_html.zip doxygen_{output,errors}.txt ..", "cd ..", "if [ -n \"$MC_DESTINATION_DOCS\" ] ; then mc --quiet cp wsar_html.zip \"$MC_DESTINATION_DOCS/\" ; fi"),
	AfterScript: List("if [ \"$CI_JOB_STATUS\" != \"success\" ]; then exit 0 ; fi"),
	Artifacts: pipeline.Artifacts{
		Paths: List("doxygen_errors.txt", "doxygen_output.txt", "wsar_html.zip"),
	},
}
View Source
var ASanMenagerieFuzz = pipeline.Job{
	Name:   "ASan Menagerie Fuzz",
	Stage:  "fuzz-asan",
	Script: List("MAX_SECONDS=$(( 6 * 60 * 60 ))", "printf \"\\e[0Ksection_start:%s:cmake_section[collapsed=true]\\r\\e[0KRunning CMake\" \"$( date +%s)\"", "cmake -G Ninja -DBUILD_wireshark=OFF -DCMAKE_BUILD_TYPE=Debug -DENABLE_ASAN=ON -DCMAKE_INSTALL_PREFIX=$INSTALL_PREFIX -DENABLE_CCACHE=ON -DENABLE_WERROR=Off ..", "printf \"\\e[0Ksection_end:%s:cmake_section\\r\\e[0K\" \"$( date +%s)\"", "ninja", "ninja install", "cd ..", "FUZZ_PASSED=true", "./tools/fuzz-test.sh -a -2 -P $MIN_PLUGINS -b $INSTALL_PREFIX/bin -d /tmp/fuzz -t $MAX_SECONDS $( shuf -e /var/menagerie/*/* ) 2> fuzz-test.err || FUZZ_PASSED=false", "echo \"export FUZZ_PASSED=$FUZZ_PASSED\" > /tmp/fuzz_result.sh", "$FUZZ_PASSED"),
	Variables: Json{
		"WIRESHARK_LOG_FATAL": "critical",
	},
}
View Source
var ASanRandpktFuzz = pipeline.Job{
	Name:   "ASan randpkt Fuzz",
	Stage:  "fuzz-randpkt",
	Script: List("printf \"\\e[0Ksection_start:%s:cmake_section[collapsed=true]\\r\\e[0KRunning CMake\" \"$( date +%s)\"", "cmake -G Ninja -DBUILD_wireshark=OFF -DCMAKE_BUILD_TYPE=Debug -DENABLE_ASAN=ON -DCMAKE_INSTALL_PREFIX=$INSTALL_PREFIX -DENABLE_CCACHE=ON -DENABLE_WERROR=Off ..", "printf \"\\e[0Ksection_end:%s:cmake_section\\r\\e[0K\" \"$( date +%s)\"", "ninja", "ninja install", "cd ..", "FUZZ_PASSED=true", "./tools/randpkt-test.sh -a -b $INSTALL_PREFIX/bin -d /tmp/fuzz -p $MAX_PASSES 2> fuzz-test.err || FUZZ_PASSED=false", "echo \"export FUZZ_PASSED=$FUZZ_PASSED\" > /tmp/fuzz_result.sh", "$FUZZ_PASSED"),
	Variables: Json{
		"WIRESHARK_LOG_FATAL": "critical",
	},
	Needs: []any{ASanMenagerieFuzz},
}
View Source
var ArchLinux = pipeline.Job{
	Name:   "Arch Linux",
	Script: List("COMMON_PACMAN_ARGS=\"--sync --refresh --sysupgrade --needed --noconfirm\"", "./tools/make-version.py --set-release --wireshark-version-file=wireshark_version.txt .", "WIRESHARK_VERSION=$(cat wireshark_version.txt)", "WIRESHARK_PREFIX=\"/opt/wireshark-$WIRESHARK_VERSION\"", "pushd /tmp", "pacman $COMMON_PACMAN_ARGS go", "git clone https://github.com/falcosecurity/plugins.git falco-plugins", "pushd /tmp/falco-plugins/plugins/cloudtrail", "make", "popd", "pushd /tmp/falco-plugins/plugins/gcpaudit", "make", "popd", "pushd /tmp/falco-plugins/plugins/k8saudit", "make", "popd", "pacman $COMMON_PACMAN_ARGS uthash libelf onetbb jsoncpp re2", "export LDFLAGS=-Wl,-rpath,'$ORIGIN/../lib'", "git clone https://github.com/falcosecurity/libs.git falco-libs", "cd /tmp/falco-libs", "git switch -c 0.20.0 0.20.0", "printf \"\\e[0Ksection_start:%s:fslibs_cmake_section[collapsed=true]\\r\\e[0KRunning CMake\" \"$( date +%s)\"", "cmake -B build -G Ninja -DBUILD_SHARED_LIBS=on -DMINIMAL_BUILD=on -DBUILD_DRIVER=off -DENABLE_ENGINE_KMOD=off -DBUILD_LIBSCAP_EXAMPLES=off -DUSE_BUNDLED_DEPS=off -DUSE_BUNDLED_VALIJSON=on -DCREATE_TEST_TARGETS=off -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_RPATH='$ORIGIN/../lib' -DCMAKE_INSTALL_PREFIX=$WIRESHARK_PREFIX", "printf \"\\e[0Ksection_end:%s:fslibs_cmake_section\\r\\e[0K\" \"$( date +%s)\"", "ninja -C build", "ninja -C build install", "sed -i -e 's/-linstall_lib_link_libraries-NOTFOUND/-lscap_platform -lscap_platform_util/g' $WIRESHARK_PREFIX/lib/pkgconfig/libscap.pc", "popd", "export CMAKE_PREFIX_PATH=$WIRESHARK_PREFIX", "mkdir build", "cd build", "printf \"\\e[0Ksection_start:%s:cmake_section[collapsed=true]\\r\\e[0KRunning CMake\" \"$( date +%s)\"", "cmake -G Ninja -DBUILD_stratoshark=on -DFALCO_PLUGINS=\"/tmp/falco-plugins/plugins/cloudtrail/libcloudtrail.so;/tmp/falco-plugins/plugins/gcpaudit/libgcpaudit.so;/tmp/falco-plugins/plugins/k8saudit/libk8saudit.so\" -DCMAKE_INSTALL_PREFIX=$WIRESHARK_PREFIX ..", "printf \"\\e[0Ksection_end:%s:cmake_section\\r\\e[0K\" \"$( date +%s)\"", "ninja", "ninja install", "install -v -D -m 755 -t $WIRESHARK_PREFIX/lib/stratoshark/plugins/4.7/epan run/plugins/4.7/epan/falco-events.so", "install -v -D -m 755 -t $WIRESHARK_PREFIX/lib/stratoshark/plugins/falco run/plugins/falco/*.so", "tar -C / -cJf $CI_PROJECT_DIR/wireshark-arch-$WIRESHARK_VERSION.tar.xz opt/wireshark-$WIRESHARK_VERSION"),
	Image:  pipeline.Image{Name: "registry.gitlab.com/wireshark/wireshark-containers/arch-dev"},
	Artifacts: pipeline.Artifacts{
		Paths: List("$CI_PROJECT_DIR/wireshark-arch-*.tar.xz"),
	},
}
View Source
var ClangCodeChecks = pipeline.Job{
	Name:   "Clang + Code Checks",
	Script: List("source /clang-latest.env", "apt-get update && apt-get --yes install python3-venv", "python3 -m venv $CI_PROJECT_DIR/.venv", "source $CI_PROJECT_DIR/.venv/bin/activate", "cd ..", "mkdir cppcheck", "./tools/cppcheck/cppcheck.sh -l $NUM_COMMITS | tee cppcheck/cppcheck_report.txt", "if [[ -s \"cppcheck/cppcheck_report.txt\" ]]; then ./tools/cppcheck/cppcheck.sh -l $NUM_COMMITS -x > cppcheck/cppcheck_report.xml ; fi", "if [[ -s \"cppcheck/cppcheck_report.txt\" ]]; then cppcheck-htmlreport --file cppcheck/cppcheck_report.xml  --report-dir cppcheck ; fi", "cd build", "printf \"\\e[0Ksection_start:%s:cmake_section[collapsed=true]\\r\\e[0KRunning CMake\" \"$( date +%s)\"", "cmake -DENABLE_CHECKHF_CONFLICT=on -DCMAKE_EXPORT_COMPILE_COMMANDS=on -DCMAKE_C_CLANG_TIDY=clang-tidy-$CLANG_VERSION -DCMAKE_CXX_CLANG_TIDY=clang-tidy-$CLANG_VERSION -DBUILD_fuzzshark=ON -DBUILD_tfshark=On -DBUILD_stratoshark=ON -DENABLE_DEBUG=ON -DENABLE_CCACHE=ON -DENABLE_WERROR=ON -G Ninja ..", "printf \"\\e[0Ksection_end:%s:cmake_section\\r\\e[0K\" \"$( date +%s)\"", "printf \"\\e[0Ksection_start:%s:asn1_section[collapsed=false]\\r\\e[0KRegenerating ASN.1 dissectors\" \"$( date +%s)\"", "ninja --quiet asn1", "git diff --exit-code ${CI_COMMIT_SHA} ..", "printf \"\\e[0Ksection_end:%s:asn1_section\\r\\e[0K\" \"$( date +%s)\"", "printf \"\\e[0Ksection_start:%s:pidl_section[collapsed=true]\\r\\e[0KRegenerating PIDL dissectors\" \"$( date +%s)\"", "ninja pidl-dissectors", "ninja idl2wrs-dissectors", "git diff --exit-code ${CI_COMMIT_SHA} ..", "printf \"\\e[0Ksection_end:%s:pidl_section\\r\\e[0K\" \"$( date +%s)\"", "printf \"\\e[0Ksection_start:%s:corba_section[collapsed=false]\\r\\e[0KRegenerating CORBA IDL dissectors\" \"$( date +%s)\"", "ninja corba-dissectors", "git diff --exit-code ${CI_COMMIT_SHA} ..", "printf \"\\e[0Ksection_end:%s:corba_section\\r\\e[0K\" \"$( date +%s)\"", "printf \"\\e[0Ksection_start:%s:public_header_section[collapsed=false]\\r\\e[0KGenerating public dissector header list\" \"$( date +%s)\"", "../tools/generate-dissector-lists.py", "git diff --exit-code ${CI_COMMIT_SHA} ..", "printf \"\\e[0Ksection_end:%s:public_header_section\\r\\e[0K\" \"$( date +%s)\"", "mkdir ../html", "script --command ninja --flush --quiet --return ../tmp_clang_report.txt", "ansi2txt < ../tmp_clang_report.txt > ../clang_report.txt", "ansi2html < ../tmp_clang_report.txt > ../html/clang_report.html", "./run/tshark -v 2> >(tee ../checkhf_conflict.txt)", "../tools/validate-clang-check.sh -c $CLANG_VERSION 2> >(tee ../tmp_clang_analyzer_check.txt)", "ansi2txt < ../tmp_clang_analyzer_check.txt > ../clang_analyzer_check.txt", "ansi2html < ../tmp_clang_analyzer_check.txt > ../html/clang_analyzer_check.html", "ninja checkAPI", "ninja shellcheck", "cd ..", "pip3 install pyspellchecker ruff", "ruff check . tools/idl2deb tools/asn2deb tools/idl2deb tools/pidl/wscript --extend-exclude tools/pkt-from-core.py --extend-exclude tools/WiresharkXML.py --extend-exclude tools/yacc.py --extend-exclude tools/ncp2222.py", "./tools/check_spelling.py --no-wikipedia --comments --commits $NUM_COMMITS | tee spelling_check.txt", "./tools/check_typed_item_calls.py --consecutive --label --mask --check-bitmask-fields --commits $NUM_COMMITS | tee item_calls_check.txt", "./tools/check_tfs.py --check-value-strings --commits $NUM_COMMITS | tee tfs_check.txt", "./tools/check_val_to_str.py --commits $NUM_COMMITS | tee val_to_str_check.txt", "./tools/check_col_apis.py --commits $NUM_COMMITS | tee col_apis_check.txt"),
	Artifacts: pipeline.Artifacts{
		Paths: List("clang_report.txt", "clang_analyzer_check.txt", "cppcheck", "spelling_check.txt", "item_calls_check.txt", "tfs_check.txt", "val_to_str_check.txt", "col_apis_check.txt", "checkhf_conflict.txt", "html/"),
	},
	Tags: List("saas-linux-medium-amd64"),
}
View Source
var ClangStaticAnalyzer = pipeline.Job{
	Name:   "Clang Static Analyzer",
	Stage:  "analysis",
	Script: List("source /clang-latest.env", "scan-build-${CLANG_VERSION} --exclude tools cmake -DCMAKE_BUILD_TYPE=Debug -DENABLE_WERROR=OFF -G Ninja ..", "scan-build-${CLANG_VERSION} --exclude tools -o ../sbout ninja", "cd ../sbout", "RAW_DIR=$( find ../sbout -type d -name \"20??-??-??-*\" -printf \"%P\\n\" | head )", "SB_DIR=\"scan-build-$RAW_DIR\"", "mv \"$RAW_DIR\" \"$SB_DIR\"", "if [ -d logs ] ; then mv logs $SB_DIR ; fi", "chmod -R u=rwX,go=rX \"$SB_DIR\"", "zip -9 -r \"${SB_DIR}.zip\" \"$SB_DIR\"", "if [ -n \"$MC_DESTINATION_ANALYSIS\" ] ; then mc --quiet cp \"${SB_DIR}.zip\" \"$MC_DESTINATION_ANALYSIS/\" ; fi"),
}
View Source
var CodeLinesAndData = pipeline.Job{
	Name:   "Code Lines and Data",
	Stage:  "analysis",
	Script: List("DEBIAN_FRONTEND=noninteractive apt-get update", "DEBIAN_FRONTEND=noninteractive apt-get --yes install sloccount cloc curl unzip", "pushd /tmp", "curl -L -O https://github.com/boyter/scc/releases/download/v3.0.0/scc-3.0.0-x86_64-unknown-linux.zip", "unzip scc-3.0.0-x86_64-unknown-linux.zip", "curl -L -O https://github.com/XAMPPRocky/tokei/releases/download/v12.1.2/tokei-x86_64-unknown-linux-gnu.tar.gz", "tar -xf tokei-x86_64-unknown-linux-gnu.tar.gz", "popd", "printf \"\\e[0Ksection_start:%s:cmake_section[collapsed=true]\\r\\e[0KRunning CMake\" \"$( date +%s)\"", "cmake -G Ninja ..", "printf \"\\e[0Ksection_end:%s:cmake_section\\r\\e[0K\" \"$( date +%s)\"", "ninja", "cd ..", "echo -n \"cloc version:\\ \"", "cloc --version", "cloc --quiet . | tee $CLOC_OUT", "/tmp/scc --version", "/tmp/scc --not-match 'qt/.*.ts' . | tee $SCC_OUT", "echo -n \"SLOCCount version:\\ \"", "sloccount --version", "sloccount . | awk \"/^Computing results/ { results=1 } { if (results) print }\" | tee $SLOC_OUT", "/tmp/tokei --version", "/tmp/tokei --exclude 'qt/*.ts' . | tee $TOKEI_OUT", "cat > manuf <<FIN\n# This file was generated by TShark $(git describe --tags | sed -e 's/^v//') with the\n# command \\`tshark -G manuf\\`. Its canonical location is\n#\n# https://www.wireshark.org/download/automated/data/manuf.gz\n#\n# The first column contains the MAC address block (24, 28 or 36 bits wide,\n# per IEEE allocation sizes), the second column contains the shortened name\n# used by Wireshark for address name resolution and the third column contains the\n# full vendor name from the registry.\n#\nFIN\n", "build/run/tshark -G manuf | sed -e 's,:00:00:00/24,,' >> manuf", "gzip --best --keep manuf", "if [ -n \"$MC_DESTINATION_ANALYSIS\" ] ; then mc --quiet cp \"$CLOC_OUT\" \"$SCC_OUT\" \"$SLOC_OUT\" \"$TOKEI_OUT\" \"$MC_DESTINATION_ANALYSIS/\" ; fi", "if [ -n \"$MC_DESTINATION_DATA\" ] ; then mc --quiet cp manuf manuf.gz \"$MC_DESTINATION_DATA/\" ; fi"),
	Variables: Json{
		"TOKEI_OUT": "/tmp/tokei.txt",
		"CLOC_OUT":  "/tmp/cloc.txt",
		"SCC_OUT":   "/tmp/scc.txt",
		"SLOC_OUT":  "/tmp/sloccount.txt",
	},
	Artifacts: pipeline.Artifacts{
		Paths: List("manuf", "manuf.gz"),
	},
}
View Source
var CommitCheck = pipeline.Job{
	Name:   "Commit Check",
	Script: List("cd ..", "git status", "REPORT_FILE=commit_checks.xml", "TEST_SUITE=commit_checks", "EXIT_CODE=0", "./tools/wrap-ci-test.py --file $REPORT_FILE --suite $TEST_SUITE --case num_commits --command \"[ $NUM_COMMITS -lt 2 ] || (echo 'ℹ️ This merge request has more than one commit. Please squash any trivial ones:\\n'; git log --oneline --no-decorate --max-count=$NUM_COMMITS ; false)\" || true", "./tools/wrap-ci-test.py --file $REPORT_FILE --suite $TEST_SUITE --case tools/pre-commit ./tools/pre-commit \"${CI_COMMIT_SHA}~${NUM_COMMITS}\" || EXIT_CODE=1", "./tools/wrap-ci-test.py --file $REPORT_FILE --suite $TEST_SUITE --case tools/validate-commit ./tools/validate-commit.py $( git log --max-count=$NUM_COMMITS --pretty=format:%h ) || EXIT_CODE=1", "./tools/wrap-ci-test.py --file $REPORT_FILE --suite $TEST_SUITE --case tools/checklicenses ./tools/checklicenses.py || EXIT_CODE=1", "./tools/wrap-ci-test.py --file $REPORT_FILE --suite $TEST_SUITE --case tools/check_help_urls ./tools/check_help_urls.py || EXIT_CODE=1", "exit $EXIT_CODE"),
	Artifacts: pipeline.Artifacts{
		Paths: List("commit_checks.xml"),
		When:  "always",
	},
}
View Source
var CoverityGCCScan = pipeline.Job{
	Name:   "Coverity GCC Scan",
	Stage:  "analysis",
	Script: List("curl --output /tmp/cov-analysis-linux64.tar.gz --form project=$COVERITY_SCAN_PROJECT_NAME --form token=$COVERITY_SCAN_TOKEN https://scan.coverity.com/download/linux64", "tar --directory=/tmp --extract --gzip --file /tmp/cov-analysis-linux64.tar.gz", "mkdir build", "cd build", "cmake -G Ninja -DENABLE_ASSERT=ON ..", "/tmp/cov-analysis-linux64-*/bin/cov-build --return-emit-failures --dir ../cov-int ninja", "cd ..", "tar --create --gzip --file cov-int.tar.gz cov-int", "echo \"export ARTIFACT_JOB_URL=$CI_JOB_URL\" > job_environment_variables.sh", "echo \"export GIT_DESCRIPTION=$( git describe --tags --match \"v[1-9]*\" )\" >> job_environment_variables.sh"),
	Image:  pipeline.Image{Name: "registry.gitlab.com/wireshark/wireshark-containers/ubuntu-dev"},
	Variables: Json{
		"CFLAGS":   "-DGLIB_DISABLE_DEPRECATION_WARNINGS",
		"CXXFLAGS": "-DGLIB_DISABLE_DEPRECATION_WARNINGS",
		"CC":       "gcc",
		"CXX":      "g++",
	},
	Rules: List(
		pipeline.Rule{
			If: "$CI_PIPELINE_SOURCE == \"schedule\" && $SCHEDULE_TYPE == \"coverity-gcc\"",
		},
	),
	Artifacts: pipeline.Artifacts{
		Paths: List("cov-int.tar.gz", "job_environment_variables.sh"),
	},
}
View Source
var CoverityGCCSubmit = pipeline.Job{
	Name:   "Coverity GCC Submit",
	Stage:  ".post",
	Script: List(". job_environment_variables.sh", "echo $ARTIFACT_JOB_URL", "echo $GIT_DESCRIPTION", "curl --fail --data \"project=$COVERITY_SCAN_PROJECT_NAME&token=$COVERITY_SCAN_TOKEN&email=$GITLAB_USER_EMAIL&url=$ARTIFACT_JOB_URL/artifacts/raw/cov-int.tar.gz&version=$GIT_DESCRIPTION&description=Ubuntu $GIT_DESCRIPTION $CI_COMMIT_REF_NAME:$CI_PIPELINE_ID\" https://scan.coverity.com/builds"),
	Image:  pipeline.Image{Name: "curlimages/curl"},
	Rules: List(
		pipeline.Rule{
			If: "$CI_PIPELINE_SOURCE == \"schedule\" && $SCHEDULE_TYPE == \"coverity-gcc\"",
		},
	),
	Needs: []any{CoverityGCCScan},
}
View Source
var CoverityVisualCScan = pipeline.Job{
	Name:   "Coverity Visual C++ Scan",
	Stage:  "analysis",
	Script: List("$gitDescription = (( git describe --tags ) | Out-String).Trim()", "C:\\Windows\\System32\\curl --output $env:temp\\cov-analysis-win64.zip --form project=$COVERITY_SCAN_PROJECT_NAME --form token=$COVERITY_SCAN_TOKEN https://scan.coverity.com/download/win64", "C:\\ProgramData\\chocolatey\\tools\\7z x \"$env:temp\\cov-analysis-win64.zip\" -y -r -o\"$env:temp\"", "cmake -DTEST_EXTRA_ARGS=--enable-release -DENABLE_LTO=off -G \"Visual Studio 17 2022\" -A x64 ..", "$covAnalysisWin64 = (Get-ChildItem -Path $env:temp -Filter \"cov-analysis-win64-*\" -Directory)[0].FullName", "Invoke-Expression \"& $covAnalysisWin64\\bin\\cov-build.exe --return-emit-failures --dir ..\\cov-int msbuild /verbosity:minimal `\"/consoleloggerparameters:PerformanceSummary;NoSummary`\" /maxcpucount:1 Wireshark.sln\"", "cd ..", "C:\\ProgramData\\chocolatey\\tools\\7z a -tzip cov-int.zip cov-int", "\"export ARTIFACT_JOB_URL=$env:CI_JOB_URL\" | Out-File -Encoding ascii job_environment_variables.sh", "\"export GIT_DESCRIPTION=$gitDescription\" | Out-File -Encoding ascii -Append job_environment_variables.sh"),
	Rules: List(
		pipeline.Rule{
			If: "$CI_PIPELINE_SOURCE == \"schedule\" && $SCHEDULE_TYPE == \"coverity-visual-c++\"",
		},
	),
	Artifacts: pipeline.Artifacts{
		Paths: List("cov-int.zip", "job_environment_variables.sh"),
	},
	Tags: List("wireshark-windows-merge-req"),
}
View Source
var CoverityVisualCSubmit = pipeline.Job{
	Name:   "Coverity Visual C++ Submit",
	Stage:  ".post",
	Script: List("sed -i -e 's/\\r//' job_environment_variables.sh", ". job_environment_variables.sh", "echo $ARTIFACT_JOB_URL", "echo $GIT_DESCRIPTION", "curl --fail --data \"project=$COVERITY_SCAN_PROJECT_NAME&token=$COVERITY_SCAN_TOKEN&email=$GITLAB_USER_EMAIL&url=$ARTIFACT_JOB_URL/artifacts/raw/cov-int.zip&version=$GIT_DESCRIPTION&description=Windows $GIT_DESCRIPTION $CI_COMMIT_REF_NAME:$CI_PIPELINE_ID\" https://scan.coverity.com/builds"),
	Image:  pipeline.Image{Name: "curlimages/curl"},
	Rules: List(
		pipeline.Rule{
			If: "$CI_PIPELINE_SOURCE == \"schedule\" && $SCHEDULE_TYPE == \"coverity-visual-c++\"",
		},
	),
	Needs: []any{CoverityVisualCScan},
}
View Source
var DebianStableAPTPackage = pipeline.Job{
	Name:   "Debian Stable APT Package",
	Script: List("ln --symbolic --no-dereference --force packaging/debian", "tools/make-version.py --set-release .", "export DEB_BUILD_OPTIONS=\"nocheck parallel=$(( $(getconf _NPROCESSORS_ONLN) + 2 ))\"", "export DH_QUIET=1", "export MAKEFLAGS=--silent", "CC=/usr/lib/ccache/gcc CXX=/usr/lib/ccache/g++ dpkg-buildpackage -b --no-sign -jauto -zfast", "mkdir debian-packages", "mv -v ../*.deb debian-packages/"),
	Image:  pipeline.Image{Name: "registry.gitlab.com/wireshark/wireshark-containers/debian-stable-dev"},
	Artifacts: pipeline.Artifacts{
		Paths:    List("debian-packages/*.deb"),
		ExpireIn: "3 days",
	},
}
View Source
var DebianStableAPTTest = pipeline.Job{
	Name:   "Debian Stable APT Test",
	Stage:  "test",
	Script: List("DEBIAN_FRONTEND=noninteractive apt-get update", "DEBIAN_FRONTEND=noninteractive apt-get install ./debian-packages/*.deb -y", "tshark --version"),
	Image:  pipeline.Image{Name: "registry.gitlab.com/wireshark/wireshark-containers/debian-stable-dev"},
	Variables: Json{
		"GIT_STRATEGY": "none",
	},
	Needs: []any{DebianStableAPTPackage},
}
View Source
var Documentation = pipeline.Job{
	Name:        "Documentation",
	Script:      List("DEBIAN_FRONTEND=noninteractive apt-get update", "DEBIAN_FRONTEND=noninteractive apt-get --yes install ruby-asciidoctor-pdf ruby-coderay ruby-dev", "NOKOGIRI_USE_SYSTEM_LIBRARIES=1 gem install asciidoctor-epub3", "mkdir build", "cd build", "printf \"\\e[0Ksection_start:%s:cmake_section[collapsed=true]\\r\\e[0KRunning CMake\" \"$( date +%s)\"", "cmake -GNinja ..", "printf \"\\e[0Ksection_end:%s:cmake_section\\r\\e[0K\" \"$( date +%s)\"", "ninja all_guides", "cd doc", "for HTML_DIR in ws[ud]g_html{,_chunked} ; do zip -9 -r \"$HTML_DIR.zip\" \"$HTML_DIR\" ; done", "if [ -n \"$MC_DESTINATION_DOCS\" ] ; then mc --quiet cp ws[ud]g_html{,_chunked}.zip Wireshark*Guide.{epub,pdf} \"$MC_DESTINATION_DOCS/\" ; fi", "mv -v ws[ud]g_html{,_chunked}.zip Wireshark*Guide.{epub,pdf} ../.."),
	AfterScript: List("if [ \"$CI_JOB_STATUS\" != \"success\" ]; then exit 0 ; fi"),
	Image:       pipeline.Image{Name: "registry.gitlab.com/wireshark/wireshark-containers/ubuntu-dev"},
	Rules: List(
		pipeline.Rule{
			If:      "$CI_PIPELINE_SOURCE == \"push\" && $CI_COMMIT_BRANCH == \"master\" && $CI_PROJECT_URL =~ /.*gitlab.com\\/wireshark\\/wireshark/",
			Changes: List("doc/**/*", "epan/wslua/**/*"),
		},
		pipeline.Rule{
			If:           "$CI_PIPELINE_SOURCE == \"push\"",
			When:         "manual",
			AllowFailure: true,
		},
	),
	Artifacts: pipeline.Artifacts{
		Paths: List("wsug_html.zip", "wsug_html_chunked.zip", "wsdg_html.zip", "wsdg_html_chunked.zip", "Wireshark User's Guide.pdf", "Wireshark Developer's Guide.pdf", "Wireshark User's Guide.epub", "Wireshark Developer's Guide.epub"),
	},
}
View Source
var FedoraRPMPackage = pipeline.Job{
	Name:   "Fedora RPM Package",
	Script: List("export FORCE_CMAKE_NINJA_NON_VERBOSE=1", "printf \"\\e[0Ksection_start:%s:cmake_section[collapsed=true]\\r\\e[0KRunning CMake\" \"$( date +%s)\"", "cmake3 -G Ninja -DBUILD_stratoshark=ON ..", "printf \"\\e[0Ksection_end:%s:cmake_section\\r\\e[0K\" \"$( date +%s)\"", "ninja wireshark_rpm"),
	Image:  pipeline.Image{Name: "registry.gitlab.com/wireshark/wireshark-containers/fedora-dev"},
}
View Source
var MacOSBuild = pipeline.Job{
	Name:    "macOS Build",
	Needs:   []any{CommitCheck},
	Retry:   pipeline.Retry{Max: 2, When: List("runner_system_failure", "stuck_or_timeout_failure")},
	Timeout: "45 minutes",
}
View Source
var MacOSUniversalPackage = pipeline.Job{
	Name:         "macOS Universal Package",
	Stage:        "build",
	Script:       List("if [[ $MACOS_REINSTALL_THIRD_PARTY == true ]] ; then rm -rf \"$WIRESHARK_BASE_DIR\" ; fi", "if [ ! -d \"$WIRESHARK_BASE_DIR/Qt\" ] ; then mkdir -p \"$WIRESHARK_BASE_DIR/Qt\" ; fi", "if [ ! -d \"$WIRESHARK_BASE_DIR/Qt/$MACOS_QT_VERSION/macos/lib/QtCore.framework\" ] ; then pip3 install aqtinstall ; aqt install-qt --outputdir $WIRESHARK_BASE_DIR/Qt mac desktop $MACOS_QT_VERSION clang_64 --modules qt5compat qtmultimedia --timeout 10 ; fi", "export CMAKE_PREFIX_PATH=\"$WIRESHARK_BASE_DIR/Qt/$MACOS_QT_VERSION/macos\"", "export PKG_CONFIG_PATH=", "for falco_plugin in gcpaudit k8saudit ; do cp -f $FALCO_PLUGIN_DIR/lib${falco_plugin}.so $FALCO_PLUGIN_DIR/lib${falco_plugin}.so.disabled ; done", "mkdir build", "cd build", "../tools/make-version.py --set-release --wireshark-version-file=wireshark_version.txt --stratoshark-version-file=stratoshark_version.txt ..", "printf \"\\e[0Ksection_start:%s:cmake_section[collapsed=true]\\r\\e[0KRunning CMake\" \"$( date +%s)\"", "cmake -G Ninja -DENABLE_CCACHE=ON -DWIRESHARK_BASE_DIR=\"$WIRESHARK_BASE_DIR\" -DCMAKE_OSX_DEPLOYMENT_TARGET=12.0 -DCMAKE_OSX_ARCHITECTURES=\"arm64;x86_64\" -DBUILD_stratoshark=on -DFALCO_PLUGINS=\"$FALCO_PLUGIN_DIR/libcloudtrail.so;$FALCO_PLUGIN_DIR/libgcpaudit.so.disabled;$FALCO_PLUGIN_DIR/libk8saudit.so.disabled\" -DTEST_EXTRA_ARGS=--enable-release ..", "sed -i .bak '/Requires.*zlib/d' $WIRESHARK_BASE_DIR/macos-universal-master/lib/pkgconfig/libscap.pc", "printf \"\\e[0Ksection_end:%s:cmake_section\\r\\e[0K\" \"$( date +%s)\"", "ninja", "for exe in $( find run/{Wire,Strato}shark.app/Contents/MacOS -type f ) ; do lipo \"$exe\" -verify_arch arm64 x86_64 ; done", "codesign-prep", "security find-identity -v -s \"$CODE_SIGN_IDENTITY\"", "ninja wireshark_dmg", "ninja stratoshark_dmg", "cd run", "xcrun notarytool submit Wireshark?[1-9]*.dmg --apple-id \"$MACOS_NOTARIZATION_APPLE_ID\" --team-id \"$MACOS_NOTARIZATION_TEAM_ID\" --password \"$MACOS_NOTARIZATION_PWD\" --wait --timeout 10m", "xcrun stapler staple Wireshark?[1-9]*.dmg", "xcrun notarytool submit Stratoshark?[0-9]*.dmg --apple-id \"$MACOS_NOTARIZATION_APPLE_ID\" --team-id \"$MACOS_NOTARIZATION_TEAM_ID\" --password \"$MACOS_NOTARIZATION_PWD\" --wait --timeout 10m", "xcrun stapler staple Stratoshark?[0-9]*.dmg", "spctl --assess --type open --context context:primary-signature --verbose=2 Wireshark?[1-9]*.dmg Stratoshark?[0-9]*.dmg", "stat -f \"%N %z bytes\" Wireshark*.dmg Stratoshark*.dmg", "for digest in sha512 sha256 sha1 ; do openssl $digest Wireshark*.dmg Stratoshark*.dmg ; done", "if [ -n \"$S3_DESTINATION_MACOS_UNIVERSAL\" ] ; then aws s3 cp Wireshark?[1-9]*.dmg \"$S3_DESTINATION_MACOS_UNIVERSAL/\" ; aws s3 cp Wireshark?dSYM*.dmg \"$S3_DESTINATION_MACOS_UNIVERSAL/\" ; aws s3 cp Stratoshark?[0-9]*.dmg \"$S3_DESTINATION_MACOS_UNIVERSAL/\" ; aws s3 cp Stratoshark?dSYM*.dmg \"$S3_DESTINATION_MACOS_UNIVERSAL/\" ; fi", "$CI_PROJECT_DIR/build/run/tshark --version", "WIRESHARK_SPARKLE_SIGNATURE=$( age --decrypt --identity=\"$MACOS_AGE_IDENTITY\" \"$MACOS_SPARKLE_BLOB\" | /usr/local/Sparkle-2.2.2/bin/sign_update --ed-key-file - Wireshark?[1-9]*.dmg )", "WIRESHARK_DMG_SHA256=$( shasum --algorithm 256 Wireshark?[1-9]*.dmg | awk '{print $1}' )", "WIRESHARK_VERSION=$(< ../wireshark_version.txt)", "printf '[DEFAULT]\\nsparkle_signature = %s\\ndmg_sha256 = %s\\n' \"$WIRESHARK_SPARKLE_SIGNATURE\" \"$WIRESHARK_DMG_SHA256\" > wireshark-release-info-${WIRESHARK_VERSION}-macos-arm64.ini", "cp wireshark-release-info-${WIRESHARK_VERSION}-macos-arm64.ini wireshark-release-info-${WIRESHARK_VERSION}-macos-intel64.ini", "STRATOSHARK_SPARKLE_SIGNATURE=$( age --decrypt --identity=\"$MACOS_AGE_IDENTITY\" \"$MACOS_SPARKLE_BLOB\" | /usr/local/Sparkle-2.2.2/bin/sign_update --ed-key-file - Stratoshark?[0-9]*.dmg )", "STRATOSHARK_DMG_SHA256=$( shasum --algorithm 256 Stratoshark?[0-9]*.dmg | awk '{print $1}' )", "STRATOSHARK_VERSION=$(< ../stratoshark_version.txt)", "printf '[DEFAULT]\\nsparkle_signature = %s\\ndmg_sha256 = %s\\n' \"$STRATOSHARK_SPARKLE_SIGNATURE\" \"$STRATOSHARK_DMG_SHA256\" > stratoshark-release-info-${STRATOSHARK_VERSION}-macos-arm64.ini", "cp stratoshark-release-info-${STRATOSHARK_VERSION}-macos-arm64.ini stratoshark-release-info-${STRATOSHARK_VERSION}-macos-intel64.ini", "if [ -n \"$S3_DESTINATION_RELEASE\" ] ; then aws s3 cp wireshark-release-info-*-macos-arm64.ini \"$S3_DESTINATION_RELEASE/\" ; aws s3 cp wireshark-release-info-*-macos-intel64.ini \"$S3_DESTINATION_RELEASE/\" ; aws s3 cp stratoshark-release-info-*-macos-arm64.ini \"$S3_DESTINATION_RELEASE/\" ; aws s3 cp stratoshark-release-info-*-macos-intel64.ini \"$S3_DESTINATION_RELEASE/\" ; fi", "cd ..", "ninja test"),
	BeforeScript: List("export PATH=\"/Library/Frameworks/Python.framework/Versions/3.13/bin:$PATH:$HOME/bin\"", "python3 -m venv $CI_PROJECT_DIR/.venv", "source $CI_PROJECT_DIR/.venv/bin/activate", "pip3 install pytest pytest-xdist"),
	Variables: Json{
		"CODE_SIGN_IDENTITY": "Wireshark Foundation",
		"WIRESHARK_BASE_DIR": "$CI_PROJECT_DIR/../wireshark-third-party",
		"FALCO_PLUGIN_DIR":   "$WIRESHARK_BASE_DIR/macos-universal-master/lib/falco/plugins",
	},
	Artifacts: pipeline.Artifacts{
		Paths: List("build/run/*shark-release-info-*-macos-*.ini"),
	},
	Tags:  List("wireshark-macos-arm-package"),
	Retry: 1,
}
View Source
var MainPipeline = pipeline.Pipeline{
	Stages: List("build", "analysis", "test", "fuzz-asan", "fuzz-randpkt", "fuzz-valgrind"),
	Variables: Json{
		"WINDOWS_QT_VERSION":      "6.9.3",
		"SAST_EXCLUDED_ANALYZERS": "brakeman,eslint,security-code-scan,semgrep,spotbugs",
		"FORCE_COLOR":             "1",
		"GIT_DEPTH":               "1",
		"GIT_FETCH_EXTRA_FLAGS":   "--depth=5000",
		"HOMEBREW_COLOR":          "1",
		"CCACHE_DIR":              "${CI_PROJECT_DIR}/ccache",
		"MACOS_QT_VERSION":        "6.9.3",
		"CLICOLOR_FORCE":          "1",
	},
}
View Source
var NoOptions = pipeline.Job{
	Name:  "No options",
	Needs: []any{CommitCheck},
}
View Source
var OpenSUSE156RPMPackage = pipeline.Job{
	Name:   "openSUSE 15.6 RPM Package",
	Script: List("source /gcc-latest.env", "export FORCE_CMAKE_NINJA_NON_VERBOSE=1", "printf \"\\e[0Ksection_start:%s:cmake_section[collapsed=true]\\r\\e[0KRunning CMake\" \"$( date +%s)\"", "cmake -G Ninja ..", "printf \"\\e[0Ksection_end:%s:cmake_section\\r\\e[0K\" \"$( date +%s)\"", "ninja wireshark_rpm"),
	Image:  pipeline.Image{Name: "registry.gitlab.com/wireshark/wireshark-containers/opensuse-15.6-dev"},
}
View Source
var OpenSUSE156RPMTest = pipeline.Job{
	Name:   "openSUSE 15.6 RPM Test",
	Script: List("zypper --no-gpg-checks --no-remote install -y build/packaging/rpm/RPMS/x86_64/*.rpm", "tshark --version"),
	Image:  pipeline.Image{Name: "registry.gitlab.com/wireshark/wireshark-containers/opensuse-15.6-dev"},
	Needs:  []any{OpenSUSE156RPMPackage},
}
View Source
var RockyLinux9RPMPackage = pipeline.Job{
	Name:   "Rocky Linux 9 RPM Package",
	Script: List("export FORCE_CMAKE_NINJA_NON_VERBOSE=1", "printf \"\\e[0Ksection_start:%s:cmake_section[collapsed=true]\\r\\e[0KRunning CMake\" \"$( date +%s)\"", "cmake -G Ninja -DBUILD_stratoshark=ON ..", "printf \"\\e[0Ksection_end:%s:cmake_section\\r\\e[0K\" \"$( date +%s)\"", "ninja wireshark_rpm"),
	Image:  pipeline.Image{Name: "registry.gitlab.com/wireshark/wireshark-containers/rockylinux-9-dev"},
}
View Source
var RockyLinux9RPMTest = pipeline.Job{
	Name:   "Rocky Linux 9 RPM Test",
	Script: List("dnf --nogpgcheck localinstall -y build/packaging/rpm/RPMS/x86_64/*.rpm", "tshark --version"),
	Image:  pipeline.Image{Name: "registry.gitlab.com/wireshark/wireshark-containers/rockylinux-9-dev"},
	Needs:  []any{RockyLinux9RPMPackage},
}
View Source
var SourcePackage = pipeline.Job{
	Name:        "Source Package",
	Stage:       ".pre",
	Script:      List("../tools/make-version.py --set-release --wireshark-version-file=wireshark_version.txt --stratoshark-version-file=stratoshark_version.txt ..", "../tools/update-appdata.py", "printf \"\\e[0Ksection_start:%s:cmake_section[collapsed=true]\\r\\e[0KRunning CMake\" \"$( date +%s)\"", "cmake -G Ninja $CMAKE_ARGS ..", "printf \"\\e[0Ksection_end:%s:cmake_section\\r\\e[0K\" \"$( date +%s)\"", "cd $CI_PROJECT_DIR", "build/packaging/source/git-export-release.sh -d .", "cd build", "ninja release_notes", "WIRESHARK_VERSION=$(< wireshark_version.txt)", "cp -v \"doc/Wireshark Release Notes.html\" ../wireshark-release-notes-${WIRESHARK_VERSION}.html", "cp -v \"doc/Wireshark Release Notes.txt\" ../wireshark-release-notes-${WIRESHARK_VERSION}.txt", "STRATOSHARK_VERSION=$(< stratoshark_version.txt)", "cp -v \"doc/Stratoshark Release Notes.html\" ../stratoshark-release-notes-${STRATOSHARK_VERSION}.html", "cp -v \"doc/Stratoshark Release Notes.txt\" ../stratoshark-release-notes-${STRATOSHARK_VERSION}.txt", "cd .."),
	AfterScript: List("if [ \"$CI_JOB_STATUS\" != \"success\" ]; then exit 0 ; fi", "if [ -n \"$SCHEDULE_TYPE\" ] ; then exit 0 ; fi", "stat --format=\"%n %s bytes\" wireshark-*.tar.*", "for digest in sha512 sha256 sha1 ; do openssl $digest wireshark-*.tar.* ; done", "if [ -n \"$MC_DESTINATION_DIST\" ] ; then mc --quiet cp wireshark-*.tar.* \"$MC_DESTINATION_DIST/\" ; fi", "if [ -n \"$MC_DESTINATION_RELEASE\" ] ; then mc --quiet cp {wire,strato}shark-release-notes-*.{txt,html} \"$MC_DESTINATION_RELEASE/\" ; fi"),
	Artifacts: pipeline.Artifacts{
		Paths: List("wireshark-*.tar.*", "wireshark-release-notes-*.html", "wireshark-release-notes-*.txt", "stratoshark-release-notes-*.html", "stratoshark-release-notes-*.txt"),
	},
}
View Source
var UbuntuAPTPackage = pipeline.Job{
	Name:        "Ubuntu APT Package",
	Script:      List("cd ..", "ln --symbolic --no-dereference --force packaging/debian", "CC=/usr/lib/ccache/gcc CXX=/usr/lib/ccache/g++ MAKE=ninja dpkg-buildpackage -us -uc -rfakeroot -jauto -zfast", "mkdir ubuntu-packages", "mv ../*.deb ubuntu-packages/"),
	AfterScript: List("ccache --max-size $( du --summarize --block-size=1M --total \"$CI_PROJECT_DIR\"/obj-* | awk '/total$/ {printf (\"%dM\", $1 * 1.25)}' )"),
	Artifacts: pipeline.Artifacts{
		Paths:    List("ubuntu-packages/*.deb"),
		ExpireIn: "3 days",
	},
}
View Source
var UbuntuAPTTest = pipeline.Job{
	Name:   "Ubuntu APT Test",
	Stage:  "test",
	Script: List("DEBIAN_FRONTEND=noninteractive apt-get install ./ubuntu-packages/*.deb -y", "tshark --version"),
	Image:  pipeline.Image{Name: "registry.gitlab.com/wireshark/wireshark-containers/ubuntu-dev"},
	Variables: Json{
		"GIT_STRATEGY": "none",
	},
	Needs: []any{UbuntuAPTPackage},
}
View Source
var UbuntuGCCBuild = pipeline.Job{
	Name:   "Ubuntu GCC Build",
	Script: List("source /gcc-latest.env", "cd ..", "mv build \"🦈 build 🦈\"", "cd \"🦈 build 🦈\"", "printf \"\\e[0Ksection_start:%s:cmake_section[collapsed=true]\\r\\e[0KRunning CMake\" \"$( date +%s)\"", "cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug -DENABLE_CCACHE=ON -DENABLE_WERROR=ON -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DBUILD_sshdig=ON ..", "printf \"\\e[0Ksection_end:%s:cmake_section\\r\\e[0K\" \"$( date +%s)\"", "script --command ninja --flush --quiet --return ../gcc_report.txt", "ansi2html < ../gcc_report.txt > ../gcc_report.html", "ninja test-programs", "chown -R user .", "if [ -f run/dumpcap ]; then setcap cap_net_raw,cap_net_admin+eip run/dumpcap; fi", "if [ -f run/dumpcap ]; then su user -c \"run/dumpcap -D\" ; fi", "PYTEST_ADDOPTS=--skip-missing-programs=dumpcap,falcodump,rawshark,sshdig su user -c \"pytest --junitxml=../ubuntu_tests.xml\"", "ninja user_guide_html", "ninja developer_guide_html", "cpack -G TZST .", "ls wireshark-*.tar.zst{,.sha256}"),
	Variables: Json{
		"CC":  "gcc",
		"CXX": "g++",
	},
	Needs: []any{CommitCheck},
	Artifacts: pipeline.Artifacts{
		Paths: List("gcc_report.html"),
		When:  "always",
	},
}
View Source
var UbuntuQt5Build = pipeline.Job{
	Name:   "Ubuntu Qt5 Build",
	Script: List("../tools/debian-setup.sh --install-qt5-deps --yes --no-install-recommends", "printf \"\\e[0Ksection_start:%s:cmake_section[collapsed=true]\\r\\e[0KRunning CMake\" \"$( date +%s)\"", "cmake -G Ninja -DENABLE_CCACHE=ON -DENABLE_WERROR=ON -DUSE_qt6=OFF ..", "printf \"\\e[0Ksection_end:%s:cmake_section\\r\\e[0K\" \"$( date +%s)\"", "ninja", "run/wireshark -v"),
	Rules: List(
		pipeline.Rule{
			If:      "$CI_PIPELINE_SOURCE == \"merge_request_event\"",
			Changes: List("ui/**/*"),
		},
		pipeline.Rule{
			If:           "$CI_PIPELINE_SOURCE == \"merge_request_event\"",
			When:         "manual",
			AllowFailure: true,
		},
	),
	Needs: []any{CommitCheck},
}
View Source
var ValgrindMenagerieFuzz = pipeline.Job{
	Name:   "Valgrind Menagerie Fuzz",
	Stage:  "fuzz-valgrind",
	Script: List("DEBIAN_FRONTEND=noninteractive apt-get update", "DEBIAN_FRONTEND=noninteractive apt-get --yes install valgrind", "MAX_SECONDS=$(( 3 * 60 * 60 ))", "printf \"\\e[0Ksection_start:%s:cmake_section[collapsed=true]\\r\\e[0KRunning CMake\" \"$( date +%s)\"", "cmake -G Ninja -DBUILD_wireshark=OFF -DCMAKE_BUILD_TYPE=Debug -DENABLE_ASAN=OFF -DCMAKE_INSTALL_PREFIX=$INSTALL_PREFIX -DENABLE_CCACHE=ON -DENABLE_WERROR=Off ..", "printf \"\\e[0Ksection_end:%s:cmake_section\\r\\e[0K\" \"$( date +%s)\"", "ninja", "ninja install", "cd ..", "FUZZ_PASSED=true", "./tools/fuzz-test.sh -g -P $MIN_PLUGINS -b $INSTALL_PREFIX/bin -d /tmp/fuzz -t $MAX_SECONDS $( shuf -e /var/menagerie/*/* ) 2> fuzz-test.err || FUZZ_PASSED=false", "echo \"export FUZZ_PASSED=$FUZZ_PASSED\" > /tmp/fuzz_result.sh", "$FUZZ_PASSED"),
	Variables: Json{
		"WIRESHARK_LOG_FATAL": "critical",
		"CFLAGS":              "-gdwarf-4",
	},
	Needs: []any{ASanRandpktFuzz},
}
View Source
var VisualStudioCodeAnalysis = pipeline.Job{
	Name:   "Visual Studio Code Analysis",
	Script: List("py -m venv sarif-tools.venv", "sarif-tools.venv\\Scripts\\pip.exe install sarif-tools", "New-Item -Path C:\\MinIO -Type \"directory\"", "Invoke-Webrequest -OutFile C:\\MinIO\\mc.exe https://dl.min.io/client/mc/release/windows-amd64/archive/mc.RELEASE.2024-07-03T20-17-25Z", "if ($( Get-FileHash -Algorithm SHA256 -Path C:\\MinIO\\mc.exe ).Hash -ne \"A379139FB32C0ADDB6C05786782602B5106D13402759AC1B4A88285A4D5EAAD3\" ) { Exit 1 }", "$env:caexcludepath = \"C:\\Qt;$env:INCLUDE\"", "cmake -DENABLE_CODE_ANALYSIS=ON -G \"Visual Studio 17 2022\" -A x64 -DENABLE_LTO=off ..", "msbuild /verbosity:minimal \"/consoleloggerparameters:PerformanceSummary;NoSummary\" /maxcpucount:2 Wireshark.sln", "$report = \"visual-c++-analyze-\" + (Get-Date -format \"yyyy-MM-dd\") + \".html\"", "sarif-tools.venv\\Scripts\\sarif html --output $report", "if (Test-Path env:MC_DESTINATION_ANALYSIS) { C:\\MinIO\\mc --quiet cp \"$report\" \"$env:MC_DESTINATION_ANALYSIS/\" }"),
	Rules: List(
		pipeline.Rule{
			If: "$CI_PIPELINE_SOURCE == \"schedule\" && $SCHEDULE_TYPE == \"daily\" && $CI_PROJECT_URL =~ /.*gitlab.com\\/wireshark\\/wireshark/",
		},
	),
	Tags: List("wireshark-windows-dev"),
}
View Source
var WSAR = pipeline.Job{
	Name:        "WSAR",
	Script:      List("DEBIAN_FRONTEND=noninteractive apt-get update", "DEBIAN_FRONTEND=noninteractive apt-get --yes install doxygen", "mkdir build", "cd build", "printf \"\\e[0Ksection_start:%s:cmake_section[collapsed=true]\\r\\e[0KRunning CMake\" \"$( date +%s)\"", "cmake -GNinja ..", "printf \"\\e[0Ksection_end:%s:cmake_section\\r\\e[0K\" \"$( date +%s)\"", "ninja wsar_html"),
	AfterScript: List("if [ \"$CI_JOB_STATUS\" != \"success\" ]; then exit 0 ; fi"),
	Image:       pipeline.Image{Name: "registry.gitlab.com/wireshark/wireshark-containers/ubuntu-dev"},
	Artifacts: pipeline.Artifacts{
		Paths: List("build/wsar_html/*"),
	},
	When:         "manual",
	AllowFailure: true,
}
View Source
var WindowsArm64Package = pipeline.Job{
	Name:   "Windows Arm64 Package",
	Script: List("C:\\Windows\\py.exe ..\\tools\\make-version.py --set-release --wireshark-version-file=wireshark_version.txt --stratoshark-version-file=stratoshark_version.txt ..", "cmake -G \"Visual Studio 17 2022\" -A arm64 -DENABLE_LTO=off -DBUILD_stratoshark=on -DFALCO_PLUGINS=\"$FALCO_PLUGIN_DIR/cloudtrail.dll;$FALCO_PLUGIN_DIR/gcpaudit.dll;$FALCO_PLUGIN_DIR/k8saudit.dll\" -DENABLE_SIGNED_NSIS=on ..", "msbuild /verbosity:minimal \"/consoleloggerparameters:PerformanceSummary;NoSummary\" /maxcpucount Wireshark.sln", "msbuild /verbosity:minimal /maxcpucount test-programs.vcxproj", "msbuild /verbosity:minimal /maxcpucount wireshark_nsis_prep.vcxproj", "msbuild /verbosity:minimal /maxcpucount stratoshark_nsis_prep.vcxproj", "C:\\gitlab-builds\\bin\\sign-files.ps1 -Recurse -Path run\\RelWithDebInfo", "msbuild /verbosity:minimal wireshark_nsis.vcxproj", "msbuild /verbosity:minimal stratoshark_nsis.vcxproj", "$plugins = Get-ChildItem run\\RelWithDebInfo\\plugins\\*\\*.dll ; signtool verify /q /pa /all run\\RelWithDebInfo\\*.exe run\\RelWithDebInfo\\extcap\\wireshark\\*.exe $plugins run\\RelWithDebInfo\\libwireshark.dll run\\RelWithDebInfo\\libwiretap.dll run\\RelWithDebInfo\\libwsutil.dll packaging\\nsis\\Wireshark-*-arm64.exe packaging\\nsis\\Stratoshark-*-arm64.exe", "msbuild /verbosity:minimal pdb_zip_package.vcxproj", "C:\\gitlab-builds\\bin\\mse-scan.ps1", "run\\RelWithDebInfo\\tshark --version", "$packages = Get-ChildItem \"packaging\\nsis\\Wireshark-*-arm64.exe\", \"packaging\\nsis\\Stratoshark-*-arm64.exe\", \"Wireshark-pdb-*arm64.zip\"", "foreach ($package in $packages) { Write-Host $package.name $(Get-Filehash -Algorithm SHA256 $package).Hash.ToLower() $package.length \"bytes\" }", "if (Test-Path env:MC_DESTINATION_WINDOWS_ARM64) { C:\\gitlab-builds\\bin\\mc --quiet cp $packages \"$env:MC_DESTINATION_WINDOWS_ARM64/\" }", "$wiresharkVersion = Get-Content .\\wireshark_version.txt", "$wiresharkNsisSha256 = (Get-FileHash -Algorithm SHA256 .\\packaging\\nsis\\Wireshark-*-arm64.exe).Hash.ToLower()", "Set-Content -Path wireshark-release-info-$($wiresharkVersion)-windows-arm64.ini -Value (\"[DEFAULT]`nnsis_sha256 = $wiresharkNsisSha256\")", "$stratosharkVersion = Get-Content .\\stratoshark_version.txt", "$stratosharkNsisSha256 = (Get-FileHash -Algorithm SHA256 .\\packaging\\nsis\\Stratoshark-*-arm64.exe).Hash.ToLower()", "Set-Content -Path stratoshark-release-info-$($stratosharkVersion)-windows-arm64.ini -Value (\"[DEFAULT]`nnsis_sha256 = $stratosharkNsisSha256\")", "if (Test-Path env:MC_DESTINATION_RELEASE) { C:\\gitlab-builds\\bin\\mc --quiet cp $(Get-ChildItem \"*shark-release-info-*-windows-*.ini\") \"$env:MC_DESTINATION_RELEASE/\" }", "C:\\Windows\\py.exe -m pytest --enable-release"),
	Variables: Json{
		"AQT_ARCH":         "msvc2022_arm64",
		"VCVARS_ARCH":      "arm64",
		"FALCO_PLUGIN_DIR": "$WIRESHARK_BASE_DIR/wireshark-arm64-libs/falcosecurity-plugins-2025-11-24-1-arm64-ws",
		"AQT_HOST":         "windows_arm64",
	},
	Artifacts: pipeline.Artifacts{
		Paths: List("build/*shark-release-info-*-windows-*.ini"),
	},
	Tags: List("wireshark-windows-arm64-package"),
}
View Source
var WindowsBuild = pipeline.Job{
	Name:   "Windows Build",
	Script: List("cmake -G \"Visual Studio 17 2022\" -A x64 -DENABLE_LTO=off -DBUILD_sshdig=on ..", "msbuild /verbosity:minimal /maxcpucount /property:Configuration=Debug Wireshark.sln", "msbuild /verbosity:minimal /maxcpucount /property:Configuration=Debug test-programs.vcxproj", "C:\\Windows\\py.exe -m pytest --disable-gui --build-type=Debug --junitxml=../windows_tests.xml"),
	Needs:  []any{CommitCheck},
	Tags:   List("wireshark-windows-merge-req"),
}
View Source
var WindowsX64Package = pipeline.Job{
	Name:   "Windows x64 Package",
	Script: List("C:\\Windows\\py.exe ..\\tools\\make-version.py --set-release --wireshark-version-file=wireshark_version.txt --stratoshark-version-file=stratoshark_version.txt ..", "cmake -G \"Visual Studio 17 2022\" -A x64 -DENABLE_LTO=off -DBUILD_stratoshark=on -DFALCO_PLUGINS=\"$FALCO_PLUGIN_DIR/cloudtrail.dll;$FALCO_PLUGIN_DIR/gcpaudit.dll;$FALCO_PLUGIN_DIR/k8saudit.dll\" -DENABLE_SIGNED_NSIS=on ..", "msbuild /verbosity:minimal \"/consoleloggerparameters:PerformanceSummary;NoSummary\" /maxcpucount Wireshark.sln", "msbuild /verbosity:minimal /maxcpucount test-programs.vcxproj", "msbuild /verbosity:minimal /maxcpucount wireshark_nsis_prep.vcxproj", "msbuild /verbosity:minimal /maxcpucount stratoshark_nsis_prep.vcxproj", "msbuild /verbosity:minimal /maxcpucount wireshark_wix_prep.vcxproj", "C:\\gitlab-builds\\bin\\sign-files.ps1 -Recurse -Path run\\RelWithDebInfo", "msbuild /verbosity:minimal wireshark_nsis.vcxproj", "msbuild /verbosity:minimal stratoshark_nsis.vcxproj", "msbuild /verbosity:minimal wireshark_wix.vcxproj", "C:\\gitlab-builds\\bin\\sign-files.ps1 -Path packaging\\wix\\Wireshark-*.msi", "msbuild /verbosity:minimal wireshark_portableapps.vcxproj", "C:\\gitlab-builds\\bin\\sign-files.ps1 -Path packaging\\portableapps\\WiresharkPortable*.exe", "$plugins = Get-ChildItem run\\RelWithDebInfo\\plugins\\*\\*.dll ; signtool verify /q /pa /all run\\RelWithDebInfo\\*.exe run\\RelWithDebInfo\\extcap\\wireshark\\*.exe $plugins run\\RelWithDebInfo\\libwireshark.dll run\\RelWithDebInfo\\libwiretap.dll run\\RelWithDebInfo\\libwsutil.dll packaging\\nsis\\Wireshark-*-x64.exe packaging\\nsis\\Stratoshark-*-x64.exe packaging\\wix\\Wireshark-*-x64.msi packaging\\portableapps\\WiresharkPortable??_*.paf.exe", "msbuild /verbosity:minimal pdb_zip_package.vcxproj", "C:\\gitlab-builds\\bin\\mse-scan.ps1", "run\\RelWithDebInfo\\tshark --version", "$packages = Get-ChildItem \"packaging\\nsis\\Wireshark-*-x64.exe\", \"packaging\\nsis\\Stratoshark-*-x64.exe\", \"packaging\\wix\\Wireshark-*-x64.msi\", \"packaging\\portableapps\\WiresharkPortable??_*.paf.exe\", \"Wireshark-pdb-*x64.zip\"", "foreach ($package in $packages) { Write-Host $package.name $(Get-Filehash -Algorithm SHA256 $package).Hash.ToLower() $package.length \"bytes\" }", "if (Test-Path env:MC_DESTINATION_WINDOWS_X64) { C:\\gitlab-builds\\bin\\mc --quiet cp $packages \"$env:MC_DESTINATION_WINDOWS_X64/\" }", "$wiresharkVersion = Get-Content .\\wireshark_version.txt", "$wiresharkNsisSha256 = (Get-FileHash -Algorithm SHA256 .\\packaging\\nsis\\Wireshark-*-x64.exe).Hash.ToLower()", "Set-Content -Path wireshark-release-info-$($wiresharkVersion)-windows-x64.ini -Value (\"[DEFAULT]`nnsis_sha256 = $wiresharkNsisSha256\")", "$stratosharkVersion = Get-Content .\\stratoshark_version.txt", "$stratosharkNsisSha256 = (Get-FileHash -Algorithm SHA256 .\\packaging\\nsis\\Stratoshark-*-x64.exe).Hash.ToLower()", "Set-Content -Path stratoshark-release-info-$($stratosharkVersion)-windows-x64.ini -Value (\"[DEFAULT]`nnsis_sha256 = $stratosharkNsisSha256\")", "if (Test-Path env:MC_DESTINATION_RELEASE) { C:\\gitlab-builds\\bin\\mc --quiet cp $(Get-ChildItem \"*shark-release-info-*-windows-*.ini\") \"$env:MC_DESTINATION_RELEASE/\" }", "C:\\Windows\\py.exe -m pytest --enable-release"),
	Variables: Json{
		"FALCO_PLUGIN_DIR": "$WIRESHARK_BASE_DIR/wireshark-x64-libs/falcosecurity-plugins-2025-11-24-1-x64-ws",
	},
	Artifacts: pipeline.Artifacts{
		Paths: List("build/*shark-release-info-*-windows-*.ini"),
	},
	Tags: List("wireshark-windows-x64-package"),
}

Functions

This section is empty.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL