From b1a63834ce744b09ffd721206f6874b967bd8a07 Mon Sep 17 00:00:00 2001 From: Tom Hu <88201630+thomasrockhu-codecov@users.noreply.github.com> Date: Wed, 22 Jan 2025 13:08:22 -0300 Subject: [PATCH] Th/add commands (#1745) * chore(deps): bump wrapper to 0.0.33 * feat: allow for new commands * fix: bump to 0.0.34 --- CHANGELOG.md | 2 +- action.yml | 14 +++++ dist/codecov.sh | 135 ++++++++++++++++++++++++++++-------------------- src/scripts | 2 +- 4 files changed, 96 insertions(+), 57 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index be64204df..61ff836fc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1009,4 +1009,4 @@ for the full list. ### Dependencies and Misc - #166 Bump requestretry from 4.1.1 to 4.1.2 - #169 Bump typescript from 4.0.5 to 4.1.2 -- #178 Bump @types/jest from 26.0.15 to 26.0.19 \ No newline at end of file +- #178 Bump @types/jest from 26.0.15 to 26.0.19 diff --git a/action.yml b/action.yml index 736e5c421..4639bb459 100644 --- a/action.yml +++ b/action.yml @@ -4,6 +4,9 @@ name: 'Codecov' description: 'GitHub Action that uploads coverage reports for your repository to codecov.io' author: 'Thomas Hu <@thomasrockhu-codecov> | Codecov' inputs: + base_sha: + description: 'The base SHA to select. This is only used in the "pr-base-picking" run command' + required: false binary: description: 'The file location of a pre-downloaded version of the CLI. If specified, integrity checking will be bypassed.' required: false @@ -52,6 +55,9 @@ inputs: flags: description: 'Comma-separated list of flags to upload to group coverage metrics.' required: false + force: + description: 'Only used for empty-upload run command' + required: false git_service: description: 'Override the git_service (e.g. github_enterprise)' required: false @@ -115,6 +121,10 @@ inputs: root_dir: description: 'Root folder from which to consider paths on the network section. Defaults to current working directory.' required: false + run_command: + description: 'Choose which CLI command to run. Options are "upload-coverage", "empty-upload", "pr-base-picking", "send-notifications". "upload-coverage" is run by default.' + required: false + default: 'upload-coverage' skip_validation: description: 'Skip integrity checking of the CLI. This is NOT recommended.' required: false @@ -253,6 +263,7 @@ runs: shell: bash working-directory: ${{ inputs.working-directory }} env: + CC_BASE_SHA: ${{ inputs.base_sha }} CC_BINARY: ${{ inputs.binary }} CC_BUILD: ${{ inputs.override_build }} CC_BUILD_URL: ${{ inputs.override_build_url }} @@ -268,6 +279,7 @@ runs: CC_FAIL_ON_ERROR: ${{ inputs.fail_ci_if_error }} CC_FILES: ${{ inputs.files }} CC_FLAGS: ${{ inputs.flags }} + CC_FORCE: ${{ inputs.force }} CC_GCOV_ARGS: ${{ inputs.gcov_args }} CC_GCOV_EXECUTABLE: ${{ inputs.gcov_executable }} CC_GCOV_IGNORE: ${{ inputs.gcov_ignore }} @@ -284,6 +296,8 @@ runs: CC_PARENT_SHA: ${{ inputs.commit_parent }} CC_PLUGINS: ${{ inputs.plugins }} CC_REPORT_TYPE: ${{ inputs.report_type }} + CC_RUN_COMMAND: ${{ inputs.run_command }} + CC_SERVICE: ${{ inputs.git_service }} CC_SKIP_VALIDATION: ${{ inputs.skip_validation }} CC_SLUG: ${{ inputs.slug }} CC_SWIFT_PROJECT: ${{ inputs.swift_project }} diff --git a/dist/codecov.sh b/dist/codecov.sh index 224d6cee5..065c30d4b 100755 --- a/dist/codecov.sh +++ b/dist/codecov.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -CC_WRAPPER_VERSION="0.0.32" +CC_WRAPPER_VERSION="0.0.34" set +u say() { echo -e "$1" @@ -47,6 +47,7 @@ say " _____ _ " CC_VERSION="${CC_VERSION:-latest}" CC_FAIL_ON_ERROR="${CC_FAIL_ON_ERROR:-false}" +CC_RUN_COMMAND="${CC_RUN_COMMAND:-upload-coverage}" if [ -n "$CC_BINARY" ]; then if [ -f "$CC_BINARY" ]; @@ -84,7 +85,7 @@ else curl -Os "$cc_url" say "$g==>$x Finishing downloading $b${CC_OS}:${CC_VERSION}$x" version_url="https://cli.codecov.io/api/${CC_OS}/${CC_VERSION}" - version=$(curl -s "$version_url" -H "Accept:application/json" | jq -r '.version') + version=$(curl -s "$version_url" -H "Accept:application/json" | tr \{ '\n' | tr , '\n' | tr \} '\n' | grep "\"version\"" | awk -F'"' '{print $4}' | tail -1) say " Version: $b$version$x" say " " fi @@ -136,91 +137,115 @@ then fi cc_cli_args+=( $(write_truthy_args CC_DISABLE_TELEM) ) cc_cli_args+=( $(write_truthy_args CC_VERBOSE) ) -cc_uc_args=() +if [ -n "$CC_TOKEN_VAR" ]; +then + token="$(eval echo \$$CC_TOKEN_VAR)" +else + token="$(eval echo $CC_TOKEN)" +fi +say "$g ->$x Token of length ${#token} detected" +token_str="" +token_arg=() +if [ -n "$token" ]; +then + token_str+=" -t " + token_arg+=( " -t " "$token") +fi +if [ "$CC_RUN_COMMAND" == "upload-coverage" ]; then +cc_run_args=() # Args for create commit -cc_uc_args+=( $(write_truthy_args CC_FAIL_ON_ERROR) ) -cc_uc_args+=( $(k_arg GIT_SERVICE) $(v_arg GIT_SERVICE)) -cc_uc_args+=( $(k_arg PARENT_SHA) $(v_arg PARENT_SHA)) -cc_uc_args+=( $(k_arg PR) $(v_arg PR)) -cc_uc_args+=( $(k_arg SHA) $(v_arg SHA)) -cc_uc_args+=( $(k_arg SLUG) $(v_arg SLUG)) +cc_run_args+=( $(write_truthy_args CC_FAIL_ON_ERROR) ) +cc_run_args+=( $(k_arg GIT_SERVICE) $(v_arg GIT_SERVICE)) +cc_run_args+=( $(k_arg PARENT_SHA) $(v_arg PARENT_SHA)) +cc_run_args+=( $(k_arg PR) $(v_arg PR)) +cc_run_args+=( $(k_arg SHA) $(v_arg SHA)) +cc_run_args+=( $(k_arg SLUG) $(v_arg SLUG)) # Args for create report -cc_uc_args+=( $(k_arg CODE) $(v_arg CODE)) +cc_run_args+=( $(k_arg CODE) $(v_arg CODE)) # Args for do upload -cc_uc_args+=( $(k_arg ENV) $(v_arg ENV)) +cc_run_args+=( $(k_arg ENV) $(v_arg ENV)) OLDIFS=$IFS;IFS=, -cc_uc_args+=( $(k_arg BRANCH) $(v_arg BRANCH)) -cc_uc_args+=( $(k_arg BUILD) $(v_arg BUILD)) -cc_uc_args+=( $(k_arg BUILD_URL) $(v_arg BUILD_URL)) -cc_uc_args+=( $(k_arg DIR) $(v_arg DIR)) -cc_uc_args+=( $(write_truthy_args CC_DISABLE_FILE_FIXES) ) -cc_uc_args+=( $(write_truthy_args CC_DISABLE_SEARCH) ) -cc_uc_args+=( $(write_truthy_args CC_DRY_RUN) ) +cc_run_args+=( $(k_arg BRANCH) $(v_arg BRANCH)) +cc_run_args+=( $(k_arg BUILD) $(v_arg BUILD)) +cc_run_args+=( $(k_arg BUILD_URL) $(v_arg BUILD_URL)) +cc_run_args+=( $(k_arg DIR) $(v_arg DIR)) +cc_run_args+=( $(write_truthy_args CC_DISABLE_FILE_FIXES) ) +cc_run_args+=( $(write_truthy_args CC_DISABLE_SEARCH) ) +cc_run_args+=( $(write_truthy_args CC_DRY_RUN) ) if [ -n "$CC_EXCLUDES" ]; then for directory in $CC_EXCLUDES; do - cc_uc_args+=( "--exclude" "$directory" ) + cc_run_args+=( "--exclude" "$directory" ) done fi if [ -n "$CC_FILES" ]; then for file in $CC_FILES; do - cc_uc_args+=( "--file" "$file" ) + cc_run_args+=( "--file" "$file" ) done fi if [ -n "$CC_FLAGS" ]; then for flag in $CC_FLAGS; do - cc_uc_args+=( "--flag" "$flag" ) + cc_run_args+=( "--flag" "$flag" ) done fi -cc_uc_args+=( $(k_arg GCOV_ARGS) $(v_arg GCOV_ARGS)) -cc_uc_args+=( $(k_arg GCOV_EXECUTABLE) $(v_arg GCOV_EXECUTABLE)) -cc_uc_args+=( $(k_arg GCOV_IGNORE) $(v_arg GCOV_IGNORE)) -cc_uc_args+=( $(k_arg GCOV_INCLUDE) $(v_arg GCOV_INCLUDE)) -cc_uc_args+=( $(write_truthy_args CC_HANDLE_NO_REPORTS_FOUND) ) -cc_uc_args+=( $(k_arg JOB_CODE) $(v_arg JOB_CODE)) -cc_uc_args+=( $(write_truthy_args CC_LEGACY) ) +cc_run_args+=( $(k_arg GCOV_ARGS) $(v_arg GCOV_ARGS)) +cc_run_args+=( $(k_arg GCOV_EXECUTABLE) $(v_arg GCOV_EXECUTABLE)) +cc_run_args+=( $(k_arg GCOV_IGNORE) $(v_arg GCOV_IGNORE)) +cc_run_args+=( $(k_arg GCOV_INCLUDE) $(v_arg GCOV_INCLUDE)) +cc_run_args+=( $(write_truthy_args CC_HANDLE_NO_REPORTS_FOUND) ) +cc_run_args+=( $(k_arg JOB_CODE) $(v_arg JOB_CODE)) +cc_run_args+=( $(write_truthy_args CC_LEGACY) ) if [ -n "$CC_NAME" ]; then - cc_uc_args+=( "--name" "$CC_NAME" ) + cc_run_args+=( "--name" "$CC_NAME" ) fi -cc_uc_args+=( $(k_arg NETWORK_FILTER) $(v_arg NETWORK_FILTER)) -cc_uc_args+=( $(k_arg NETWORK_PREFIX) $(v_arg NETWORK_PREFIX)) -cc_uc_args+=( $(k_arg NETWORK_ROOT_FOLDER) $(v_arg NETWORK_ROOT_FOLDER)) +cc_run_args+=( $(k_arg NETWORK_FILTER) $(v_arg NETWORK_FILTER)) +cc_run_args+=( $(k_arg NETWORK_PREFIX) $(v_arg NETWORK_PREFIX)) +cc_run_args+=( $(k_arg NETWORK_ROOT_FOLDER) $(v_arg NETWORK_ROOT_FOLDER)) if [ -n "$CC_PLUGINS" ]; then for plugin in $CC_PLUGINS; do - cc_uc_args+=( "--plugin" "$plugin" ) + cc_run_args+=( "--plugin" "$plugin" ) done fi -cc_uc_args+=( $(k_arg REPORT_TYPE) $(v_arg REPORT_TYPE)) -cc_uc_args+=( $(k_arg SWIFT_PROJECT) $(v_arg SWIFT_PROJECT)) +cc_run_args+=( $(k_arg REPORT_TYPE) $(v_arg REPORT_TYPE)) +cc_run_args+=( $(k_arg SWIFT_PROJECT) $(v_arg SWIFT_PROJECT)) IFS=$OLDIFS -unset NODE_OPTIONS -# See https://github.com/codecov/uploader/issues/475 -chmod +x $cc_command -if [ -n "$CC_TOKEN_VAR" ]; -then - token="$(eval echo \$$CC_TOKEN_VAR)" +elif [ "$CC_RUN_COMMAND" == "empty-upload" ]; then +cc_run_args=() +cc_run_args+=( $(write_truthy_args CC_FAIL_ON_ERROR) ) +cc_run_args+=( $(write_truthy_args CC_FORCE) ) +cc_run_args+=( $(k_arg GIT_SERVICE) $(v_arg GIT_SERVICE)) +cc_run_args+=( $(k_arg SHA) $(v_arg SHA)) +cc_run_args+=( $(k_arg SLUG) $(v_arg SLUG)) +elif [ "$CC_RUN_COMMAND" == "pr-base-picking" ]; then +cc_run_args=() +cc_run_args+=( $(k_arg BASE_SHA) $(v_arg BASE_SHA)) +cc_run_args+=( $(k_arg PR) $(v_arg PR)) +cc_run_args+=( $(k_arg SLUG) $(v_arg SLUG)) +cc_run_args+=( $(k_arg SERVICE) $(v_arg SERVICE)) +elif [ "$CC_RUN_COMMAND" == "send-notifications" ]; then +cc_run_args=() +cc_run_args+=( $(k_arg SHA) $(v_arg SHA)) +cc_run_args+=( $(write_truthy_args CC_FAIL_ON_ERROR) ) +cc_run_args+=( $(k_arg GIT_SERVICE) $(v_arg GIT_SERVICE)) +cc_run_args+=( $(k_arg SLUG) $(v_arg SLUG)) else - token="$(eval echo $CC_TOKEN)" + exit_if_error "Invalid run command specified: $CC_RUN_COMMAND" + exit fi -say "$g ->$x Token of length ${#token} detected" -token_str="" -token_arg=() -if [ -n "$token" ]; -then - token_str+=" -t " - token_arg+=( " -t " "$token") -fi -say "$g==>$x Running upload-coverage" -say " $b$cc_command $(echo "${cc_cli_args[@]}") upload-coverage$token_str $(echo "${cc_uc_args[@]}")$x" +unset NODE_OPTIONS +# See https://github.com/codecov/uploader/issues/475 +chmod +x "$cc_command" +say "$g==>$x Running $CC_RUN_COMMAND" +say " $b$cc_command $(echo "${cc_cli_args[@]}")$CC_RUN_COMMAND$token_str $(echo "${cc_run_args[@]}")$x" if ! $cc_command \ ${cc_cli_args[*]} \ - upload-coverage \ + ${CC_RUN_COMMAND} \ ${token_arg[*]} \ - "${cc_uc_args[@]}"; + "${cc_run_args[@]}"; then - exit_if_error "Failed to upload coverage" + exit_if_error "Failed to run $CC_RUN_COMMAND" fi diff --git a/src/scripts b/src/scripts index b7950068a..fc1e2e73c 160000 --- a/src/scripts +++ b/src/scripts @@ -1 +1 @@ -Subproject commit b7950068a521c1d34fe35cf2157b3755918338b5 +Subproject commit fc1e2e73ced08ad84f9e9b67f853e3b67108eddf