Coder Social home page Coder Social logo

server-workflow-tool's Introduction

MongoDB Server Team Workflow Tool

Command line tool to help MongoDB server engineers set up dev environments.

Installation

# Install homebrew.
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

# Install Python.
brew update
brew install python3 python2
brew upgrade

# Install and update pip.
# See SERVER-53250 for more info about the pip version requirement.
python3 -m pip install --upgrade "pip<20.3" setuptools

# Install the server workflow tool.
python3 -m pip install git+https://github.com/mongodb/server-workflow-tool.git

# Run the workflow tool to set up your dev environment.
workflow setup.macos

Usage:

$ workflow --help

Usage: workflow <subcommand> [--subcommand-opts] ...

Subcommands:

  helpers.upgrade                     Upgrade the workflow tool to the latest version
  setup.macos                         Set up macOS for MongoDB server development.

server-workflow-tool's People

Contributors

dbradf avatar dpercy avatar iamxander avatar ianwhalen avatar jasurbeknurboyev avatar jonstreets avatar macdaddynyc-mongo avatar mikhailshchatko avatar richardsamuels avatar rob-guo avatar ybrill avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

server-workflow-tool's Issues

Improve commit workflow

From Max's comment on the wiki:

Please don't encourage the "--rev HEAD~1" pattern (or counting the number of commits via git log). "--rev origin/master..." (yes, three dots) is the Correct Thing (it'll resolve the diff against the merge-base commit, which is the commit the branch started from)

clang-format gets installed wherever you run `m`

We can close if I've misunderstood something here, but in running m lint for the first time, clang-format gets downloaded placed in the same directory you've run m in. In my case that was the root of ./mongo/.

Presumably that's not a good or common place because it is not in the .gitignore file but it is still in the repo path. Would appreciate some guidance on where it should go and then I can update this script to be more explicit.

Make "patch" better

Record the version of the enterprise module corresponding to the base commit to avoid having to rebase before every patch and letter the user deal with potential conflicts

Handle changes to brew install method (--upgrade no longer supported)

maybe you could also add a "skip" option here? typing 'atom' or 'sublime-text' seems to fail:

brew install --upgrade sublime-text
Encountered a bad command exit code!

Command: 'brew install --upgrade sublime-text'

Exit code: 1

Stdout:



Stderr:

                                     end of the run.
    -i, --interactive                Download and patch formula, then open a
                                     shell. This allows the user to run
                                     ./configure --help and otherwise
                                     determine how to turn the software package
                                     into a Homebrew package.
    -g, --git                        Create a Git repository, useful for
                                     creating patches to the software.
    -h, --help                       Show this message.
Error: invalid option: --upgrade

Update the review command to diff against upstream base_branch rather than just base_branch

Max suggested using "--rev {ticket_conf.base_branch}@{{upstream}}..." here

cmd = f'python {str(config.UPLOAD_PY)} --rev {ticket_conf.base_branch}...' # Yes three dots.
instead of "--rev {ticket_conf.base_branch}..." to fix a problem where if the work branch is being rebase from remote origin master, the CR diff will contain the diff between the work branch and the out of date local master branch. This change fixes that problem.

Can't submit CR for Mongo Changes when there are changes in Enterprise repo

I created some changes in the enterprise module to accompany the changes in the mongo repo that I had made. I submitted an evergreen patch which used my enterprise changes (link)

I then tried to run workflow tool on my mongo branch, but the tool only submitted a CR for the enterprise changes. I am unable to submit a CR for the mongo changes.

`m scons` relies on ninja

this causes a failure if you follow the instructions exactly. we should either remove the dependency or just have ninja be a part of the basic instructions

exception in scons while using m to install ninja

> m setup-dev-env.macos-extra

Installing ninja
brew install ninja
==> Downloading https://homebrew.bintray.com/bottles/ninja-1.9.0.mojave.bottle.tar.gz
==> Pouring ninja-1.9.0.mojave.bottle.tar.gz
==> Caveats
Bash completion has been installed to:
  /usr/local/etc/bash_completion.d

zsh completions have been installed to:
  /usr/local/share/zsh/site-functions
==> Summary
๐Ÿบ  /usr/local/Cellar/ninja/1.9.0: 7 files, 275.8KB
mkdir -p /Users/ian/mongo/src/mongo/db/modules
cd /Users/ian/mongo/src/mongo/db/modules && git clone https://github.com/RedBeard0531/mongo_module_ninja ninja
Cloning into 'ninja'...
cd /Users/ian/mongo && python buildscripts/scons.py CC=clang CXX=clang++ CCFLAGS=-Wa,--compress-debug-sections MONGO_VERSION='0.0.0' MONGO_GIT_HASH='unknown' VARIANT_DIR=ninja --modules=ninja build.ninja
scons: Reading SConscript files ...
  File "/Users/ian/mongo/SConstruct", line 933

    print( "python version: " + " ".join( [ `i` for i in sys.version_info ] ) )

                                            ^

SyntaxError: invalid syntax```

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.