googleauth 0.16.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +11 -0
  3. data/CHANGELOG.md +18 -14
  4. data/README.md +21 -0
  5. data/SECURITY.md +7 -0
  6. data/lib/googleauth/application_default.rb +10 -25
  7. data/lib/googleauth/client_id.rb +10 -25
  8. data/lib/googleauth/compute_engine.rb +10 -25
  9. data/lib/googleauth/credentials.rb +10 -25
  10. data/lib/googleauth/credentials_loader.rb +11 -26
  11. data/lib/googleauth/default_credentials.rb +10 -25
  12. data/lib/googleauth/iam.rb +10 -25
  13. data/lib/googleauth/id_tokens/errors.rb +9 -23
  14. data/lib/googleauth/id_tokens/key_sources.rb +10 -23
  15. data/lib/googleauth/id_tokens/verifier.rb +9 -23
  16. data/lib/googleauth/id_tokens.rb +9 -23
  17. data/lib/googleauth/json_key_reader.rb +10 -25
  18. data/lib/googleauth/scope_util.rb +10 -25
  19. data/lib/googleauth/service_account.rb +30 -39
  20. data/lib/googleauth/signet.rb +10 -25
  21. data/lib/googleauth/stores/file_token_store.rb +10 -25
  22. data/lib/googleauth/stores/redis_token_store.rb +10 -25
  23. data/lib/googleauth/token_store.rb +10 -25
  24. data/lib/googleauth/user_authorizer.rb +10 -25
  25. data/lib/googleauth/user_refresh.rb +10 -25
  26. data/lib/googleauth/version.rb +11 -26
  27. data/lib/googleauth/web_user_authorizer.rb +10 -25
  28. data/lib/googleauth.rb +10 -25
  29. metadata +23 -88
  30. data/.github/CODEOWNERS +0 -7
  31. data/.github/CONTRIBUTING.md +0 -74
  32. data/.github/ISSUE_TEMPLATE/bug_report.md +0 -36
  33. data/.github/ISSUE_TEMPLATE/feature_request.md +0 -21
  34. data/.github/ISSUE_TEMPLATE/support_request.md +0 -7
  35. data/.github/workflows/ci.yml +0 -55
  36. data/.github/workflows/release-please.yml +0 -39
  37. data/.gitignore +0 -39
  38. data/.kokoro/populate-secrets.sh +0 -76
  39. data/.kokoro/release.cfg +0 -52
  40. data/.kokoro/release.sh +0 -18
  41. data/.kokoro/trampoline_v2.sh +0 -489
  42. data/.repo-metadata.json +0 -5
  43. data/.rspec +0 -2
  44. data/.rubocop.yml +0 -17
  45. data/.toys/.toys.rb +0 -45
  46. data/.toys/ci.rb +0 -43
  47. data/.toys/kokoro/.toys.rb +0 -66
  48. data/.toys/kokoro/publish-docs.rb +0 -67
  49. data/.toys/kokoro/publish-gem.rb +0 -53
  50. data/.toys/linkinator.rb +0 -43
  51. data/.trampolinerc +0 -48
  52. data/Gemfile +0 -25
  53. data/googleauth.gemspec +0 -39
  54. data/integration/helper.rb +0 -31
  55. data/integration/id_tokens/key_source_test.rb +0 -74
  56. data/spec/googleauth/apply_auth_examples.rb +0 -171
  57. data/spec/googleauth/client_id_spec.rb +0 -160
  58. data/spec/googleauth/compute_engine_spec.rb +0 -178
  59. data/spec/googleauth/credentials_spec.rb +0 -600
  60. data/spec/googleauth/get_application_default_spec.rb +0 -286
  61. data/spec/googleauth/iam_spec.rb +0 -80
  62. data/spec/googleauth/scope_util_spec.rb +0 -77
  63. data/spec/googleauth/service_account_spec.rb +0 -497
  64. data/spec/googleauth/signet_spec.rb +0 -142
  65. data/spec/googleauth/stores/file_token_store_spec.rb +0 -57
  66. data/spec/googleauth/stores/redis_token_store_spec.rb +0 -50
  67. data/spec/googleauth/stores/store_examples.rb +0 -58
  68. data/spec/googleauth/user_authorizer_spec.rb +0 -343
  69. data/spec/googleauth/user_refresh_spec.rb +0 -359
  70. data/spec/googleauth/web_user_authorizer_spec.rb +0 -172
  71. data/spec/spec_helper.rb +0 -92
  72. data/test/helper.rb +0 -33
  73. data/test/id_tokens/key_sources_test.rb +0 -240
  74. data/test/id_tokens/verifier_test.rb +0 -269
