Skip to content

Files

Latest commit

db058b3 · Jan 18, 2023

History

History
This branch is 2 commits ahead of, 1623 commits behind flutter/cocoon:main.

app_dart

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
Dec 6, 2022
May 13, 2022
Nov 3, 2022
Jan 17, 2023
Jan 17, 2023
Jan 13, 2022
May 3, 2022
Jan 18, 2023
Oct 21, 2022
Aug 26, 2022
Jul 19, 2022
May 27, 2020
Jan 18, 2023
Aug 15, 2022
Jan 13, 2023
Apr 12, 2021
Jan 13, 2023
Jan 13, 2023

Dart backend for cocoon

This folder contains a Dart based backend for Cocoon.

Building and running

Prerequisites

  • Install the Google Cloud Developer Tools Command Line Interface (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/"

Running the tests

$ dart test

Running codegen

JSON

To update the JSON serialization generated code, run:

$ dart run build_runner build

Any updates should be checked into source control.

Protobuf

To update the Protocol Buffer generated code:

  1. Download and install the protocol buffer compiler (protoc). Once installed, update your PATH to include the path to the protoc binary.

    On Linux, use sudo apt-get install protocol-compiler to install. On macOS, use brew install protobuf

  2. 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).

  3. Run the following command:

    $ protoc --dart_out=. lib/src/model/proto/**/*.proto
  4. 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)

Generating cloud datastore indexes

To update the indexes in the App Engine project, run:

$ gcloud datastore indexes create index.yaml

Local development

Using physical machine

  • Setting up the environment
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.

  • Starting server
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.

Using Docker

  • Running a local development instance

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
  • ssh into instance
$ docker exec -it <container name> /bin/bash

Deploying a release to App Engine

Cocoon auto deployment has been set up via Google Cloud Build daily on Workdays.

[Manual-deploy(go/cocoon-cloud-build#manual-deploy)

  • Using the cloud build

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)

$ 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