From bbfc0165f8d4a2eb6af578c2e74efe410e9f4776 Mon Sep 17 00:00:00 2001 From: Anthonios Partheniou Date: Wed, 12 May 2021 18:48:02 -0400 Subject: [PATCH] chore: migrate to owl bot (#71) This PR migrates from autosynth to [owl bot](https://github.com/googleapis/repo-automation-bots/tree/master/packages/owl-bot). owl bot will save time for maintainers as it will automatically open PRs when there are updates in [googleapis-gen](https://github.com/googleapis/googleapis-gen/tree/master/google) without requiring maintainers to run `synthtool` to build the client from protos. Additionally, similar to autosynth, PRs will be automatically opened when there are template updates. --- .../.github/.OwlBot.lock.yaml | 4 + .../.github/.OwlBot.yaml | 29 ++++ .../.pre-commit-config.yaml | 2 +- .../google-cloud-os-login/CONTRIBUTING.rst | 16 +- packages/google-cloud-os-login/noxfile.py | 14 +- .../{synth.py => owlbot.py} | 30 ++-- packages/google-cloud-os-login/synth.metadata | 137 ------------------ 7 files changed, 47 insertions(+), 185 deletions(-) create mode 100644 packages/google-cloud-os-login/.github/.OwlBot.lock.yaml create mode 100644 packages/google-cloud-os-login/.github/.OwlBot.yaml rename packages/google-cloud-os-login/{synth.py => owlbot.py} (64%) delete mode 100644 packages/google-cloud-os-login/synth.metadata diff --git a/packages/google-cloud-os-login/.github/.OwlBot.lock.yaml b/packages/google-cloud-os-login/.github/.OwlBot.lock.yaml new file mode 100644 index 000000000000..d49860b32e70 --- /dev/null +++ b/packages/google-cloud-os-login/.github/.OwlBot.lock.yaml @@ -0,0 +1,4 @@ +docker: + digest: sha256:457583330eec64daa02aeb7a72a04d33e7be2428f646671ce4045dcbc0191b1e + image: gcr.io/repo-automation-bots/owlbot-python:latest + diff --git a/packages/google-cloud-os-login/.github/.OwlBot.yaml b/packages/google-cloud-os-login/.github/.OwlBot.yaml new file mode 100644 index 000000000000..49910b18763a --- /dev/null +++ b/packages/google-cloud-os-login/.github/.OwlBot.yaml @@ -0,0 +1,29 @@ +# Copyright 2021 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +docker: + image: gcr.io/repo-automation-bots/owlbot-python:latest + +deep-remove-regex: + - /owl-bot-staging + +deep-preserve-regex: + - /owl-bot-staging/v1beta + +deep-copy-regex: + - source: /google/cloud/oslogin/(v.*)/.*-py/(.*) + dest: /owl-bot-staging/$1/$2 + +begin-after-commit-hash: b06c9034cfcbce180ba732d03be6526e5c8ea1bc + diff --git a/packages/google-cloud-os-login/.pre-commit-config.yaml b/packages/google-cloud-os-login/.pre-commit-config.yaml index 8912e9b5d7d7..1bbd787833ec 100644 --- a/packages/google-cloud-os-login/.pre-commit-config.yaml +++ b/packages/google-cloud-os-login/.pre-commit-config.yaml @@ -26,6 +26,6 @@ repos: hooks: - id: black - repo: https://gitlab.com/pycqa/flake8 - rev: 3.9.0 + rev: 3.9.1 hooks: - id: flake8 diff --git a/packages/google-cloud-os-login/CONTRIBUTING.rst b/packages/google-cloud-os-login/CONTRIBUTING.rst index 199770f53d44..62200e14889a 100644 --- a/packages/google-cloud-os-login/CONTRIBUTING.rst +++ b/packages/google-cloud-os-login/CONTRIBUTING.rst @@ -160,21 +160,7 @@ Running System Tests auth settings and change some configuration in your project to run all the tests. -- System tests will be run against an actual project and - so you'll need to provide some environment variables to facilitate - authentication to your project: - - - ``GOOGLE_APPLICATION_CREDENTIALS``: The path to a JSON key file; - Such a file can be downloaded directly from the developer's console by clicking - "Generate new JSON key". See private key - `docs `__ - for more details. - -- Once you have downloaded your json keys, set the environment variable - ``GOOGLE_APPLICATION_CREDENTIALS`` to the absolute path of the json file:: - - $ export GOOGLE_APPLICATION_CREDENTIALS="/Users//path/to/app_credentials.json" - +- System tests will be run against an actual project. You should use local credentials from gcloud when possible. See `Best practices for application authentication `__. Some tests require a service account. For those tests see `Authenticating as a service account `__. ************* Test Coverage diff --git a/packages/google-cloud-os-login/noxfile.py b/packages/google-cloud-os-login/noxfile.py index 4d37cd3a7eb6..70417e8cac20 100644 --- a/packages/google-cloud-os-login/noxfile.py +++ b/packages/google-cloud-os-login/noxfile.py @@ -62,16 +62,9 @@ def lint(session): session.run("flake8", "google", "tests") -@nox.session(python="3.6") +@nox.session(python=DEFAULT_PYTHON_VERSION) def blacken(session): - """Run black. - - Format code to uniform standard. - - This currently uses Python 3.6 due to the automated Kokoro run of synthtool. - That run uses an image that doesn't have 3.6 installed. Before updating this - check the state of the `gcp_ubuntu_config` we use for that Kokoro run. - """ + """Run black. Format code to uniform standard.""" session.install(BLACK_VERSION) session.run( "black", *BLACK_PATHS, @@ -131,9 +124,6 @@ def system(session): # Check the value of `RUN_SYSTEM_TESTS` env var. It defaults to true. if os.environ.get("RUN_SYSTEM_TESTS", "true") == "false": session.skip("RUN_SYSTEM_TESTS is set to false, skipping") - # Sanity check: Only run tests if the environment variable is set. - if not os.environ.get("GOOGLE_APPLICATION_CREDENTIALS", ""): - session.skip("Credentials must be set via environment variable") # Install pyopenssl for mTLS testing. if os.environ.get("GOOGLE_API_USE_CLIENT_CERTIFICATE", "false") == "true": session.install("pyopenssl") diff --git a/packages/google-cloud-os-login/synth.py b/packages/google-cloud-os-login/owlbot.py similarity index 64% rename from packages/google-cloud-os-login/synth.py rename to packages/google-cloud-os-login/owlbot.py index 40f7a586cd39..5b442b5403b6 100644 --- a/packages/google-cloud-os-login/synth.py +++ b/packages/google-cloud-os-login/owlbot.py @@ -16,31 +16,21 @@ import synthtool as s from synthtool import gcp -gapic = gcp.GAPICBazel() common = gcp.CommonTemplates() -excludes = ["README.rst", "setup.py", "nox*.py", "docs/index.rst"] -# ---------------------------------------------------------------------------- -# Generate oslogin GAPIC layer -# ---------------------------------------------------------------------------- -library = gapic.py_library( - service="oslogin", - version="v1", - bazel_target="//google/cloud/oslogin/v1:oslogin-v1-py", - include_protos=True, -) - -s.move(library / "google/cloud/oslogin_v1") - -s.move(library / "google/cloud/oslogin", excludes=[library / "google/cloud/oslogin/common/**/*"]) -s.move(library / "google/cloud/oslogin/common", "google/cloud/oslogin_v1/common", excludes=[library / "google/cloud/oslogin/common/services"]) +default_version = "v1" -s.move(library / "tests/unit/gapic/oslogin_v1") +for library in s.get_staging_dirs(default_version): + s.move(library / f"google/cloud/oslogin_{library.name}") + s.move(library / "google/cloud/oslogin", excludes=[ "common/**/*"]) + s.move(library / "google/cloud/oslogin/common", f"google/cloud/oslogin_{library.name}/common", excludes=["services"]) + s.move(library / f"tests/unit/gapic/oslogin_{library.name}") + s.move(library / f"scripts/fixup_oslogin_{library.name}_keywords.py") + s.move(library / "docs", excludes=["index.rst", "common"]) + s.move(library / f"docs/common", f"docs/oslogin_{library.name}/common", excludes=["services.rst"]) -s.move(library / "scripts/fixup_oslogin_v1_keywords.py") +s.remove_staging_dirs() -s.move(library / "docs", excludes=[library / "docs/index.rst", library / "docs/common"]) -s.move(library / "docs/common", "docs/oslogin_v1/common", excludes=[library / "docs/common/services.rst"]) s.replace( "docs/oslogin_v1/common/types.rst", "google.cloud.oslogin.common.types", diff --git a/packages/google-cloud-os-login/synth.metadata b/packages/google-cloud-os-login/synth.metadata deleted file mode 100644 index 5e436bd0846e..000000000000 --- a/packages/google-cloud-os-login/synth.metadata +++ /dev/null @@ -1,137 +0,0 @@ -{ - "sources": [ - { - "git": { - "name": ".", - "remote": "https://github.com/googleapis/python-oslogin.git", - "sha": "a721d8e7d940749f6267990d152465dd8bd268d4" - } - }, - { - "git": { - "name": "googleapis", - "remote": "https://github.com/googleapis/googleapis.git", - "sha": "915925089600094e72e4bfa8cf586c170e6b7109", - "internalRef": "366152684" - } - }, - { - "git": { - "name": "synthtool", - "remote": "https://github.com/googleapis/synthtool.git", - "sha": "043cc620d6a6111816d9e09f2a97208565fde958" - } - } - ], - "destinations": [ - { - "client": { - "source": "googleapis", - "apiName": "oslogin", - "apiVersion": "v1", - "language": "python", - "generator": "bazel" - } - } - ], - "generatedFiles": [ - ".flake8", - ".github/CONTRIBUTING.md", - ".github/ISSUE_TEMPLATE/bug_report.md", - ".github/ISSUE_TEMPLATE/feature_request.md", - ".github/ISSUE_TEMPLATE/support_request.md", - ".github/PULL_REQUEST_TEMPLATE.md", - ".github/header-checker-lint.yml", - ".github/release-please.yml", - ".github/snippet-bot.yml", - ".gitignore", - ".kokoro/build.sh", - ".kokoro/continuous/common.cfg", - ".kokoro/continuous/continuous.cfg", - ".kokoro/docker/docs/Dockerfile", - ".kokoro/docker/docs/fetch_gpg_keys.sh", - ".kokoro/docs/common.cfg", - ".kokoro/docs/docs-presubmit.cfg", - ".kokoro/docs/docs.cfg", - ".kokoro/populate-secrets.sh", - ".kokoro/presubmit/common.cfg", - ".kokoro/presubmit/presubmit.cfg", - ".kokoro/publish-docs.sh", - ".kokoro/release.sh", - ".kokoro/release/common.cfg", - ".kokoro/release/release.cfg", - ".kokoro/samples/lint/common.cfg", - ".kokoro/samples/lint/continuous.cfg", - ".kokoro/samples/lint/periodic.cfg", - ".kokoro/samples/lint/presubmit.cfg", - ".kokoro/samples/python3.6/common.cfg", - ".kokoro/samples/python3.6/continuous.cfg", - ".kokoro/samples/python3.6/periodic-head.cfg", - ".kokoro/samples/python3.6/periodic.cfg", - ".kokoro/samples/python3.6/presubmit.cfg", - ".kokoro/samples/python3.7/common.cfg", - ".kokoro/samples/python3.7/continuous.cfg", - ".kokoro/samples/python3.7/periodic-head.cfg", - ".kokoro/samples/python3.7/periodic.cfg", - ".kokoro/samples/python3.7/presubmit.cfg", - ".kokoro/samples/python3.8/common.cfg", - ".kokoro/samples/python3.8/continuous.cfg", - ".kokoro/samples/python3.8/periodic-head.cfg", - ".kokoro/samples/python3.8/periodic.cfg", - ".kokoro/samples/python3.8/presubmit.cfg", - ".kokoro/test-samples-against-head.sh", - ".kokoro/test-samples-impl.sh", - ".kokoro/test-samples.sh", - ".kokoro/trampoline.sh", - ".kokoro/trampoline_v2.sh", - ".pre-commit-config.yaml", - ".trampolinerc", - "CODE_OF_CONDUCT.md", - "CONTRIBUTING.rst", - "LICENSE", - "MANIFEST.in", - "docs/_static/custom.css", - "docs/_templates/layout.html", - "docs/conf.py", - "docs/multiprocessing.rst", - "docs/oslogin_v1/common/types.rst", - "docs/oslogin_v1/os_login_service.rst", - "docs/oslogin_v1/services.rst", - "docs/oslogin_v1/types.rst", - "google/cloud/oslogin/__init__.py", - "google/cloud/oslogin/py.typed", - "google/cloud/oslogin_v1/__init__.py", - "google/cloud/oslogin_v1/common/__init__.py", - "google/cloud/oslogin_v1/common/py.typed", - "google/cloud/oslogin_v1/common/types/__init__.py", - "google/cloud/oslogin_v1/common/types/common.py", - "google/cloud/oslogin_v1/proto/oslogin.proto", - "google/cloud/oslogin_v1/py.typed", - "google/cloud/oslogin_v1/services/__init__.py", - "google/cloud/oslogin_v1/services/os_login_service/__init__.py", - "google/cloud/oslogin_v1/services/os_login_service/async_client.py", - "google/cloud/oslogin_v1/services/os_login_service/client.py", - "google/cloud/oslogin_v1/services/os_login_service/transports/__init__.py", - "google/cloud/oslogin_v1/services/os_login_service/transports/base.py", - "google/cloud/oslogin_v1/services/os_login_service/transports/grpc.py", - "google/cloud/oslogin_v1/services/os_login_service/transports/grpc_asyncio.py", - "google/cloud/oslogin_v1/types/__init__.py", - "google/cloud/oslogin_v1/types/oslogin.py", - "noxfile.py", - "renovate.json", - "samples/AUTHORING_GUIDE.md", - "samples/CONTRIBUTING.md", - "scripts/decrypt-secrets.sh", - "scripts/fixup_oslogin_v1_keywords.py", - "scripts/readme-gen/readme_gen.py", - "scripts/readme-gen/templates/README.tmpl.rst", - "scripts/readme-gen/templates/auth.tmpl.rst", - "scripts/readme-gen/templates/auth_api_key.tmpl.rst", - "scripts/readme-gen/templates/install_deps.tmpl.rst", - "scripts/readme-gen/templates/install_portaudio.tmpl.rst", - "setup.cfg", - "testing/.gitignore", - "tests/unit/gapic/oslogin_v1/__init__.py", - "tests/unit/gapic/oslogin_v1/test_os_login_service.py" - ] -} \ No newline at end of file