diff --git a/.github/workflows/frogbot-scan-and-fix.yml b/.github/workflows/frogbot-scan-and-fix.yml deleted file mode 100644 index 5de072c16..000000000 --- a/.github/workflows/frogbot-scan-and-fix.yml +++ /dev/null @@ -1,42 +0,0 @@ -name: "Frogbot Scan and Fix" -on: - schedule: - # The repository will be scanned once a day at 00:00 GMT. - - cron: "0 0 * * *" -permissions: - contents: write - pull-requests: write - security-events: write -jobs: - create-fix-pull-requests: - runs-on: ubuntu-latest - strategy: - matrix: - # The repository scanning will be triggered periodically on the following branches. - branch: [ "dev" ] - steps: - - uses: actions/checkout@v3 - with: - ref: ${{ matrix.branch }} - - # Install prerequisites - - name: Setup Go - uses: actions/setup-go@v3 - with: - go-version: 1.20.x - - - uses: jfrog/frogbot@v2 - env: - # [Mandatory] - # JFrog platform URL - JF_URL: ${{ secrets.FROGBOT_URL }} - - # [Mandatory if JF_USER and JF_PASSWORD are not provided] - # JFrog access token with 'read' permissions on Xray service - JF_ACCESS_TOKEN: ${{ secrets.FROGBOT_ACCESS_TOKEN }} - - # [Mandatory] - # The GitHub token automatically generated for the job - JF_GIT_TOKEN: ${{ secrets.GITHUB_TOKEN }} - JFROG_CLI_LOG_LEVEL: "DEBUG" - diff --git a/.github/workflows/frogbot-scan-pr.yml b/.github/workflows/frogbot-scan-pr.yml deleted file mode 100644 index 575d843e6..000000000 --- a/.github/workflows/frogbot-scan-pr.yml +++ /dev/null @@ -1,38 +0,0 @@ -name: "Frogbot Scan Pull Request" -on: - pull_request_target: - types: [opened, synchronize] -permissions: - pull-requests: write - contents: read -jobs: - scan-pull-request: - runs-on: ubuntu-latest - # A pull request needs to be approved, before Frogbot scans it. Any GitHub user who is associated with the - # "frogbot" GitHub environment can approve the pull request to be scanned. - environment: frogbot - steps: - - uses: actions/checkout@v3 - with: - ref: ${{ github.event.pull_request.head.sha }} - - # Install prerequisites - - name: Setup Go - uses: actions/setup-go@v3 - with: - go-version: 1.20.x - - - uses: jfrog/frogbot@v2 - env: - # [Mandatory] - # JFrog platform URL - JF_URL: ${{ secrets.FROGBOT_URL }} - - # [Mandatory if JF_USER and JF_PASSWORD are not provided] - # JFrog access token with 'read' permissions on Xray service - JF_ACCESS_TOKEN: ${{ secrets.FROGBOT_ACCESS_TOKEN }} - - # [Mandatory] - # The GitHub token automatically generated for the job - JF_GIT_TOKEN: ${{ secrets.GITHUB_TOKEN }} - JFROG_CLI_LOG_LEVEL: "DEBUG" diff --git a/.github/workflows/frogbot-scan-pull-request.yml b/.github/workflows/frogbot-scan-pull-request.yml new file mode 100644 index 000000000..2bf08dbb9 --- /dev/null +++ b/.github/workflows/frogbot-scan-pull-request.yml @@ -0,0 +1,126 @@ +name: "Frogbot Scan Pull Request" +on: + pull_request_target: + types: [ opened, synchronize ] +permissions: + pull-requests: write + contents: read +jobs: + scan-pull-request: + runs-on: ubuntu-latest + # A pull request needs to be approved before Frogbot scans it. Any GitHub user who is associated with the + # "frogbot" GitHub environment can approve the pull request to be scanned. + environment: frogbot + steps: + - uses: jfrog/frogbot@v2 + env: + # [Mandatory] + # JFrog platform URL (This functionality requires version 3.29.0 or above of Xray) + JF_URL: ${{ secrets.FROGBOT_URL }} + + # [Mandatory if JF_USER and JF_PASSWORD are not provided] + # JFrog access token with 'read' permissions on Xray service + JF_ACCESS_TOKEN: ${{ secrets.FROGBOT_ACCESS_TOKEN }} + + # [Mandatory if JF_ACCESS_TOKEN is not provided] + # JFrog username with 'read' permissions for Xray. Must be provided with JF_PASSWORD + # JF_USER: ${{ secrets.JF_USER }} + + # [Mandatory if JF_ACCESS_TOKEN is not provided] + # JFrog password. Must be provided with JF_USER + # JF_PASSWORD: ${{ secrets.JF_PASSWORD }} + + # [Mandatory] + # The GitHub token is automatically generated for the job + JF_GIT_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + # [Optional, default: https://api.github.com] + # API endpoint to GitHub + # JF_GIT_API_ENDPOINT: https://github.example.com + + # [Optional] + # By default, the Frogbot workflows download the Frogbot executable as well as other tools + # needed from https://releases.jfrog.io + # If the machine that runs Frogbot has no access to the internet, follow these steps to allow the + # executable to be downloaded from an Artifactory instance, which the machine has access to: + # + # 1. Login to the Artifactory UI, with a user who has admin credentials. + # 2. Create a Remote Repository with the following properties set. + # Under the 'Basic' tab: + # Package Type: Generic + # URL: https://releases.jfrog.io + # Under the 'Advanced' tab: + # Uncheck the 'Store Artifacts Locally' option + # 3. Set the value of the 'JF_RELEASES_REPO' variable with the Repository Key you created. + # JF_RELEASES_REPO: "" + + # [Optional] + # Configure the SMTP server to enable Frogbot to send emails with detected secrets in pull request scans. + # SMTP server URL including should the relevant port: (Example: smtp.server.com:8080) + # JF_SMTP_SERVER: "" + + # [Mandatory if JF_SMTP_SERVER is set] + # The username required for authenticating with the SMTP server. + # JF_SMTP_USER: "" + + # [Mandatory if JF_SMTP_SERVER is set] + # The password associated with the username required for authentication with the SMTP server. + # JF_SMTP_PASSWORD: "" + + ########################################################################## + ## If your project uses a 'frogbot-config.yml' file, you can define ## + ## the following variables inside the file, instead of here. ## + ########################################################################## + + # [Mandatory if the two conditions below are met] + # 1. The project uses yarn 2, NuGet or .NET Core to download its dependencies + # 2. The `installCommand` variable isn't set in your frogbot-config.yml file. + # + # The command that installs the project dependencies (e.g "nuget restore") + # JF_INSTALL_DEPS_CMD: "" + + # [Optional, default: "."] + # Relative path to the root of the project in the Git repository + # JF_WORKING_DIR: path/to/project/dir + + # [Optional] + # Xray Watches. Learn more about them here: https://www.jfrog.com/confluence/display/JFROG/Configuring+Xray+Watches + # JF_WATCHES: ,... + + # [Optional] + # JFrog project. Learn more about it here: https://www.jfrog.com/confluence/display/JFROG/Projects + # JF_PROJECT: + + # [Optional, default: "FALSE"] + # Displays all existing vulnerabilities, including the ones that were added by the pull request. + # JF_INCLUDE_ALL_VULNERABILITIES: "TRUE" + + # [Optional, default: "TRUE"] + # Fails the Frogbot task if any security issue is found. + # JF_FAIL: "FALSE" + + # [Optional] + # Frogbot will download the project dependencies if they're not cached locally. To download the + # dependencies from a virtual repository in Artifactory, set the name of the repository. There's no + # need to set this value, if it is set in the frogbot-config.yml file. + # JF_DEPS_REPO: "" + + # [Optional, Default: "FALSE"] + # If TRUE, Frogbot creates a single pull request with all the fixes. + # If false, Frogbot creates a separate pull request for each fix. + # JF_GIT_AGGREGATE_FIXES: "FALSE" + + # [Optional, Default: "FALSE"] + # Handle vulnerabilities with fix versions only + # JF_FIXABLE_ONLY: "TRUE" + + # [Optional] + # Set the minimum severity for vulnerabilities that should be fixed and commented on in pull requests + # The following values are accepted: Low, Medium, High or Critical + # JF_MIN_SEVERITY: "" + + # [Optional] + # List of comma separated email addresses to receive email notifications about secrets + # detected during pull request scanning. The notification is also sent to the email set + # in the committer git profile regardless of whether this variable is set or not. + # JF_EMAIL_RECEIVERS: "" \ No newline at end of file diff --git a/.github/workflows/frogbot-scan-repository.yml b/.github/workflows/frogbot-scan-repository.yml new file mode 100644 index 000000000..c75a19114 --- /dev/null +++ b/.github/workflows/frogbot-scan-repository.yml @@ -0,0 +1,124 @@ +name: "Frogbot Scan Repository" +on: + workflow_dispatch: + schedule: + # The repository will be scanned once a day at 00:00 GMT. + - cron: "0 0 * * *" +permissions: + contents: write + pull-requests: write + security-events: write +jobs: + scan-repository: + runs-on: ubuntu-latest + strategy: + matrix: + # The repository scanning will be triggered periodically on the following branches. + branch: [ "dev" ] + steps: + - uses: jfrog/frogbot@v2 + env: + # [Mandatory] + # JFrog platform URL (This functionality requires version 3.29.0 or above of Xray) + JF_URL: ${{ secrets.FROGBOT_URL }} + + # [Mandatory if JF_USER and JF_PASSWORD are not provided] + # JFrog access token with 'read' permissions on Xray service + JF_ACCESS_TOKEN: ${{ secrets.FROGBOT_ACCESS_TOKEN }} + + # [Mandatory if JF_ACCESS_TOKEN is not provided] + # JFrog username with 'read' permissions for Xray. Must be provided with JF_PASSWORD + # JF_USER: ${{ secrets.JF_USER }} + + # [Mandatory if JF_ACCESS_TOKEN is not provided] + # JFrog password. Must be provided with JF_USER + # JF_PASSWORD: ${{ secrets.JF_PASSWORD }} + + # [Mandatory] + # The GitHub token is automatically generated for the job + JF_GIT_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + # [Mandatory] + # The name of the branch on which Frogbot will perform the scan + JF_GIT_BASE_BRANCH: ${{ matrix.branch }} + + # [Optional, default: https://api.github.com] + # API endpoint to GitHub + # JF_GIT_API_ENDPOINT: https://github.example.com + + # [Optional] + # By default, the Frogbot workflows download the Frogbot executable as well as other tools + # needed from https://releases.jfrog.io + # If the machine that runs Frogbot has no access to the internet, follow these steps to allow the + # executable to be downloaded from an Artifactory instance, which the machine has access to: + # + # 1. Login to the Artifactory UI, with a user who has admin credentials. + # 2. Create a Remote Repository with the following properties set. + # Under the 'Basic' tab: + # Package Type: Generic + # URL: https://releases.jfrog.io + # Under the 'Advanced' tab: + # Uncheck the 'Store Artifacts Locally' option + # 3. Set the value of the 'JF_RELEASES_REPO' variable with the Repository Key you created. + # JF_RELEASES_REPO: "" + + ########################################################################## + ## If your project uses a 'frogbot-config.yml' file, you can define ## + ## the following variables inside the file, instead of here. ## + ########################################################################## + + # [Optional, default: "."] + # Relative path to the root of the project in the Git repository + # JF_WORKING_DIR: path/to/project/dir + + # [Optional] + # Xray Watches. Learn more about them here: https://www.jfrog.com/confluence/display/JFROG/Configuring+Xray+Watches + # JF_WATCHES: ,... + + # [Optional] + # JFrog project. Learn more about it here: https://www.jfrog.com/confluence/display/JFROG/Projects + # JF_PROJECT: + + # [Optional, default: "TRUE"] + # Fails the Frogbot task if any security issue is found. + # JF_FAIL: "FALSE" + + # [Optional] + # Frogbot will download the project dependencies, if they're not cached locally. To download the + # dependencies from a virtual repository in Artifactory, set the name of the repository. There's no + # need to set this value, if it is set in the frogbot-config.yml file. + # JF_DEPS_REPO: "" + + # [Optional] + # Template for the branch name generated by Frogbot when creating pull requests with fixes. + # The template must include ${BRANCH_NAME_HASH}, to ensure that the generated branch name is unique. + # The template can optionally include the ${IMPACTED_PACKAGE} and ${FIX_VERSION} variables. + # JF_BRANCH_NAME_TEMPLATE: "frogbot-${IMPACTED_PACKAGE}-${BRANCH_NAME_HASH}" + + # [Optional] + # Template for the commit message generated by Frogbot when creating pull requests with fixes + # The template can optionally include the ${IMPACTED_PACKAGE} and ${FIX_VERSION} variables. + # JF_COMMIT_MESSAGE_TEMPLATE: "Upgrade ${IMPACTED_PACKAGE} to ${FIX_VERSION}" + + # [Optional] + # Template for the pull request title generated by Frogbot when creating pull requests with fixes. + # The template can optionally include the ${IMPACTED_PACKAGE} and ${FIX_VERSION} variables. + # JF_PULL_REQUEST_TITLE_TEMPLATE: "[🐸 Frogbot] Upgrade ${IMPACTED_PACKAGE} to ${FIX_VERSION}" + + # [Optional, Default: "FALSE"] + # If TRUE, Frogbot creates a single pull request with all the fixes. + # If FALSE, Frogbot creates a separate pull request for each fix. + # JF_GIT_AGGREGATE_FIXES: "FALSE" + + # [Optional, Default: "FALSE"] + # Handle vulnerabilities with fix versions only + # JF_FIXABLE_ONLY: "TRUE" + + # [Optional] + # Set the minimum severity for vulnerabilities that should be fixed and commented on in pull requests + # The following values are accepted: Low, Medium, High or Critical + # JF_MIN_SEVERITY: "" + + # [Optional, Default: eco-system+frogbot@jfrog.com] + # Set the email of the commit author + # JF_GIT_EMAIL_AUTHOR: "" \ No newline at end of file diff --git a/testdata/xray/jas/iac/azure/vpc/module.tf b/testdata/xray/jas-test/iac/azure/vpc/module.tf similarity index 100% rename from testdata/xray/jas/iac/azure/vpc/module.tf rename to testdata/xray/jas-test/iac/azure/vpc/module.tf diff --git a/testdata/xray/jas/iac/azure/vpc/outputs.tf b/testdata/xray/jas-test/iac/azure/vpc/outputs.tf similarity index 100% rename from testdata/xray/jas/iac/azure/vpc/outputs.tf rename to testdata/xray/jas-test/iac/azure/vpc/outputs.tf diff --git a/testdata/xray/jas/iac/azure/vpc/variables.tf b/testdata/xray/jas-test/iac/azure/vpc/variables.tf similarity index 100% rename from testdata/xray/jas/iac/azure/vpc/variables.tf rename to testdata/xray/jas-test/iac/azure/vpc/variables.tf diff --git a/testdata/xray/jas/iac/azure/vpc/versions.tf b/testdata/xray/jas-test/iac/azure/vpc/versions.tf similarity index 100% rename from testdata/xray/jas/iac/azure/vpc/versions.tf rename to testdata/xray/jas-test/iac/azure/vpc/versions.tf diff --git a/testdata/xray/jas/iac/azure/vpc_pp/module.tf b/testdata/xray/jas-test/iac/azure/vpc_pp/module.tf similarity index 100% rename from testdata/xray/jas/iac/azure/vpc_pp/module.tf rename to testdata/xray/jas-test/iac/azure/vpc_pp/module.tf diff --git a/testdata/xray/jas/iac/azure/vpc_pp/outputs.tf b/testdata/xray/jas-test/iac/azure/vpc_pp/outputs.tf similarity index 100% rename from testdata/xray/jas/iac/azure/vpc_pp/outputs.tf rename to testdata/xray/jas-test/iac/azure/vpc_pp/outputs.tf diff --git a/testdata/xray/jas/iac/azure/vpc_pp/variables.tf b/testdata/xray/jas-test/iac/azure/vpc_pp/variables.tf similarity index 100% rename from testdata/xray/jas/iac/azure/vpc_pp/variables.tf rename to testdata/xray/jas-test/iac/azure/vpc_pp/variables.tf diff --git a/testdata/xray/jas/iac/azure/vpc_pp/versions.tf b/testdata/xray/jas-test/iac/azure/vpc_pp/versions.tf similarity index 100% rename from testdata/xray/jas/iac/azure/vpc_pp/versions.tf rename to testdata/xray/jas-test/iac/azure/vpc_pp/versions.tf diff --git a/testdata/xray/jas/iac/gcp/k8s-oss/files/chk_k8s_nat b/testdata/xray/jas-test/iac/gcp/k8s-oss/files/chk_k8s_nat similarity index 100% rename from testdata/xray/jas/iac/gcp/k8s-oss/files/chk_k8s_nat rename to testdata/xray/jas-test/iac/gcp/k8s-oss/files/chk_k8s_nat diff --git a/testdata/xray/jas/iac/gcp/k8s-oss/module.tf b/testdata/xray/jas-test/iac/gcp/k8s-oss/module.tf similarity index 100% rename from testdata/xray/jas/iac/gcp/k8s-oss/module.tf rename to testdata/xray/jas-test/iac/gcp/k8s-oss/module.tf diff --git a/testdata/xray/jas/iac/gcp/k8s-oss/outputs.tf b/testdata/xray/jas-test/iac/gcp/k8s-oss/outputs.tf similarity index 100% rename from testdata/xray/jas/iac/gcp/k8s-oss/outputs.tf rename to testdata/xray/jas-test/iac/gcp/k8s-oss/outputs.tf diff --git a/testdata/xray/jas/iac/gcp/k8s-oss/variables.tf b/testdata/xray/jas-test/iac/gcp/k8s-oss/variables.tf similarity index 100% rename from testdata/xray/jas/iac/gcp/k8s-oss/variables.tf rename to testdata/xray/jas-test/iac/gcp/k8s-oss/variables.tf diff --git a/testdata/xray/jas/iac/gcp/k8s-oss/versions.tf b/testdata/xray/jas-test/iac/gcp/k8s-oss/versions.tf similarity index 100% rename from testdata/xray/jas/iac/gcp/k8s-oss/versions.tf rename to testdata/xray/jas-test/iac/gcp/k8s-oss/versions.tf diff --git a/testdata/xray/jas/iac/gcp/k8s-pipelines-bp/files/chk_k8s_nat b/testdata/xray/jas-test/iac/gcp/k8s-pipelines-bp/files/chk_k8s_nat similarity index 100% rename from testdata/xray/jas/iac/gcp/k8s-pipelines-bp/files/chk_k8s_nat rename to testdata/xray/jas-test/iac/gcp/k8s-pipelines-bp/files/chk_k8s_nat diff --git a/testdata/xray/jas/iac/gcp/k8s-pipelines-bp/module.tf b/testdata/xray/jas-test/iac/gcp/k8s-pipelines-bp/module.tf similarity index 100% rename from testdata/xray/jas/iac/gcp/k8s-pipelines-bp/module.tf rename to testdata/xray/jas-test/iac/gcp/k8s-pipelines-bp/module.tf diff --git a/testdata/xray/jas/iac/gcp/k8s-pipelines-bp/outputs.tf b/testdata/xray/jas-test/iac/gcp/k8s-pipelines-bp/outputs.tf similarity index 100% rename from testdata/xray/jas/iac/gcp/k8s-pipelines-bp/outputs.tf rename to testdata/xray/jas-test/iac/gcp/k8s-pipelines-bp/outputs.tf diff --git a/testdata/xray/jas/iac/gcp/k8s-pipelines-bp/rbac.tf b/testdata/xray/jas-test/iac/gcp/k8s-pipelines-bp/rbac.tf similarity index 100% rename from testdata/xray/jas/iac/gcp/k8s-pipelines-bp/rbac.tf rename to testdata/xray/jas-test/iac/gcp/k8s-pipelines-bp/rbac.tf diff --git a/testdata/xray/jas/iac/gcp/k8s-pipelines-bp/variables.tf b/testdata/xray/jas-test/iac/gcp/k8s-pipelines-bp/variables.tf similarity index 100% rename from testdata/xray/jas/iac/gcp/k8s-pipelines-bp/variables.tf rename to testdata/xray/jas-test/iac/gcp/k8s-pipelines-bp/variables.tf diff --git a/testdata/xray/jas/iac/gcp/k8s-pipelines-bp/versions.tf b/testdata/xray/jas-test/iac/gcp/k8s-pipelines-bp/versions.tf similarity index 100% rename from testdata/xray/jas/iac/gcp/k8s-pipelines-bp/versions.tf rename to testdata/xray/jas-test/iac/gcp/k8s-pipelines-bp/versions.tf diff --git a/testdata/xray/jas/main.py b/testdata/xray/jas-test/main.py similarity index 100% rename from testdata/xray/jas/main.py rename to testdata/xray/jas-test/main.py diff --git a/testdata/xray/jas/requirements.txt b/testdata/xray/jas-test/requirements.txt similarity index 100% rename from testdata/xray/jas/requirements.txt rename to testdata/xray/jas-test/requirements.txt diff --git a/testdata/xray/jas/secrets/more_secrets/key b/testdata/xray/jas-test/secrets/more_secrets/key similarity index 100% rename from testdata/xray/jas/secrets/more_secrets/key rename to testdata/xray/jas-test/secrets/more_secrets/key diff --git a/testdata/xray/jas/secrets/more_secrets/sequence b/testdata/xray/jas-test/secrets/more_secrets/sequence similarity index 100% rename from testdata/xray/jas/secrets/more_secrets/sequence rename to testdata/xray/jas-test/secrets/more_secrets/sequence diff --git a/testdata/xray/jas/secrets/secret_generic/blacklist b/testdata/xray/jas-test/secrets/secret_generic/blacklist similarity index 100% rename from testdata/xray/jas/secrets/secret_generic/blacklist rename to testdata/xray/jas-test/secrets/secret_generic/blacklist diff --git a/testdata/xray/jas/secrets/secret_generic/gibberish b/testdata/xray/jas-test/secrets/secret_generic/gibberish similarity index 100% rename from testdata/xray/jas/secrets/secret_generic/gibberish rename to testdata/xray/jas-test/secrets/secret_generic/gibberish diff --git a/xray_test.go b/xray_test.go index 857c8da1f..a59e356b0 100644 --- a/xray_test.go +++ b/xray_test.go @@ -328,7 +328,7 @@ func TestXrayAuditMultiProjects(t *testing.T) { assert.NoError(t, fileutils.CopyDir(multiProject, tempDirPath, true, nil)) workingDirsFlag := fmt.Sprintf("--working-dirs=%s, %s ,%s, %s", filepath.Join(tempDirPath, "maven"), filepath.Join(tempDirPath, "nuget", "single"), - filepath.Join(tempDirPath, "python", "pip"), filepath.Join(tempDirPath, "jas")) + filepath.Join(tempDirPath, "python", "pip"), filepath.Join(tempDirPath, "jas-test")) // Configure a new server named "default" createJfrogHomeConfig(t, true) defer cleanTestsHomeEnv() @@ -667,7 +667,7 @@ func TestXrayOfflineDBSyncV3(t *testing.T) { } func TestXrayAuditJasSimpleJson(t *testing.T) { - output := testXrayAuditJas(t, string(utils.SimpleJson), "jas") + output := testXrayAuditJas(t, string(utils.SimpleJson), "jas-test") verifySimpleJsonJasResults(t, output, 9, 7, 2, 1) }