This folder contains a Dart based backend for Cocoon.
gcloud
). Then initialize it and authenticate yourself by running:gcloud auth login
gcloud init
export PATH="$PATH":"path/to/flutter/bin/" flutter upgrade flutter pub get export PATH="$PATH":"path/to/flutter/bin/cache/dart-sdk/bin/"
$ dart test
To update the JSON serialization generated code, run:
$ dart pub run build_runner build
Any updates should be checked into source control.
To update the Protocol Buffer generated code:
Download and install the protocol buffer compiler (protoc
). Once installed, update your PATH
to include the path to the protoc
binary.
On Linux, you may be able to use sudo apt-get install protocol-compiler
to install. On macOS, you may be able to use brew install protobuf
Install the protoc_plugin
Dart package. Once installed, update your PATH
to include the path to the protoc_plugin/bin
directory (or $HOME/.pub-cache/bin
if you used pub global activate protoc_plugin
).
Run the following command:
$ protoc \ --plugin=/path/to/protoc_plugin/bin/ \ --dart_out=. \ lib/src/path/to/file.proto
Remove the unused generated files:
$ find . -regex '.*\.\(pbjson\|pbserver\)\.dart' -delete
(you can remove the *.pbenum.dart
files too, except for protobuffers that actually define enums, like build_status_response.proto
)
To update the indexes in the App Engine project, run:
$ gcloud datastore indexes create index.yaml
export COCOON_USE_IN_MEMORY_CACHE=true
This environment is needed as you don't have access to the remote redis instance during local development.
export COCOON_USE_IN_MEMORY_CACHE=true dart bin/server.dart
If you see Serving requests at 0.0.0.0:8080 the dev server is working.
Once you've installed Docker and have the docker
command-line tool in your path, then you can use the following commands to build, run, stop, and kill a local development instance.
# Build the docker image $ docker build -t local . # Start the local container, clearing the console buffer and tailing the logs $ container_id="$(docker run -d -p 8080:8080 local)" && \ clear && \ printf '\e[3J' && \ docker logs $container_id -f # Stop the local Docker container $ docker container ls|grep local|tr -s ' '|cut -d' ' -f1|xargs docker container stop # Remove the local Docker image $ docker images|grep local|tr -s ' '|cut -d' ' -f3|xargs docker rmi -f
$ docker exec -it <container name> /bin/bash
Cocoon auto deployment has been set up via Google Cloud Build daily on Workdays.
This is easy to deploy if you simply want a new version based on the latest commit. Open Cloud Build dashboard and click run in the push-master trigger (example)
PROJECT_ID
be the Google Cloud Project ID and VERSION
be the version you're deploying to App Engine. Visit https://console.cloud.google.com/appengine/versions?project=flutter-dashboard for the list of current versions.$ dart dev/deploy.dart --version version-$(git rev-parse --short HEAD) --project flutter-dashboard
The deploy script will build the Flutter project and copy it over for deployment. Then it will use the Google Cloud CLI to deploy the project to AppEngine.
For more options run:
$ dart dev/deploy.dart --help
Add targeted branches in dev/branches.txt
, based on which cocoon API filters targeted branches and then runs tests on those branches. With tests running against different branches, the frontend then supports listing commits on a specific branch (defaulting to master).
Once the PR has merged, go to https://flutter-dashboard.appspot.com/api/flush-cache?key=flutterBranches to flush the cache and have the latest change take effect. Otherwise, it can take 12 hours for it to propagate. Ensure you are signed into cocoon dashboard otherwise it will throw a 403.