googleapis / releasetool

A utility for release Google client libraries across a variety of languages.
Apache License 2.0
30 stars 27 forks source link

Errors using start command in Ruby project #14

Closed quartzmo closed 6 years ago

quartzmo commented 6 years ago

I attempted to use releasetool today in google-cloud-datastore, which has a few pending changes. I tried both the python and nodejs options. The python support produces a correct changelog, but then errors in determine_release_version. The nodejs option produces an incorrect and exceptionally long changelog, but then prompts for a manual entry of the new version, which brings it further. It updates the local CHANGELOG.md, then errors with: No such file or directory: 'package.json'.

(I'm trying to figure out how to execute my local clone of the repo so that I can work toward a solution, if you can offer any pointers. I've tried following the instructions for setuptools development-mode but I can't seem to execute the local code, only the executable that I installed per the readme.)

/cc @JustinBeckwith @blowmage @dazuma

Using the python support:

Chriss-iMac:google-cloud-datastore quartzmo$ releasetool start
Which language (python, python-tool, nodejs)?: python 
o/ Hey, quartzmo, let's release some stuff!
> Determining basic context.
GitHub Repo: GoogleCloudPlatform/google-cloud-ruby
> Figuring out the package name.
Looks like we're releasing google-cloud-datastore.
> Figuring out what the last release was.
The last release was datastore/v1.4.0.
> Gathering changes since datastore/v1.4.0
Cool, 6 changes found.
> Opening your editor to finalize release notes.
> Now it's time to pick a release version!
Here's the release notes you wrote:

    - Reduce string memory usage (#2174)
    - Remove yard-doctest autoloading (#2133)
    - Fix YARD build in Ruby 2.0.0 (#2125)
    - Add documentation for enabling gRPC logging
    - Update versioning info on documentation
    - Document and check for unsupported Ruby versions (#1988)

    ### Implementation Changes

    ### New Features

    ### Dependencies

    ### Documentation

    ### Internal / Testing Changes

Traceback (most recent call last):
  File "/usr/local/bin/releasetool", line 11, in <module>
    load_entry_point('gcp-releasetool', 'console_scripts', 'releasetool')()
  File "/usr/local/lib/python3.6/site-packages/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python3.6/site-packages/click/core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python3.6/site-packages/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python3.6/site-packages/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/releasetool/main.py", line 43, in start
    return releasetool.commands.start.python.start()
  File "/usr/local/lib/python3.6/site-packages/releasetool/commands/start/python.py", line 225, in start
    determine_release_version(ctx)
  File "/usr/local/lib/python3.6/site-packages/releasetool/commands/start/python.py", line 122, in determine_release_version
    parsed_version = [int(x) for x in ctx.last_release_version.split('.')]
  File "/usr/local/lib/python3.6/site-packages/releasetool/commands/start/python.py", line 122, in <listcomp>
    parsed_version = [int(x) for x in ctx.last_release_version.split('.')]
ValueError: invalid literal for int() with base 10: 'datastore/v1'

And using the nodejs support:

Chriss-iMac:google-cloud-datastore quartzmo$ releasetool start
Which language (python, python-tool, nodejs)?: nodejs
o/ Hey, quartzmo, let's release some stuff!
> Determining basic context.
GitHub Repo: GoogleCloudPlatform/google-cloud-ruby
> Figuring out the package name.
Looks like we're releasing google-cloud-datastore.
> Figuring out what the last release was.
The last release was 0.20.0.
> Gathering changes since 0.20.0
Cool, 155 changes found.
> Opening your editor to finalize release notes.
> Now it's time to pick a release version!
Here's the release notes you wrote:

    - Reduce string memory usage (#2174)
    - Remove yard-doctest autoloading (#2133)
    - Fix YARD build in Ruby 2.0.0 (#2125)
    - Add documentation for enabling gRPC logging
    - Update versioning info on documentation
    - Document and check for unsupported Ruby versions (#1988)
    - Release Datastore 1.4.0
    - Release google-cloud-core 1.2.0
    - Apply jwt fix to all Gemfiles
    - Update Entity code example
    - Restore a bunch of allow_nils for deferred config values (#1941)
    - Update Datastore config defaults
    - Move configure method so it will be documented
    - Fix bug with query results using offset
    - Default credential configurations
    - Simplify some config logic by using aliases and defaults
    - Update config class to use BasicObject and provide validations
    - Add Datastore configuration support
    - Downgrade Rubocop
    - Update Datastore code style
    - Bump Rubocop to recent version
    - Fix acceptance test env var order
    - Update authentication documentation
    - Release google-cloud-datastore 1.3.0
    - Update Apache Licence URL
    - Update copyright header format
    - Merge pull request #1881 from geigerj/video-ga
    - Add Dataset#transaction deadline argument
    - Add Dataset#transaction automatic retry
    - Loosen version bound
    - Bump remaining GAX deps
    - Add previous_transaction option and Dataset#read_only_transaction
    - Resolve Datastore assert nil warnings
    - Release Datastore 1.2.1
    - Remove warning when using Datastore Emulator
    - Release Datastore 1.2.0
    - Skip all Credentials doctests
    - Release google-cloud-core 1.1.0
    - Fix error test for Ruby 2.0
    - Add Google::Cloud::Error#cause
    - Bump google-gax dependency
    - Bump google-gax dependency
    - Add Credentials to Datastore
    - Bump GAX dependencies
    - Global GAPIC refresh (#1804)
    - Fix Build
    - Update to latest google-protobuf
    - Update READMEs for GA libraries
    - Release google-cloud-datastore 1.1.0
    - Merge pull request #1578 from blowmage/coverage-filters
    - Add coverage filters for Datastore
    - Fix bad retry configuration
    - Update gem spec homepage links
    - Release Datastore 1.0.1
    - Pin google-protouf dependency
    - Release Datastore 1.0.0
    - Release google-cloud-core 1.0.0
    - Merge pull request #1376 from blowmage/ga-1.0-prep
    - Switch to google-cloud-env
    - Merge pull request #1372 from blowmage/readme-latest
    - Merge pull request #1375 from quartzmo/integration-test-support
    - Add rake task acceptance:unsafe
    - Update documentation URLs
    - Update Datastore examples
    - Update Datastore query docs
    - Update Datastore docs
    - Merge pull request #1332 from swcloud/gapic-codegen-update-retry-param
    - Update GAPIC retry code for non_idempotent calls of all APIs
    - Update Datastore docs examples
    - Release Datastore 0.24.2
    - Update headers to use generated ruby version.
    - Release Datastore 0.24.1
    - Merge pull request #1269 from landrito/datastore
    - Use lib_name/lib_version
    - Regenerate datastore.
    - Update jsondoc tasks
    - Release Datastore 0.24.0
    - Generate GAPIC Data Types docs TOC for Datastore
    - Upgrade google-gax dependency
    - Fix acceptance test output
    - Update minitest dependency
    - Merge pull request #1242 from swcloud/fix-retry-codes-in-client-config-json
    - Fix retry codes in client config json for all gapic API
    - Upgrade google-gax dependency
    - Merge pull request #1221 from blowmage/refactor-grpc-utils
    - Add tests for Datastore emulator_host
    - Add Datastore Convert module
    - Datastore.new accepts emulator_host params
    - Pin yard-doctest version to 0.1.8
    - Update toc.json for google-cloud and google-cloud-datastore
    - Add data types links to docs for Google::Datastore::V1
    - Update Datastore toc.json
    - Exclude undocumented GAPIC Datastore code from YARD
    - Pin rainbow and nokogiri gems to known good versions
    - Add try_with_backoff to Datastore acceptance tests
    - Add Datastore GRPCUtils
    - Update rake doctest tasks
    - Update yard-doctest mocking
    - Update File stub in doctest helper
    - Add yard autoload_plugins before doctest
    - Release BigQuery, Datastore, Logging, and Storage 0.23.0 (beta)
    - Update Datastore GAPIC types in docs site
    - Add Datastore GAPIC types to docs site
    - Include Datastore GAPIC/gRPC code in YARD docs
    - Add yard-doctest testing to Datastore
    - Pin Rake at version ~> 11.0
    - Use new GAPIC naming
    - Change api suffix from Api to Client
    - Merge pull request #1016 from swcloud/gapic-grpcdocgen-datastore
    - Add prefix to Datastore acceptance tests
    - Add ci:acceptance tasks to service gems
    - Add google-cloud-datastore ci task
    - Add require boilerplate to Datastore examples
    - Upgrade yard-doctest to v0.1.8
    - Add grpc dummy documentation class for datastore API
    - Merge pull request #1001 from blowmage/add-foolish-consistency
    - Temporarilly pin doctest dependency
    - Add empty doctest task to all gems
    - Add README and LICENSE to gem packages
    - Ensure Gemfiles use HTTPS
    - Created integration tests for Logging and Error Reporting against GAE and GKE
    - Update gapic code using hash object to pass in both required and optional parameters
    - Release Datastore v0.21.0
    - Merge pull request #984 from blowmage/google-gax-0.6
    - Add Datastore properties support for symbols
    - Update all versions to 0.21.0
    - Update google-gax to latest version
    - * Add back work-around for Hash to Map conversion * Remove require for protobuf classes in v[x].rb
    - Fix import for all GAPIC APIs
    - Merge pull request #975 from blowmage/grpc-project-metadata
    - Add Datastore resource-prefix header
    - Revert User Agent to gcloud-ruby
    - Rename Google::Cloud::Core::GCE to Google::Cloud::Core::Environment
    - Add GAX client_config to Datastore service factory
    - Update Datastore retries documentation
    - Convert Datastore to GAX
    - Rename Service#datastore and Service#mocked_datastore
    - Update README files to use new factory methods
    - Add Datastore.new factory method
    - Merge pull request #946 from quartzmo/stackoverflow
    - Update jsondoc task in gem Rakefiles
    - Update StackOverflow tag in docs
    - Update vkit generated code for datastore
    - Switch acceptance tests to use JSON ENV VARS
    - Add doctest rake tasks
    - Add yard-doctest dependency to all gems
    - Add GRPC require to error handling code
    - Merge pull request #894 from blowmage/fix-datastore-file-binmode-tests
    - Resolve merge conflicts
    - Possible fix for unit tests running on Windows
    - Regenerate files for delay loading grpc module.
    - Add Datastore Gapic files.
    - Bump for release
    - Delay loading GRPC until its used
    - Update README links to API docs

    ### Implementation Changes

    ### New Features

    ### Dependencies

    ### Documentation

    ### Internal / Testing Changes

Is this a major, minor, or patch update (or enter the new version directly): 1.5.0
> Creating branch release-google-cloud-datastore-v1.5.0
Switched to a new branch 'release-google-cloud-datastore-v1.5.0'
> Updating CHANGELOG.md.
> Updating package.json.
Traceback (most recent call last):
  File "/usr/local/bin/releasetool", line 11, in <module>
    load_entry_point('gcp-releasetool', 'console_scripts', 'releasetool')()
  File "/usr/local/lib/python3.6/site-packages/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python3.6/site-packages/click/core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python3.6/site-packages/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python3.6/site-packages/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/releasetool/main.py", line 47, in start
    return releasetool.commands.start.nodejs.start()
  File "/usr/local/lib/python3.6/site-packages/releasetool/commands/start/nodejs.py", line 227, in start
    update_package_json(ctx)
  File "/usr/local/lib/python3.6/site-packages/releasetool/commands/start/nodejs.py", line 183, in update_package_json
    f'"version": "{ctx.release_version}"')
  File "/usr/local/lib/python3.6/site-packages/releasetool/filehelpers.py", line 76, in replace
    with open(filename, 'r+') as fh:
FileNotFoundError: [Errno 2] No such file or directory: 'package.json'
JustinBeckwith commented 6 years ago

@dazuma putting this on you to feel out the right way to integrate releasetool (or not) in our ruby release processes :)

dazuma commented 6 years ago

obsolete.

quartzmo commented 6 years ago

Fixed by #37.