From 59b97f26c0c658d0ecf1ed51010eea02137fd35c Mon Sep 17 00:00:00 2001 From: Max Golionko <8kirk8@gmail.com> Date: Wed, 18 Jan 2023 14:42:27 -0500 Subject: [PATCH] CI: split js and go codeql, split test and build, enable matrix for test (#3670) * split js and go codeql, split test and build, enable matrix for test * checkout before go setup * enable build for PRs as well * update filter --- .github/workflows/codeql-analysis-js.yml | 42 +++++++++++++ .github/workflows/codeql-analysis.yml | 78 +++++++++++++----------- .github/workflows/main-test.yml | 68 +++++++++++++++++++++ .github/workflows/main.yml | 46 ++++---------- 4 files changed, 166 insertions(+), 68 deletions(-) create mode 100644 .github/workflows/codeql-analysis-js.yml create mode 100644 .github/workflows/main-test.yml diff --git a/.github/workflows/codeql-analysis-js.yml b/.github/workflows/codeql-analysis-js.yml new file mode 100644 index 000000000..072034159 --- /dev/null +++ b/.github/workflows/codeql-analysis-js.yml @@ -0,0 +1,42 @@ +name: "CodeQL - JS" + +on: + push: + branches: [master, cluster] + paths: + - "**.js" + pull_request: + # The branches below must be a subset of the branches above + branches: [master, cluster] + paths: + - "**.js" + schedule: + - cron: "30 18 * * 2" + +jobs: + analyze: + name: Analyze + runs-on: ubuntu-latest + permissions: + actions: read + contents: read + security-events: write + + strategy: + fail-fast: false + matrix: + language: ["javascript"] + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Initialize CodeQL + uses: github/codeql-action/init@v2 + with: + languages: ${{ matrix.language }} + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v2 + with: + category: "javascript" diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 7172405c8..d3b4cfb93 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -13,12 +13,20 @@ name: "CodeQL" on: push: - branches: [ master, cluster ] + branches: [master, cluster] + paths-ignore: + - "**.md" + - "**.txt" + - "**.js" pull_request: # The branches below must be a subset of the branches above - branches: [ master, cluster ] + branches: [master, cluster] + paths-ignore: + - "**.md" + - "**.txt" + - "**.js" schedule: - - cron: '30 18 * * 2' + - cron: "30 18 * * 2" jobs: analyze: @@ -32,45 +40,47 @@ jobs: strategy: fail-fast: false matrix: - language: [ 'go' ] + language: ["go"] # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ] # Learn more about CodeQL language support at https://git.io/codeql-language-support steps: - - name: Checkout repository - uses: actions/checkout@v3 + - name: Checkout repository + uses: actions/checkout@v3 - - name: Set up Go - uses: actions/setup-go@v2 - with: - go-version: 1.19 - if: ${{ matrix.language == 'go' }} + - name: Set up Go + uses: actions/setup-go@v3 + with: + go-version: 1.19.5 + check-latest: true + cache: true + if: ${{ matrix.language == 'go' }} - # Initializes the CodeQL tools for scanning. - - name: Initialize CodeQL - uses: github/codeql-action/init@v2 - with: - languages: ${{ matrix.language }} - # If you wish to specify custom queries, you can do so here or in a config file. - # By default, queries listed here will override any specified in a config file. - # Prefix the list here with "+" to use these queries and those in the config file. - # queries: ./path/to/local/query, your-org/your-repo/queries@main + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v2 + with: + languages: ${{ matrix.language }} + # If you wish to specify custom queries, you can do so here or in a config file. + # By default, queries listed here will override any specified in a config file. + # Prefix the list here with "+" to use these queries and those in the config file. + # queries: ./path/to/local/query, your-org/your-repo/queries@main - # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). - # If this step fails, then you should remove it and run the build manually (see below) - - name: Autobuild - uses: github/codeql-action/autobuild@v2 + # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). + # If this step fails, then you should remove it and run the build manually (see below) + - name: Autobuild + uses: github/codeql-action/autobuild@v2 - # ℹī¸ Command-line programs to run using the OS shell. - # 📚 https://git.io/JvXDl + # ℹī¸ Command-line programs to run using the OS shell. + # 📚 https://git.io/JvXDl - # ✏ī¸ If the Autobuild fails above, remove it and uncomment the following three lines - # and modify them (or add more) to build your code if your project - # uses a compiled language + # ✏ī¸ If the Autobuild fails above, remove it and uncomment the following three lines + # and modify them (or add more) to build your code if your project + # uses a compiled language - #- run: | - # make bootstrap - # make release + #- run: | + # make bootstrap + # make release - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2 + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v2 diff --git a/.github/workflows/main-test.yml b/.github/workflows/main-test.yml new file mode 100644 index 000000000..9d20bcf0d --- /dev/null +++ b/.github/workflows/main-test.yml @@ -0,0 +1,68 @@ +name: main - test +on: + push: + branches: + - master + - cluster + paths-ignore: + - "docs/**" + - "**.md" + pull_request: + branches: + - master + - cluster + paths-ignore: + - "docs/**" + - "**.md" +permissions: + contents: read + +jobs: + lint: + name: lint + runs-on: ubuntu-latest + steps: + - name: Code checkout + uses: actions/checkout@v3 + + - name: Setup Go + uses: actions/setup-go@v3 + with: + go-version: 1.19.5 + check-latest: true + cache: true + + - name: Dependencies + run: | + make install-golint + make install-errcheck + make install-golangci-lint + make check-all + git diff --exit-code + + test: + needs: lint + strategy: + matrix: + scenario: ["test-full", "test-pure", "test-full-386"] + name: test + runs-on: ubuntu-latest + steps: + - name: Code checkout + uses: actions/checkout@v3 + + - name: Setup Go + uses: actions/setup-go@v3 + with: + go-version: 1.19.5 + check-latest: true + cache: true + + - name: run tests + run: | + make ${{ matrix.scenario}} + + - name: Publish coverage + uses: codecov/codecov-action@v3 + with: + file: ./coverage.txt diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index c3e4409f0..55ce413ae 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,19 +1,10 @@ name: main on: - push: - branches: - - master - - cluster - paths-ignore: - - 'docs/**' - - '**.md' - pull_request: - branches: - - master - - cluster - paths-ignore: - - 'docs/**' - - '**.md' + workflow_run: + workflows: ["main - test"] + types: + - completed + permissions: contents: read @@ -22,30 +13,17 @@ jobs: name: Build runs-on: ubuntu-latest steps: + - name: Code checkout + uses: actions/checkout@v3 + - name: Setup Go - uses: actions/setup-go@main + uses: actions/setup-go@v3 with: go-version: 1.19.5 - id: go - - name: Code checkout - uses: actions/checkout@master - - name: Dependencies - run: | - make install-golint - make install-errcheck - make install-golangci-lint + check-latest: true + cache: true + - name: Build run: | - export PATH=$PATH:$(go env GOPATH)/bin # temporary fix. See https://github.com/actions/setup-go/issues/14 - make check-all - git diff --exit-code - make test-full - make test-pure - make test-full-386 make victoria-metrics-crossbuild make vmuitils-crossbuild - - name: Publish coverage - uses: codecov/codecov-action@v3 - with: - file: ./coverage.txt -