mirror of
https://github.com/projectdiscovery/nuclei.git
synced 2025-12-17 14:05:28 +00:00
* feat: generate CPU profiles also adjust memory (heap) profiles ext to `.mem` Signed-off-by: Dwi Siswanto <git@dw1.io> * docs(DESIGN): add total samples for CPU profiles Signed-off-by: Dwi Siswanto <git@dw1.io> * chore(make): trimpath in go-build and append LDFLAGS ifneq "darwin" Signed-off-by: Dwi Siswanto <git@dw1.io> * chore: update goreleaser build * replace `go mod tidy` with `go mod download` and `go mod verify` * adjust indentations * add `-trimpath` flag * set `-pgo` flag to "`auto`" * add `ldflags` * quoting 386 GOARCH value Signed-off-by: Dwi Siswanto <git@dw1.io> * ci: add generate PGO workflow Signed-off-by: Dwi Siswanto <git@dw1.io> * chore(make): set CGO_ENABLED inline in go-build Signed-off-by: Dwi Siswanto <git@dw1.io> * refactor(main): streamline profile file creation Signed-off-by: Dwi Siswanto <git@dw1.io> * dummy: add PGO file (DO NOT MERGE) Signed-off-by: Dwi Siswanto <git@dw1.io> * feat: add main test (benchmark) Signed-off-by: Dwi Siswanto <git@dw1.io> * chore(make): add build-test Signed-off-by: Dwi Siswanto <git@dw1.io> * Revert "dummy: add PGO file (DO NOT MERGE)" This reverts commit ee877205f729be2f054c7d7d484a9244121acce6. * test(main): set Output to /dev/null Signed-off-by: Dwi Siswanto <git@dw1.io> * feat(output): add option to disable stdout via env var Signed-off-by: Dwi Siswanto <git@dw1.io> * test(main): set `types.Options.Output` to empty Signed-off-by: Dwi Siswanto <git@dw1.io> * chore(generate-pgo): add TODO note Signed-off-by: Dwi Siswanto <git@dw1.io> * ci: add reusable perf regression workflow Signed-off-by: Dwi Siswanto <git@dw1.io> * ci(perf-regression): enabe `DISABLE_STDOUT` Signed-off-by: Dwi Siswanto <git@dw1.io> --------- Signed-off-by: Dwi Siswanto <git@dw1.io>
44 lines
1.5 KiB
YAML
44 lines
1.5 KiB
YAML
name: 🔨 Performance Test
|
|
|
|
on:
|
|
schedule:
|
|
- cron: '0 0 * * 0' # Weekly
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
perf-test:
|
|
strategy:
|
|
matrix:
|
|
count: [50, 100, 150]
|
|
runs-on: ubuntu-latest-16-cores
|
|
if: github.repository == 'projectdiscovery/nuclei'
|
|
env:
|
|
LIST_FILE: "/tmp/targets-${{ matrix.count }}.txt"
|
|
PROFILE_MEM: "/tmp/nuclei-perf-test-${{ matrix.count }}"
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: projectdiscovery/actions/setup/go@v1
|
|
- run: make verify
|
|
- name: Generate list
|
|
run: for i in {1..${{ matrix.count }}}; do echo "https://honey.scanme.sh/?_=${i}" >> "${LIST_FILE}"; done
|
|
- run: go run . -l "${LIST_FILE}" -profile-mem="${PROFILE_MEM}"
|
|
env:
|
|
NUCLEI_ARGS: host-error-stats
|
|
working-directory: cmd/nuclei/
|
|
- uses: projectdiscovery/actions/flamegraph@v1
|
|
id: flamegraph-cpu
|
|
with:
|
|
profile: "${{ env.PROFILE_MEM }}.cpu"
|
|
name: "${{ env.FLAMEGRAPH_NAME }} CPU profiles"
|
|
continue-on-error: true
|
|
- uses: projectdiscovery/actions/flamegraph@v1
|
|
id: flamegraph-mem
|
|
with:
|
|
profile: "${{ env.PROFILE_MEM }}.mem"
|
|
name: "${{ env.FLAMEGRAPH_NAME }} memory profiles"
|
|
continue-on-error: true
|
|
- if: ${{ steps.flamegraph-mem.outputs.message == '' }}
|
|
run: |
|
|
echo "::notice::CPU flamegraph: ${{ steps.flamegraph-cpu.outputs.url }}"
|
|
echo "::notice::Memory (heap) flamegraph: ${{ steps.flamegraph-mem.outputs.url }}"
|