UNPKG

mcp-server-semgrep

Version:

MCP Server for Semgrep Integration - static code analysis with AI

139 lines (126 loc) 4.83 kB
# Push Semgrep Docker Image name: docker on: workflow_dispatch: inputs: message_to_print: type: string required: false push: branches: - develop pull_request: paths-ignore: - "**.md" jobs: docker-build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Pull previous image for caching purposes run: | docker pull returntocorp/semgrep:develop || : - name: Build semgrep image with default Dockerfile run: docker build -t returntocorp/semgrep:develop . - name: Check the semgrep Docker image run: ./scripts/validate-docker-build.sh returntocorp/semgrep:develop - name: Login to DockerHub env: DOCKERHUB_USER: ${{ secrets.DOCKER_USERNAME }} DOCKERHUB_PASS: ${{ secrets.DOCKER_PASSWORD }} run: ./.github/docker-login - name: Push semgrep image if on develop branch if: github.event_name == 'push' && github.ref == 'refs/heads/develop' run: docker push returntocorp/semgrep:develop - name: Push commit hash if PR # Don't run when PR is from a fork # For security, we do not autopush to docker when from PRs # said PRs do not have access to secrets so will fail anyway but # nicer to not have a "failing" CI job in the PR so don't even # try if we can detect is coming from a fork if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository # ok: run-shell-injection run: | tag=returntocorp/semgrep:${{ github.sha }} docker build -t "$tag" . docker push "$tag" # Extend the semgrep image, changing the entry point to bash and # adding some utilities. This image is meant for internal uses # such as benchmarks. - name: Build and push semgrep-dev image if on develop branch if: github.event_name == 'push' && github.ref == 'refs/heads/develop' run: | docker build \ -f dockerfiles/semgrep-dev.Dockerfile \ -t returntocorp/semgrep-dev:develop . docker push returntocorp/semgrep-dev:develop - name: Check PR title # ruleid: run-shell-injection run: | title="${{ github.event.pull_request.title }}" if [[ $title =~ ^octocat ]]; then echo "PR title starts with 'octocat'" exit 0 else echo "PR title did not start with 'octocat'" exit 1 fi - if: github.event_name == 'push' # ruleid: run-shell-injection run: | title="${{ github.event.pull_request.title }}" if [[ $title =~ ^octocat ]]; then echo "PR title starts with 'octocat'" exit 0 else echo "PR title did not start with 'octocat'" exit 1 fi - name: Print a message # ruleid: run-shell-injection run: | echo "${{github.event.inputs.message_to_print}}" - name: Show author email # ruleid: run-shell-injection run: | echo "${{ github.event.commits.fix-bug.author.email }}" - name: Show issue title # ruleid: run-shell-injection run: | echo "${{ github.event.issue.title }}" - name: benign # ok: run-shell-injection run: | AUTH_HEADER="Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}"; HEADER="Accept: application/vnd.github.v3+json"; # cf. https://github.com/magma/magma/blob/5caf0cb5151a9b0dce05985e6cb2cdcf70b94af5/.github/workflows/unit-test-workflow.yml - name: Download and Extract Artifacts env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # ok: run-shell-injection run: | mkdir -p artifacts && cd artifacts artifacts_url=${{ github.event.workflow_run.artifacts_url }} gh api "$artifacts_url" -q '.artifacts[] | [.name, .archive_download_url] | @tsv' | while read artifact do IFS=$'\t' read name url <<< "$artifact" gh api $url > "$name.zip" unzip -d "$name" "$name.zip" done - name: Show discussion title # ruleid: run-shell-injection run: | echo "${{ github.event.discussion.title }}" - name: Show discussion body # ruleid: run-shell-injection run: | echo "${{ github.event.discussion.body }}" - name: print input message # ruleid: run-shell-injection run: | echo "${{ inputs.message_to_print }}" - name: Use steps output # ruleid: run-shell-injection run: | echo "${{ steps.shell_command.outputs.some_value }}"