Compile App Engine application in Travis

2019-08-10 12:17发布

Is there any way to run the compiler on an App Engine application written in Go without continue to serve the application with the development server and instead get an exit code?

Because I want to add a check in my automated tests in Travis that the application actually compiles.

To clarify: I have access to the App Engine SDK / Development Server in Travis, but I dont want to run goapp serve since it never exits.

2条回答
爱情/是我丢掉的垃圾
2楼-- · 2019-08-10 12:50

Without actually implementing test, your solution looks pretty hacky. Why not use goapp build? Here's my .travis.yml:

language: go
go:
- 1.2.1

# Grab newest version and suck down
install:
    - export FILE=go_appengine_sdk_linux_amd64-$(curl https://appengine.google.com/api/updatecheck | grep release | grep -o '[0-9\.]*').zip
    - curl -O https://storage.googleapis.com/appengine-sdks/featured/$FILE
    - unzip -q $FILE

# Run build and tests
script:
    - ./go_appengine/goapp test ./tests; # If you are testing
    - ./go_appengine/goapp build ./packagedir; # Wherever you keep your stuff

For reference on tests or just to see a project that builds

Edit:

It has been awhile, but I noticed recently that some of my builds randomly break. It is infuriating and I have occasionally hardcoded SDK values to overcome this. No more. Here's a very hacky implementation of grabbing the first featured (and thus hosted as /updatecheck fails to always return a hosted version) of the SDK desired:

export FILE=$(curl https://storage.googleapis.com/appengine-sdks/ | grep -o 'featured/go_appengine_sdk_linux_amd64-[^\<]*' | head -1)

For just the file:

export FILE=$(curl https://storage.googleapis.com/appengine-sdks/ | grep -oP '(?<=featured/)go_appengine_sdk_linux_amd64-[^\<]*' | head -1)
查看更多
Explosion°爆炸
3楼-- · 2019-08-10 13:09

I solved this by adding an empty Unit test at the entry point of the application (main_test.go). This unit test will force the whole application to compile.

Then I execute all unit tests by putting goapp test ./... in the script section.

查看更多
登录 后发表回答