name: "Go: workaround for indirect tracing" description: "Checks that our workaround for indirect tracing for Go 1.21+ on Linux works" # only Linux is affected operatingSystems: ["ubuntu"] # pinned to a version which does not support statically linked binaries for indirect tracing versions: ["stable-v2.14.6"] steps: - uses: actions/setup-go@v4 with: # We need a Go version that ships with statically linked binaries on Linux go-version: ">=1.21.0" - uses: ./../action/init with: languages: go tools: ${{ steps.prepare-test.outputs.tools-url }} - name: Build code shell: bash run: go build main.go - uses: ./../action/analyze with: upload-database: false - shell: bash run: | if [[ -z "${CODEQL_ACTION_GO_BINARY}" ]]; then echo "Expected the workaround for indirect tracing of static binaries to trigger, but the" \ "CODEQL_ACTION_GO_BINARY environment variable is not set." exit 1 fi if [[ ! -f "${CODEQL_ACTION_GO_BINARY}" ]]; then echo "CODEQL_ACTION_GO_BINARY is set, but the corresponding script does not exist." exit 1 fi # Once we start running Bash 4.2 in all environments, we can replace the # `! -z` flag with the more elegant `-v` which confirms that the variable # is actually unset and not potentially set to a blank value. if [[ ! -z "${CODEQL_ACTION_DID_AUTOBUILD_GOLANG}" ]]; then echo "Expected the Go autobuilder not to be run, but the" \ "CODEQL_ACTION_DID_AUTOBUILD_GOLANG environment variable was set." exit 1 fi cd "$RUNNER_TEMP/codeql_databases" if [[ ! -d go ]]; then echo "Did not find a Go database" exit 1 fi