aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans-Christoph Steiner <hans@eds.org>2020-06-30 21:47:48 +0200
committerCecylia Bocovich <cohosh@torproject.org>2020-07-14 09:16:23 -0400
commitd44fc238150c64a7a5045e756d1e9e2dbe0a3e5a (patch)
tree5358bb3e37ade0de55ffe64e88703a9c6297d8cb
parent8c875f0ba7775519b13118458d350dcae478af6a (diff)
downloadsnowflake-d44fc238150c64a7a5045e756d1e9e2dbe0a3e5a.tar.gz
snowflake-d44fc238150c64a7a5045e756d1e9e2dbe0a3e5a.zip
update .gitlab-ci.yml
-rw-r--r--.gitlab-ci.yml160
1 files changed, 135 insertions, 25 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index b7fd956..18902e6 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,29 +1,139 @@
-image: golang:1.10-stretch
-
-cache:
- paths:
- - .gradle/wrapper
- - .gradle/caches
-
-before_script:
- # Create symbolic links under $GOPATH, this is needed for local build
- - export src=$GOPATH/src
- - mkdir -p $src/git.torproject.org/pluggable-transports
- - mkdir -p $src/gitlab.com/$CI_PROJECT_NAMESPACE
- - ln -s $CI_PROJECT_DIR $src/git.torproject.org/pluggable-transports/snowflake.git
- - ln -s $CI_PROJECT_DIR $src/gitlab.com/$CI_PROJECT_PATH
-
-build:
- script:
+
+# Set things up to use the OS-native packages for Go. Anything that
+# is downloaded by go during the `go fmt` stage is not coming from the
+# Debian/Ubuntu repo. So those would need to be packaged for this to
+# make it into Debian and/or Ubuntu.
+.debian-native-template: &debian-native-template
+ variables:
+ DEBIAN_FRONTEND: noninteractive
+ GOPATH: /usr/share/gocode
+ before_script:
- apt-get -qy update
- - apt-get -qy install libx11-dev
- - cd $src/gitlab.com/$CI_PROJECT_PATH/client
- - go get ./...
- - go build ./...
+ - apt-get -qy install --no-install-recommends
+ build-essential
+ ca-certificates
+ git
+ golang
+ golang-github-cheekybits-genny-dev
+ golang-github-jtolds-gls-dev
+ golang-github-klauspost-reedsolomon-dev
+ golang-github-lucas-clemente-quic-go-dev
+ golang-github-smartystreets-assertions-dev
+ golang-github-smartystreets-goconvey-dev
+ golang-github-tjfoc-gmsm-dev
+ golang-github-xtaci-kcp-dev
+ golang-github-xtaci-smux-dev
+ golang-golang-x-crypto-dev
+ golang-golang-x-net-dev
+ golang-golang-x-sys-dev
+ golang-golang-x-text-dev
+ golang-golang-x-xerrors-dev
+ lbzip2
+
+# use Go installed as part of the official, Debian-based Docker images
+.golang-docker-debian-template: &golang-docker-debian-template
+ variables:
+ DEBIAN_FRONTEND: noninteractive
+ before_script:
+ - apt-get -qy update
+ - apt-get -qy install --no-install-recommends
+ ca-certificates
+ git
+ lbzip2
+
+.test-template: &test-template
+ artifacts:
+ name: "${CI_PROJECT_PATH}_${CI_JOB_STAGE}_${CI_COMMIT_REF_NAME}_${CI_COMMIT_SHA}"
+ paths:
+ - client/*.aar
+ - client/*.jar
+ - client/client
+ expire_in: 1 day
+ when: on_success
+ after_script:
+ - echo "Download debug artifacts from https://gitlab.com/${CI_PROJECT_PATH}/-/jobs"
+ script:
+ - test -z "$(go fmt ./...)"
- go vet ./...
- go test -v -race ./...
-after_script:
- # this file changes every time but should not be cached
- - rm -f $GRADLE_USER_HOME/caches/modules-2/modules-2.lock
- - rm -fr $GRADLE_USER_HOME/caches/*/plugin-resolution/
+ - cd $CI_PROJECT_DIR/client/
+ - go get
+ - go build
+
+ # build for Android if this is the right job
+ - test "$CI_JOB_NAME" = "android" || exit 0
+ - export GRADLE_USER_HOME=$PWD/.gradle
+ # This build was setup before go.mod was a thing, go back to the old days!
+ # 920f6791f3ec8e7467c43ee0cefffe63200bed2b broke the gomobile build.
+ # https://dev.to/maelvls/why-is-go111module-everywhere-and-everything-about-go-modules-24k
+ - export GO111MODULE=off
+ - go version
+ - go env
+
+ - go get golang.org/x/mobile/cmd/gomobile
+ - go get golang.org/x/mobile/cmd/gobind
+ - go install golang.org/x/mobile/cmd/gomobile
+ - go install golang.org/x/mobile/cmd/gobind
+ - echo y | $ANDROID_HOME/tools/bin/sdkmanager 'ndk-bundle' > /dev/null
+ - gomobile init
+
+ # Create symbolic links under $GOPATH, this is needed for local build
+ - export src=$GOPATH/src
+ - mkdir -p $src/git.torproject.org/pluggable-transports
+ - mkdir -p $src/github.com/keroserene
+ - mkdir -p $src/gitlab.com/$CI_PROJECT_NAMESPACE
+ - ln -s $CI_PROJECT_DIR $src/git.torproject.org/pluggable-transports/snowflake
+ - ln -s $CI_PROJECT_DIR $src/github.com/keroserene/snowflake
+ - ln -s $CI_PROJECT_DIR $src/gitlab.com/$CI_PROJECT_PATH
+
+ - git -C $CI_PROJECT_DIR reset --hard
+ - git -C $CI_PROJECT_DIR clean -fdx
+ - cd $CI_PROJECT_DIR/client
+ # gomobile builds a shared library not a CLI executable
+ - sed -i 's,^package main$,package snowflakeclient,' snowflake.go client_test.go
+ - gomobile bind -v -target=android git.torproject.org/pluggable-transports/snowflake/client
+
+
+# -- jobs ------------------------------------------------------------
+
+android:
+ image: registry.gitlab.com/fdroid/ci-images-client
+ variables:
+ GOPATH: "/go"
+ cache:
+ paths:
+ - .gradle/wrapper
+ - .gradle/caches
+ before_script:
+ - apt-get -qy update
+ - apt-get -qy install --no-install-recommends
+ build-essential
+ gnupg
+ wget
+ - cd /usr/local
+ - export gotarball="go1.13.12.linux-amd64.tar.gz"
+ - wget -q https://dl.google.com/go/${gotarball}
+ - wget -q https://dl.google.com/go/${gotarball}.asc
+ - curl https://dl.google.com/linux/linux_signing_key.pub | gpg --import
+ - gpg --verify ${gotarball}.asc
+ - echo "9cacc6653563771b458c13056265aa0c21b8a23ca9408278484e4efde4160618 ${gotarball}" | sha256sum -c
+ - tar -xzf ${gotarball}
+ - export PATH="/usr/local/go/bin:$GOPATH/bin:$PATH" # putting this in 'variables:' cause weird runner errors
+ - cd $CI_PROJECT_DIR
+ <<: *test-template
+
+go-1.13:
+ image: golang:1.13-stretch
+ <<: *golang-docker-debian-template
+ <<: *test-template
+
+go-1.14:
+ image: golang:1.14-stretch
+ <<: *golang-docker-debian-template
+ <<: *test-template
+
+debian-testing:
+ image: debian:testing
+ <<: *debian-native-template
+ <<: *test-template