name: 🔨 Tests on: push: branches: ["dev"] paths: - '**.go' - '**.mod' pull_request: paths: - '**.go' - '**.mod' workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: lint: name: "Lint" if: "${{ !endsWith(github.actor, '[bot]') }}" runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: projectdiscovery/actions/setup/go@v1 - uses: projectdiscovery/actions/golangci-lint@v1 tests: name: "Tests" needs: ["lint"] strategy: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macOS-latest] runs-on: "${{ matrix.os }}" steps: - uses: actions/checkout@v4 - uses: projectdiscovery/actions/setup/go@v1 - run: make vet - run: make build - run: make test env: GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" PDCP_API_KEY: "${{ secrets.PDCP_API_KEY }}" - run: go run -race . -l ../functional-test/targets.txt -id tech-detect,tls-version if: ${{ matrix.os != 'windows-latest' }} # known issue: https://github.com/golang/go/issues/46099 working-directory: cmd/nuclei/ sdk: name: "Run example SDK" needs: ["tests"] runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: projectdiscovery/actions/setup/go@v1 - name: "Simple" run: go run . working-directory: examples/simple/ # - run: go run . # Temporarily disabled very flaky in github actions # working-directory: examples/advanced/ - name: "with Speed Control" run: go run . working-directory: examples/with_speed_control/ integration: name: "Integration tests" needs: ["tests"] strategy: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macOS-latest] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 - uses: projectdiscovery/actions/setup/go@v1 - uses: actions/setup-python@v4 with: python-version: '3.10' - run: bash run.sh "${{ matrix.os }}" env: GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" PDCP_API_KEY: "${{ secrets.PDCP_API_KEY }}" timeout-minutes: 50 working-directory: integration_tests/ functional: name: "Functional tests" needs: ["tests"] strategy: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macOS-latest] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 - uses: projectdiscovery/actions/setup/go@v1 - run: bash run.sh "${{ matrix.os }}" env: GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" working-directory: cmd/functional-test/ validate: name: "Template validate" needs: ["tests"] runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: projectdiscovery/actions/setup/go@v1 - run: make template-validate codeql: name: "CodeQL analysis" needs: ["tests"] runs-on: ubuntu-latest permissions: actions: read contents: read security-events: write steps: - uses: actions/checkout@v4 - uses: github/codeql-action/init@v2 with: languages: 'go' - uses: github/codeql-action/autobuild@v2 - uses: github/codeql-action/analyze@v2 release: name: "Release test" needs: ["tests"] runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: projectdiscovery/actions/setup/go@v1 - uses: projectdiscovery/actions/goreleaser@v1