UNPKG

mongodb-realm-cli

Version:

The MongoDB Realm Command Line Interface

446 lines (428 loc) 15.9 kB
functions: "fetch_go": - command: shell.exec params: shell: "bash" script: | set -e wget --quiet ${go_url} tar xvf ./go1*gz "fetch_baas_artifacts": &fetch_baas_artifacts - command: shell.exec params: shell: "bash" script: | # find all baas release branches, sort them, and grab the latest release's commit id git ls-remote git@github.com:10gen/baas.git | grep refs/heads/v20 | sort -k2 | awk '{ print "baas_revision: \""$1"\"" }' | tail -n 1 > baas.yml - command: expansions.update params: file: baas.yml - command: s3.get params: aws_key: ${stitch_cloud_aws_key} aws_secret: ${stitch_cloud_aws_secret} remote_file: ${baas_revision}-race.tgz bucket: stitch-cloud-versions local_file: baas_artifacts.tgz - command: shell.exec params: shell: "bash" script: | set -e mkdir baas_artifacts tar zvxf baas_artifacts.tgz -C baas_artifacts "setup_node": &setup_node command: shell.exec params: shell: "bash" script: | set -e export ROOT_DIR=`pwd` export NVM_DIR="$ROOT_DIR/.nvm" if [ ! -d "$NVM_DIR" ]; then git clone https://github.com/nvm-sh/nvm.git "$NVM_DIR" cd "$NVM_DIR" git checkout `git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1)` fi [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" nvm install ${node_version} nvm use ${node_version} "setup_project": - command: git.get_project params: directory: realm-cli "setup_mongod": - command: shell.exec params: shell: "bash" script: | set -v curl --silent ${mongodb_url} | tar xvz - command: shell.exec params: shell: "bash" background: true script: | set -v cd mongodb-* echo "starting mongod..." mkdir db_files ./bin/mongod --dbpath ./db_files --port 26000 --replSet "test" & echo "waiting for mongod to start up" - command: shell.exec params: shell: "bash" script: | set -e cd mongodb-* echo "waiting for mongod to start up" ./bin/mongo --nodb --eval 'assert.soon(function(x){try{var d = new Mongo("localhost:26000"); return true}catch(e){return false}}, "timed out connecting")' ./bin/mongo --port 26000 --eval 'rs.initiate()' echo "mongod is up." "setup_baas_server": - command: shell.exec params: shell: "bash" script: | wget --quiet "${libmongo_url}" chmod +x libmongo.so - command: shell.exec params: shell: "bash" script: | git clone git@github.com:10gen/baas.git - command: shell.exec params: shell: "bash" script: | set -e cd baas mkdir -p etc/dylib cd etc/dylib curl -s "${baas_supportlib_url}" | tar xvfz - --strip-components=1 - command: shell.exec params: shell: "bash" script: | set -e mkdir -p baas/etc/transpiler/bin cp baas_artifacts/transpiler baas/etc/transpiler/bin/ "start_server": - command: shell.exec params: shell: "bash" background: true script: | export ROOT_DIR=`pwd` export PATH="$ROOT_DIR:$PATH" export GOROOT=$ROOT_DIR/go export PATH=$GOROOT/bin:$PATH cd $ROOT_DIR/baas export PATH="$ROOT_DIR/baas/etc/transpiler/bin:$PATH" export LD_LIBRARY_PATH="$ROOT_DIR/baas/etc/dylib/lib" export AWS_ACCESS_KEY_ID='${baas_test_aws_key}' export AWS_SECRET_ACCESS_KEY='${baas_test_aws_secret}' go run cmd/server/main.go --configFile $ROOT_DIR/baas/etc/configs/test_cli_config.json - command: shell.exec params: shell: "bash" script: | counter=0 until $(curl --output /dev/null --silent --head --fail ${realm_server_url}); do echo "checking for API server to be up..." sleep 1 let counter++ if [ $counter -gt 100 ]; then exit 1 fi done tasks: - name: test_unit exec_timeout_secs: 3600 commands: - func: "fetch_go" vars: go_url: ${go_115_url} - func: "setup_project" - command: shell.exec params: shell: "bash" script: | set -v set -e export ROOT_DIR=`pwd` export PATH="$ROOT_DIR:$PATH" export PATH="$ROOT_DIR/realm-cli/etc/bin:$PATH" export GOROOT=$ROOT_DIR/go export PATH=$GOROOT/bin:$PATH cd $ROOT_DIR/realm-cli go test -v -covermode=count -coverprofile=$ROOT_DIR/cover.out $(go list github.com/10gen/realm-cli/...) > $ROOT_DIR/realm-cli.suite - command: s3.put params: aws_key: ${test_aws_key} aws_secret: ${test_aws_secret} local_file: cover.out remote_file: ${task_id}/cover.out bucket: baas-test-artifacts content_type: text/plain permissions: public-read - name: test_e2e exec_timeout_secs: 3600 commands: - func: "fetch_go" vars: go_url: ${go_115_url} - func: "setup_project" - command: shell.exec params: shell: "bash" script: | set -v set -e export ROOT_DIR=`pwd` export PATH="$ROOT_DIR:$PATH" export PATH="$ROOT_DIR/realm-cli/etc/bin:$PATH" export GOROOT=$ROOT_DIR/go export PATH=$GOROOT/bin:$PATH cd $ROOT_DIR/realm-cli go test -v -covermode=count -coverprofile=$ROOT_DIR/cover.out $(go list github.com/10gen/realm-cli/e2e/...) > $ROOT_DIR/realm-cli.suite - command: s3.put params: aws_key: ${test_aws_key} aws_secret: ${test_aws_secret} local_file: cover.out remote_file: ${task_id}/cover.out bucket: baas-test-artifacts content_type: text/plain permissions: public-read - name: test_with_cloud exec_timeout_secs: 3600 commands: - func: "fetch_go" vars: go_url: ${go_117_url} - func: "fetch_baas_artifacts" - func: "setup_node" - func: "setup_project" - func: "setup_mongod" - func: "setup_baas_server" - func: "start_server" - command: shell.exec params: shell: "bash" script: | set -v set -e export ROOT_DIR=`pwd` export PATH="$ROOT_DIR:$PATH" export GOROOT=$ROOT_DIR/go export PATH=$GOROOT/bin:$PATH export BAAS_NO_SKIP_TEST=1 export BAAS_MONGODB_CLOUD_GROUP_COUNT="${baas_mongodb_cloud_group_count}" export BAAS_MONGODB_CLOUD_GROUP_ID="${baas_mongodb_cloud_group_id}" export BAAS_MONGODB_CLOUD_USERNAME="${baas_mongodb_cloud_username}" export BAAS_MONGODB_CLOUD_API_KEY="${baas_mongodb_cloud_api_key}" export BAAS_MONGODB_CLOUD_ADMIN_USERNAME="${baas_mongodb_cloud_admin_username}" export BAAS_MONGODB_CLOUD_ADMIN_API_KEY="${baas_mongodb_cloud_admin_api_key}" export BAAS_MONGODB_CLOUD_API_BASE_URL="${atlas_server_url}" export BAAS_MONGODB_EXPIRED_ACCESS_TOKEN="${baas_mongodb_expired_access_token}" export BAAS_SERVER_BASE_URL="${realm_server_url}" cd $ROOT_DIR/realm-cli go test -v -covermode=count -coverprofile=$ROOT_DIR/cover.out $(go list github.com/10gen/realm-cli/internal/cloud/...) -timeout 25m > $ROOT_DIR/realm-cli.suite - command: s3.put params: aws_key: ${test_aws_key} aws_secret: ${test_aws_secret} local_file: cover.out remote_file: ${task_id}/cover.out bucket: baas-test-artifacts content_type: text/plain permissions: public-read - name: lint commands: - func: "fetch_go" vars: go_url: ${go_115_url} - func: "setup_project" - command: shell.exec params: shell: "bash" script: | export ROOT_DIR=`pwd` export GOROOT=$ROOT_DIR/go export PATH=$GOROOT/bin:$PATH cd $ROOT_DIR/realm-cli go run github.com/golangci/golangci-lint/cmd/golangci-lint run ./... - name: build_publish_clis depends_on: - name: lint - name: test_unit - name: test_with_cloud - name: test_e2e patchable: false commands: - func: "fetch_go" vars: go_url: ${go_115_url} - func: "setup_project" - command: shell.exec params: shell: "bash" script: | set -e export ROOT_DIR=`pwd` export PATH="$ROOT_DIR:$PATH" export GOROOT=$ROOT_DIR/go export PATH=$GOROOT/bin:$PATH cd $ROOT_DIR/realm-cli curl https://stedolan.github.io/jq/download/linux64/jq > jq && chmod +x jq export VERSION=`cat package.json | ./jq '.version' | sed -e 's/^"//' -e 's/"$//'` export GOARCH=amd64 export SEGMENT_WRITE_KEY="${realm_cli_segment_write_key}" export GOOS=linux export OSARCH=linux-amd64 echo "Building realm-cli for $GOOS on $GOARCH" REPLACE_VARS="-ldflags \"-X github.com/10gen/realm-cli/internal/cli.Version=$VERSION -X github.com/10gen/realm-cli/internal/cli.OSArch=$OSARCH -X github.com/10gen/realm-cli/internal/telemetry.segmentWriteKey=$SEGMENT_WRITE_KEY\"" eval go build $REPLACE_VARS -o realm-cli-linux-amd64 main.go export GOOS=darwin export OSARCH=macos-amd64 REPLACE_VARS="-ldflags \"-X github.com/10gen/realm-cli/internal/cli.Version=$VERSION -X github.com/10gen/realm-cli/internal/cli.OSArch=$OSARCH -X github.com/10gen/realm-cli/internal/telemetry.segmentWriteKey=$SEGMENT_WRITE_KEY\"" echo "Building realm-cli for $GOOS on $GOARCH" eval go build $REPLACE_VARS -o realm-cli-macos-amd64 main.go export GOOS=windows export OSARCH=windows-amd64 REPLACE_VARS="-ldflags \"-X github.com/10gen/realm-cli/internal/cli.Version=$VERSION -X github.com/10gen/realm-cli/internal/cli.OSArch=$OSARCH -X github.com/10gen/realm-cli/internal/telemetry.segmentWriteKey=$SEGMENT_WRITE_KEY\"" echo "Building realm-cli for $GOOS on $GOARCH" eval go build $REPLACE_VARS -o realm-cli-windows-amd64 main.go - command: s3.put params: aws_key: ${artifacts_aws_key} aws_secret: ${artifacts_aws_secret} local_file: realm-cli/realm-cli-linux-amd64 remote_file: ${build_id}/linux-amd64/realm-cli bucket: realm-clis content_type: application/octet-stream permissions: public-read - command: s3.put params: aws_key: ${artifacts_aws_key} aws_secret: ${artifacts_aws_secret} local_file: realm-cli/realm-cli-macos-amd64 remote_file: ${build_id}/macos-amd64/realm-cli bucket: realm-clis content_type: application/octet-stream permissions: public-read - command: s3.put params: aws_key: ${artifacts_aws_key} aws_secret: ${artifacts_aws_secret} local_file: realm-cli/realm-cli-windows-amd64 remote_file: ${build_id}/windows-amd64/realm-cli.exe bucket: realm-clis content_type: application/octet-stream permissions: public-read - name: release_tag depends_on: - name: lint - name: test_unit - name: test_with_cloud - name: test_e2e - name: build_publish_clis patchable: false commands: - func: "setup_node" - func: "setup_project" - command: s3.get params: aws_key: ${artifacts_aws_key} aws_secret: ${artifacts_aws_secret} remote_file: versions/cloud-prod/CURRENT bucket: realm-clis local_file: manifest.json - command: shell.exec params: shell: "bash" script: | set -e cd realm-cli curl https://stedolan.github.io/jq/download/linux64/jq > jq && chmod +x jq export VERSION=`cat package.json | ./jq '.version' | sed -e 's/^"//' -e 's/"$//'` if [ "${branch_name}" != "master" ]; then echo "skipping release: not on master branch" exit 0 fi if [ $(git tag -l "v$VERSION") ]; then echo "skipping release: tag already exists" exit 0 fi echo "updating manifest" ./contrib/manifest.js ${build_id} $VERSION ../manifest.json echo "tagging release: v$VERSION" PREVIOUS_VERSION=$(git describe --tags $(git rev-list --tags --max-count=1)) BODY=$(git log --no-merges $PREVIOUS_VERSION..HEAD --pretty="format:%s (%h); %an" | sed '$d') git tag -a -m "Changelog since $PREVIOUS_VERSION:" -m "$BODY" "v$VERSION" git push origin master --tags touch release.true - command: s3.put params: aws_key: ${artifacts_aws_key} aws_secret: ${artifacts_aws_secret} local_file: manifest.json remote_file: versions/cloud-prod/CURRENT bucket: realm-clis content_type: application/octet-stream permissions: public-read - command: shell.exec params: shell: "bash" silent: true script: | set -e cd realm-cli if [ ! -f release.true ]; then # not a release build exit 0 fi cat > .npmrc <<EOL _auth = ${npm_auth} always-auth = true email = ${npm_email} registry=${npm_registry} EOL - command: shell.exec params: shell: "bash" script: | set -e cd realm-cli if [ ! -f release.true ]; then # not a release build exit 0 fi echo "publishing release to npm" npm publish --unsafe-perm post: - command: gotest.parse_files params: files: ["*.suite"] buildvariants: - name: rhel70 display_name: rhel70 run_on: - rhel70 expansions: atlas_server_url: "https://cloud-dev.mongodb.com" baas_supportlib_url: "https://s3.amazonaws.com/stitch-artifacts/stitch-support/stitch-support-rhel-70-4.3.2-721-ge791a2e-patch-5e2a6ad2a4cf473ae2e67b09.tgz" go_115_url: "https://dl.google.com/go/go1.15.11.linux-amd64.tar.gz" go_117_url: "https://dl.google.com/go/go1.17.2.linux-amd64.tar.gz" libmongo_url: "https://stitch-artifacts.s3.amazonaws.com/stitch-mongo-libs/stitch_mongo_libs_linux_64_patch_f323e4411e1b2d9011b88d7f6855654c8432f2ee_6179e0e92a60ed55e5ecc820_21_10_27_23_30_03/libmongo.so" mongodb_url: "https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.2.tgz" realm_server_url: "http://localhost:9090" yarn_url: "https://s3.amazonaws.com/stitch-artifacts/yarn/latest.tar.gz" node_version: 12.16.2 tasks: - name: test_unit - name: test_with_cloud - name: test_e2e - name: lint - name: build_publish_clis - name: release_tag