@@ -1,489 +0,0 @@
1
- #!/usr/bin/env bash
2
- # Copyright 2020 Google LLC
3
- #
4
- # Licensed under the Apache License, Version 2.0 (the "License");
5
- # you may not use this file except in compliance with the License.
6
- # You may obtain a copy of the License at
7
- #
8
- # http://www.apache.org/licenses/LICENSE-2.0
9
- #
10
- # Unless required by applicable law or agreed to in writing, software
11
- # distributed under the License is distributed on an "AS IS" BASIS,
12
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- # See the License for the specific language governing permissions and
14
- # limitations under the License.
15
-
16
- # trampoline_v2.sh
17
- #
18
- # If you want to make a change to this file, consider doing so at:
19
- # https://github.com/googlecloudplatform/docker-ci-helper
20
- #
21
- # This script is for running CI builds. For Kokoro builds, we
22
- # set this script to `build_file` field in the Kokoro configuration.
23
-
24
- # This script does 3 things.
25
- #
26
- # 1. Prepare the Docker image for the test
27
- # 2. Run the Docker with appropriate flags to run the test
28
- # 3. Upload the newly built Docker image
29
- #
30
- # in a way that is somewhat compatible with trampoline_v1.
31
- #
32
- # These environment variables are required:
33
- # TRAMPOLINE_IMAGE: The docker image to use.
34
- # TRAMPOLINE_DOCKERFILE: The location of the Dockerfile.
35
- #
36
- # You can optionally change these environment variables:
37
- # TRAMPOLINE_IMAGE_UPLOAD:
38
- # (true|false): Whether to upload the Docker image after the
39
- # successful builds.
40
- # TRAMPOLINE_BUILD_FILE: The script to run in the docker container.
41
- # TRAMPOLINE_WORKSPACE: The workspace path in the docker container.
42
- # Defaults to /workspace.
43
- # Potentially there are some repo specific envvars in .trampolinerc in
44
- # the project root.
45
- #
46
- # Here is an example for running this script.
47
- # TRAMPOLINE_IMAGE=gcr.io/cloud-devrel-kokoro-resources/node:10-user \
48
- # TRAMPOLINE_BUILD_FILE=.kokoro/system-test.sh \
49
- # .kokoro/trampoline_v2.sh
50
-
51
- set -euo pipefail
52
-
53
- TRAMPOLINE_VERSION="2.0.10"
54
-
55
- if command -v tput >/dev/null && [[ -n "${TERM:-}" ]]; then
56
- readonly IO_COLOR_RED="$(tput setaf 1)"
57
- readonly IO_COLOR_GREEN="$(tput setaf 2)"
58
- readonly IO_COLOR_YELLOW="$(tput setaf 3)"
59
- readonly IO_COLOR_RESET="$(tput sgr0)"
60
- else
61
- readonly IO_COLOR_RED=""
62
- readonly IO_COLOR_GREEN=""
63
- readonly IO_COLOR_YELLOW=""
64
- readonly IO_COLOR_RESET=""
65
- fi
66
-
67
- function function_exists {
68
- [ $(LC_ALL=C type -t $1)"" == "function" ]
69
- }
70
-
71
- # Logs a message using the given color. The first argument must be one
72
- # of the IO_COLOR_* variables defined above, such as
73
- # "${IO_COLOR_YELLOW}". The remaining arguments will be logged in the
74
- # given color. The log message will also have an RFC-3339 timestamp
75
- # prepended (in UTC). You can disable the color output by setting
76
- # TERM=vt100.
77
- function log_impl() {
78
- local color="$1"
79
- shift
80
- local timestamp="$(date -u "+%Y-%m-%dT%H:%M:%SZ")"
81
- echo "================================================================"
82
- echo "${color}${timestamp}:" "$@" "${IO_COLOR_RESET}"
83
- echo "================================================================"
84
- }
85
-
86
- # Logs the given message with normal coloring and a timestamp.
87
- function log() {
88
- log_impl "${IO_COLOR_RESET}" "$@"
89
- }
90
-
91
- # Logs the given message in green with a timestamp.
92
- function log_green() {
93
- log_impl "${IO_COLOR_GREEN}" "$@"
94
- }
95
-
96
- # Logs the given message in yellow with a timestamp.
97
- function log_yellow() {
98
- log_impl "${IO_COLOR_YELLOW}" "$@"
99
- }
100
-
101
- # Logs the given message in red with a timestamp.
102
- function log_red() {
103
- log_impl "${IO_COLOR_RED}" "$@"
104
- }
105
-
106
- readonly tmpdir=$(mktemp -d -t ci-XXXXXXXX)
107
- readonly tmphome="${tmpdir}/h"
108
- mkdir -p "${tmphome}"
109
-
110
- function cleanup() {
111
- rm -rf "${tmpdir}"
112
- }
113
- trap cleanup EXIT
114
-
115
- RUNNING_IN_CI="${RUNNING_IN_CI:-false}"
116
-
117
- # The workspace in the container, defaults to /workspace.
118
- TRAMPOLINE_WORKSPACE="${TRAMPOLINE_WORKSPACE:-/workspace}"
119
-
120
- pass_down_envvars=(
121
- # TRAMPOLINE_V2 variables.
122
- # Tells scripts whether they are running as part of CI or not.
123
- "RUNNING_IN_CI"
124
- # Indicates which CI system we're in.
125
- "TRAMPOLINE_CI"
126
- # Indicates the version of the script.
127
- "TRAMPOLINE_VERSION"
128
- )
129
-
130
- log_yellow "Building with Trampoline ${TRAMPOLINE_VERSION}"
131
-
132
- # Detect which CI systems we're in. If we're in any of the CI systems
133
- # we support, `RUNNING_IN_CI` will be true and `TRAMPOLINE_CI` will be
134
- # the name of the CI system. Both envvars will be passing down to the
135
- # container for telling which CI system we're in.
136
- if [[ -n "${KOKORO_BUILD_ID:-}" ]]; then
137
- # descriptive env var for indicating it's on CI.
138
- RUNNING_IN_CI="true"
139
- TRAMPOLINE_CI="kokoro"
140
- if [[ "${TRAMPOLINE_USE_LEGACY_SERVICE_ACCOUNT:-}" == "true" ]]; then
141
- if [[ ! -f "${KOKORO_GFILE_DIR}/kokoro-trampoline.service-account.json" ]]; then
142
- log_red "${KOKORO_GFILE_DIR}/kokoro-trampoline.service-account.json does not exist. Did you forget to mount cloud-devrel-kokoro-resources/trampoline? Aborting."
143
- exit 1
144
- fi
145
- # This service account will be activated later.
146
- TRAMPOLINE_SERVICE_ACCOUNT="${KOKORO_GFILE_DIR}/kokoro-trampoline.service-account.json"
147
- else
148
- if [[ "${TRAMPOLINE_VERBOSE:-}" == "true" ]]; then
149
- gcloud auth list
150
- fi
151
- log_yellow "Configuring Container Registry access"
152
- gcloud auth configure-docker --quiet
153
- fi
154
- pass_down_envvars+=(
155
- # KOKORO dynamic variables.
156
- "KOKORO_BUILD_NUMBER"
157
- "KOKORO_BUILD_ID"
158
- "KOKORO_JOB_NAME"
159
- "KOKORO_GIT_COMMIT"
160
- "KOKORO_GITHUB_COMMIT"
161
- "KOKORO_GITHUB_PULL_REQUEST_NUMBER"
162
- "KOKORO_GITHUB_PULL_REQUEST_COMMIT"
163
- # For Flaky Bot
164
- "KOKORO_GITHUB_COMMIT_URL"
165
- "KOKORO_GITHUB_PULL_REQUEST_URL"
166
- "KOKORO_BUILD_ARTIFACTS_SUBDIR"
167
- )
168
- elif [[ "${TRAVIS:-}" == "true" ]]; then
169
- RUNNING_IN_CI="true"
170
- TRAMPOLINE_CI="travis"
171
- pass_down_envvars+=(
172
- "TRAVIS_BRANCH"
173
- "TRAVIS_BUILD_ID"
174
- "TRAVIS_BUILD_NUMBER"
175
- "TRAVIS_BUILD_WEB_URL"
176
- "TRAVIS_COMMIT"
177
- "TRAVIS_COMMIT_MESSAGE"
178
- "TRAVIS_COMMIT_RANGE"
179
- "TRAVIS_JOB_NAME"
180
- "TRAVIS_JOB_NUMBER"
181
- "TRAVIS_JOB_WEB_URL"
182
- "TRAVIS_PULL_REQUEST"
183
- "TRAVIS_PULL_REQUEST_BRANCH"
184
- "TRAVIS_PULL_REQUEST_SHA"
185
- "TRAVIS_PULL_REQUEST_SLUG"
186
- "TRAVIS_REPO_SLUG"
187
- "TRAVIS_SECURE_ENV_VARS"
188
- "TRAVIS_TAG"
189
- )
190
- elif [[ -n "${GITHUB_RUN_ID:-}" ]]; then
191
- RUNNING_IN_CI="true"
192
- TRAMPOLINE_CI="github-workflow"
193
- pass_down_envvars+=(
194
- "GITHUB_WORKFLOW"
195
- "GITHUB_RUN_ID"
196
- "GITHUB_RUN_NUMBER"
197
- "GITHUB_ACTION"
198
- "GITHUB_ACTIONS"
199
- "GITHUB_ACTOR"
200
- "GITHUB_REPOSITORY"
201
- "GITHUB_EVENT_NAME"
202
- "GITHUB_EVENT_PATH"
203
- "GITHUB_SHA"
204
- "GITHUB_REF"
205
- "GITHUB_HEAD_REF"
206
- "GITHUB_BASE_REF"
207
- )
208
- elif [[ "${CIRCLECI:-}" == "true" ]]; then
209
- RUNNING_IN_CI="true"
210
- TRAMPOLINE_CI="circleci"
211
- pass_down_envvars+=(
212
- "CIRCLE_BRANCH"
213
- "CIRCLE_BUILD_NUM"
214
- "CIRCLE_BUILD_URL"
215
- "CIRCLE_COMPARE_URL"
216
- "CIRCLE_JOB"
217
- "CIRCLE_NODE_INDEX"
218
- "CIRCLE_NODE_TOTAL"
219
- "CIRCLE_PREVIOUS_BUILD_NUM"
220
- "CIRCLE_PROJECT_REPONAME"
221
- "CIRCLE_PROJECT_USERNAME"
222
- "CIRCLE_REPOSITORY_URL"
223
- "CIRCLE_SHA1"
224
- "CIRCLE_STAGE"
225
- "CIRCLE_USERNAME"
226
- "CIRCLE_WORKFLOW_ID"
227
- "CIRCLE_WORKFLOW_JOB_ID"
228
- "CIRCLE_WORKFLOW_UPSTREAM_JOB_IDS"
229
- "CIRCLE_WORKFLOW_WORKSPACE_ID"
230
- )
231
- fi
232
-
233
- # Configure the service account for pulling the docker image.
234
- function repo_root() {
235
- local dir="$1"
236
- while [[ ! -d "${dir}/.git" ]]; do
237
- dir="$(dirname "$dir")"
238
- done
239
- echo "${dir}"
240
- }
241
-
242
- # Detect the project root. In CI builds, we assume the script is in
243
- # the git tree and traverse from there, otherwise, traverse from `pwd`
244
- # to find `.git` directory.
245
- if [[ "${RUNNING_IN_CI:-}" == "true" ]]; then
246
- PROGRAM_PATH="$(realpath "$0")"
247
- PROGRAM_DIR="$(dirname "${PROGRAM_PATH}")"
248
- PROJECT_ROOT="$(repo_root "${PROGRAM_DIR}")"
249
- else
250
- PROJECT_ROOT="$(repo_root $(pwd))"
251
- fi
252
-
253
- log_yellow "Changing to the project root: ${PROJECT_ROOT}."
254
- cd "${PROJECT_ROOT}"
255
-
256
- # To support relative path for `TRAMPOLINE_SERVICE_ACCOUNT`, we need
257
- # to use this environment variable in `PROJECT_ROOT`.
258
- if [[ -n "${TRAMPOLINE_SERVICE_ACCOUNT:-}" ]]; then
259
-
260
- mkdir -p "${tmpdir}/gcloud"
261
- gcloud_config_dir="${tmpdir}/gcloud"
262
-
263
- log_yellow "Using isolated gcloud config: ${gcloud_config_dir}."
264
- export CLOUDSDK_CONFIG="${gcloud_config_dir}"
265
-
266
- log_yellow "Using ${TRAMPOLINE_SERVICE_ACCOUNT} for authentication."
267
- gcloud auth activate-service-account \
268
- --key-file "${TRAMPOLINE_SERVICE_ACCOUNT}"
269
- log_yellow "Configuring Container Registry access"
270
- gcloud auth configure-docker --quiet
271
- fi
272
-
273
- required_envvars=(
274
- # The basic trampoline configurations.
275
- "TRAMPOLINE_IMAGE"
276
- "TRAMPOLINE_BUILD_FILE"
277
- )
278
-
279
- if [[ -f "${PROJECT_ROOT}/.trampolinerc" ]]; then
280
- source "${PROJECT_ROOT}/.trampolinerc"
281
- fi
282
-
283
- log_yellow "Checking environment variables."
284
- for e in "${required_envvars[@]}"
285
- do
286
- if [[ -z "${!e:-}" ]]; then
287
- log "Missing ${e} env var. Aborting."
288
- exit 1
289
- fi
290
- done
291
-
292
- # We want to support legacy style TRAMPOLINE_BUILD_FILE used with V1
293
- # script: e.g. "github/repo-name/.kokoro/run_tests.sh"
294
- TRAMPOLINE_BUILD_FILE="${TRAMPOLINE_BUILD_FILE#github/*/}"
295
- log_yellow "Using TRAMPOLINE_BUILD_FILE: ${TRAMPOLINE_BUILD_FILE}"
296
-
297
- # ignore error on docker operations and test execution
298
- set +e
299
-
300
- log_yellow "Preparing Docker image."
301
- # We only download the docker image in CI builds.
302
- if [[ "${RUNNING_IN_CI:-}" == "true" ]]; then
303
- # Download the docker image specified by `TRAMPOLINE_IMAGE`
304
-
305
- # We may want to add --max-concurrent-downloads flag.
306
-
307
- log_yellow "Start pulling the Docker image: ${TRAMPOLINE_IMAGE}."
308
- if docker pull "${TRAMPOLINE_IMAGE}"; then
309
- log_green "Finished pulling the Docker image: ${TRAMPOLINE_IMAGE}."
310
- has_image="true"
311
- else
312
- log_red "Failed pulling the Docker image: ${TRAMPOLINE_IMAGE}."
313
- has_image="false"
314
- fi
315
- else
316
- # For local run, check if we have the image.
317
- if docker images "${TRAMPOLINE_IMAGE}" | grep "${TRAMPOLINE_IMAGE%:*}"; then
318
- has_image="true"
319
- else
320
- has_image="false"
321
- fi
322
- fi
323
-
324
-
325
- # The default user for a Docker container has uid 0 (root). To avoid
326
- # creating root-owned files in the build directory we tell docker to
327
- # use the current user ID.
328
- user_uid="$(id -u)"
329
- user_gid="$(id -g)"
330
- user_name="$(id -un)"
331
-
332
- # To allow docker in docker, we add the user to the docker group in
333
- # the host os.
334
- docker_gid=$(cut -d: -f3 < <(getent group docker))
335
-
336
- update_cache="false"
337
- if [[ "${TRAMPOLINE_DOCKERFILE:-none}" != "none" ]]; then
338
- # Build the Docker image from the source.
339
- context_dir=$(dirname "${TRAMPOLINE_DOCKERFILE}")
340
- docker_build_flags=(
341
- "-f" "${TRAMPOLINE_DOCKERFILE}"
342
- "-t" "${TRAMPOLINE_IMAGE}"
343
- "--build-arg" "UID=${user_uid}"
344
- "--build-arg" "USERNAME=${user_name}"
345
- )
346
- if [[ "${has_image}" == "true" ]]; then
347
- docker_build_flags+=("--cache-from" "${TRAMPOLINE_IMAGE}")
348
- fi
349
-
350
- log_yellow "Start building the docker image."
351
- if [[ "${TRAMPOLINE_VERBOSE:-false}" == "true" ]]; then
352
- echo "docker build" "${docker_build_flags[@]}" "${context_dir}"
353
- fi
354
-
355
- # ON CI systems, we want to suppress docker build logs, only
356
- # output the logs when it fails.
357
- if [[ "${RUNNING_IN_CI:-}" == "true" ]]; then
358
- if docker build "${docker_build_flags[@]}" "${context_dir}" \
359
- > "${tmpdir}/docker_build.log" 2>&1; then
360
- if [[ "${TRAMPOLINE_VERBOSE:-}" == "true" ]]; then
361
- cat "${tmpdir}/docker_build.log"
362
- fi
363
-
364
- log_green "Finished building the docker image."
365
- update_cache="true"
366
- else
367
- log_red "Failed to build the Docker image, aborting."
368
- log_yellow "Dumping the build logs:"
369
- cat "${tmpdir}/docker_build.log"
370
- exit 1
371
- fi
372
- else
373
- if docker build "${docker_build_flags[@]}" "${context_dir}"; then
374
- log_green "Finished building the docker image."
375
- update_cache="true"
376
- else
377
- log_red "Failed to build the Docker image, aborting."
378
- exit 1
379
- fi
380
- fi
381
- else
382
- if [[ "${has_image}" != "true" ]]; then
383
- log_red "We do not have ${TRAMPOLINE_IMAGE} locally, aborting."
384
- exit 1
385
- fi
386
- fi
387
-
388
- # We use an array for the flags so they are easier to document.
389
- docker_flags=(
390
- # Remove the container after it exists.
391
- "--rm"
392
-
393
- # Use the host network.
394
- "--network=host"
395
-
396
- # Run in priviledged mode. We are not using docker for sandboxing or
397
- # isolation, just for packaging our dev tools.
398
- "--privileged"
399
-
400
- # Run the docker script with the user id. Because the docker image gets to
401
- # write in ${PWD} you typically want this to be your user id.
402
- # To allow docker in docker, we need to use docker gid on the host.
403
- "--user" "${user_uid}:${docker_gid}"
404
-
405
- # Pass down the USER.
406
- "--env" "USER=${user_name}"
407
-
408
- # Mount the project directory inside the Docker container.
409
- "--volume" "${PROJECT_ROOT}:${TRAMPOLINE_WORKSPACE}"
410
- "--workdir" "${TRAMPOLINE_WORKSPACE}"
411
- "--env" "PROJECT_ROOT=${TRAMPOLINE_WORKSPACE}"
412
-
413
- # Mount the temporary home directory.
414
- "--volume" "${tmphome}:/h"
415
- "--env" "HOME=/h"
416
-
417
- # Allow docker in docker.
418
- "--volume" "/var/run/docker.sock:/var/run/docker.sock"
419
-
420
- # Mount the /tmp so that docker in docker can mount the files
421
- # there correctly.
422
- "--volume" "/tmp:/tmp"
423
- # Pass down the KOKORO_GFILE_DIR and KOKORO_KEYSTORE_DIR
424
- # TODO(tmatsuo): This part is not portable.
425
- "--env" "TRAMPOLINE_SECRET_DIR=/secrets"
426
- "--volume" "${KOKORO_GFILE_DIR:-/dev/shm}:/secrets/gfile"
427
- "--env" "KOKORO_GFILE_DIR=/secrets/gfile"
428
- "--volume" "${KOKORO_KEYSTORE_DIR:-/dev/shm}:/secrets/keystore"
429
- "--env" "KOKORO_KEYSTORE_DIR=/secrets/keystore"
430
- )
431
-
432
- # Add an option for nicer output if the build gets a tty.
433
- if [[ -t 0 ]]; then
434
- docker_flags+=("-it")
435
- fi
436
-
437
- # Passing down env vars
438
- for e in "${pass_down_envvars[@]}"
439
- do
440
- if [[ -n "${!e:-}" ]]; then
441
- docker_flags+=("--env" "${e}=${!e}")
442
- fi
443
- done
444
-
445
- # If arguments are given, all arguments will become the commands run
446
- # in the container, otherwise run TRAMPOLINE_BUILD_FILE.
447
- if [[ $# -ge 1 ]]; then
448
- log_yellow "Running the given commands '" "${@:1}" "' in the container."
449
- readonly commands=("${@:1}")
450
- if [[ "${TRAMPOLINE_VERBOSE:-}" == "true" ]]; then
451
- echo docker run "${docker_flags[@]}" "${TRAMPOLINE_IMAGE}" "${commands[@]}"
452
- fi
453
- docker run "${docker_flags[@]}" "${TRAMPOLINE_IMAGE}" "${commands[@]}"
454
- else
455
- log_yellow "Running the tests in a Docker container."
456
- docker_flags+=("--entrypoint=${TRAMPOLINE_BUILD_FILE}")
457
- if [[ "${TRAMPOLINE_VERBOSE:-}" == "true" ]]; then
458
- echo docker run "${docker_flags[@]}" "${TRAMPOLINE_IMAGE}"
459
- fi
460
- docker run "${docker_flags[@]}" "${TRAMPOLINE_IMAGE}"
461
- fi
462
-
463
-
464
- test_retval=$?
465
-
466
- if [[ ${test_retval} -eq 0 ]]; then
467
- log_green "Build finished with ${test_retval}"
468
- else
469
- log_red "Build finished with ${test_retval}"
470
- fi
471
-
472
- # Only upload it when the test passes.
473
- if [[ "${update_cache}" == "true" ]] && \
474
- [[ $test_retval == 0 ]] && \
475
- [[ "${TRAMPOLINE_IMAGE_UPLOAD:-false}" == "true" ]]; then
476
- log_yellow "Uploading the Docker image."
477
- if docker push "${TRAMPOLINE_IMAGE}"; then
478
- log_green "Finished uploading the Docker image."
479
- else
480
- log_red "Failed uploading the Docker image."
481
- fi
482
- # Call trampoline_after_upload_hook if it's defined.
483
- if function_exists trampoline_after_upload_hook; then
484
- trampoline_after_upload_hook
485
- fi
486
-
487
- fi
488
-
489
- exit "${test_retval}"
data/.repo-metadata.json DELETED
@@ -1,5 +0,0 @@
1
- {
2
- "name": "googleauth",
3
- "language": "ruby",
4
- "distribution-name": "googleauth"
5
- }
data/.rspec DELETED
@@ -1,2 +0,0 @@
1
- --colour
2
- --format documentation
data/.rubocop.yml DELETED
@@ -1,17 +0,0 @@
1
- inherit_gem:
2
- google-style: google-style.yml
3
-
4
- AllCops:
5
- Exclude:
6
- - "Rakefile"
7
- - "integration/**/*"
8
- - "rakelib/**/*"
9
- - "spec/**/*"
10
- - "test/**/*"
11
- Metrics/ClassLength:
12
- Max: 200
13
- Metrics/ModuleLength:
14
- Max: 110
15
- Metrics/BlockLength:
16
- Exclude:
17
- - "googleauth.gemspec"
data/.toys/.toys.rb DELETED
@@ -1,45 +0,0 @@
1
- # Copyright 2021 Google LLC
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
-
15
- expand :clean, paths: :gitignore
16
-
17
- expand :rspec do |t|
18
- t.libs = ["lib", "spec"]
19
- t.use_bundler
20
- end
21
-
22
- expand :minitest do |t|
23
- t.libs = ["lib", "test"]
24
- t.use_bundler
25
- t.files = "test/**/*_test.rb"
26
- end
27
-
28
- expand :minitest do |t|
29
- t.name = "integration"
30
- t.libs = ["lib", "integration"]
31
- t.use_bundler
32
- t.files = "integration/**/*_test.rb"
33
- end
34
-
35
- expand :rubocop, bundler: true
36
-
37
- expand :yardoc do |t|
38
- t.generate_output_flag = true
39
- # t.fail_on_warning = true
40
- t.use_bundler
41
- end
42
-
43
- expand :gem_build
44
-
45
- expand :gem_build, name: "install", install_gem: true
data/.toys/ci.rb DELETED
@@ -1,43 +0,0 @@
1
- # Copyright 2021 Google LLC
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
-
15
- desc "Run CI checks"
16
-
17
- TESTS = ["test", "integration", "spec", "rubocop", "yardoc", "build", "linkinator"]
18
-
19
- flag :only
20
- TESTS.each do |name|
21
- flag "include_#{name}".to_sym, "--[no-]include-#{name}"
22
- end
23
-
24
- include :exec, result_callback: :handle_result
25
- include :terminal
26
-
27
- def handle_result result
28
- if result.success?
29
- puts "** #{result.name} passed\n\n", :green, :bold
30
- else
31
- puts "** CI terminated: #{result.name} failed!", :red, :bold
32
- exit 1
33
- end
34
- end
35
-
36
- def run
37
- ::Dir.chdir context_directory
38
- TESTS.each do |name|
39
- setting = get "include_#{name}".to_sym
40
- setting = !only if setting.nil?
41
- exec ["toys", name], name: name.capitalize if setting
42
- end
43
- end
@@ -1,66 +0,0 @@
1
- # Copyright 2021 Google LLC
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
-
15
- mixin "kokoro-tools" do
16
- def load_env
17
- return if defined? @loaded_env
18
-
19
- service_account = "#{::ENV['KOKORO_GFILE_DIR']}/service-account.json"
20
- raise "#{service_account} is not a file" unless ::File.file? service_account
21
- ::ENV["GOOGLE_APPLICATION_CREDENTIALS"] = service_account
22
-
23
- filename = "#{::ENV['KOKORO_GFILE_DIR']}/ruby_env_vars.json"
24
- raise "#{filename} is not a file" unless ::File.file? filename
25
- env_vars = ::JSON.parse ::File.read filename
26
- env_vars.each { |k, v| ::ENV[k] = v }
27
-
28
- ::ENV["DOCS_CREDENTIALS"] ||= "#{::ENV['KOKORO_KEYSTORE_DIR']}/73713_docuploader_service_account"
29
- ::ENV["GITHUB_TOKEN"] ||= "#{::ENV['KOKORO_KEYSTORE_DIR']}/73713_yoshi-automation-github-key"
30
-
31
- @loaded_env = true
32
- end
33
-
34
- def package_name
35
- @package_name ||=
36
- ::ENV["RELEASE_PACKAGE"] || ::ENV["PACKAGE"] || begin
37
- files = ::Dir.glob("*.gemspec")
38
- raise "Unable to determine package" unless files.length == 1
39
- ::File.basename files.first, ".gemspec"
40
- end
41
- end
42
-
43
- def package_directory
44
- @package_directory ||= begin
45
- if ::File.file? "#{package_name}.gemspec"
46
- ::File.expand_path "."
47
- elsif ::File.file? "#{package_name}/#{package_name}.gemspec"
48
- ::File.expand_path package_name
49
- else
50
- raise "Unable to determine package directory"
51
- end
52
- end
53
- end
54
-
55
- def package_gemspec_path
56
- @package_gemspec_path ||= ::File.join package_directory, "#{package_name}.gemspec"
57
- end
58
-
59
- def package_gemspec
60
- @package_gemspec ||= eval ::File.read package_gemspec_path
61
- end
62
-
63
- def package_version
64
- @package_version ||= package_gemspec.version
65
- end
66
- end