mirror of
https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake.git
synced 2025-10-13 11:11:30 -04:00
168 lines
4.6 KiB
YAML
168 lines
4.6 KiB
YAML
|
|
variables:
|
|
DEBIAN_FRONTEND: noninteractive
|
|
REPRODUCIBLE_FLAGS: -trimpath -ldflags=-buildid=
|
|
|
|
# set up apt for automated use
|
|
.apt-template: &apt-template
|
|
- export LC_ALL=C.UTF-8
|
|
- export DEBIAN_FRONTEND=noninteractive
|
|
- echo Etc/UTC > /etc/timezone
|
|
- echo 'quiet "1";'
|
|
'APT::Install-Recommends "0";'
|
|
'APT::Install-Suggests "0";'
|
|
'APT::Acquire::Retries "20";'
|
|
'APT::Get::Assume-Yes "true";'
|
|
'Dpkg::Use-Pty "0";'
|
|
> /etc/apt/apt.conf.d/99gitlab
|
|
- apt-get update
|
|
- apt-get dist-upgrade
|
|
|
|
|
|
# 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:
|
|
GOPATH: /usr/share/gocode
|
|
before_script:
|
|
- apt-get update
|
|
- 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-goptlib-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
|
|
before_script:
|
|
- apt-get update
|
|
- apt-get -qy install --no-install-recommends
|
|
ca-certificates
|
|
git
|
|
lbzip2
|
|
|
|
.go-test: &go-test
|
|
- test -z "$(go fmt ./...)"
|
|
- go vet ./...
|
|
- go test -v -race ./...
|
|
|
|
- cd $CI_PROJECT_DIR/client/
|
|
- go get
|
|
- go build $REPRODUCIBLE_FLAGS
|
|
|
|
.test-template: &test-template
|
|
artifacts:
|
|
name: "${CI_PROJECT_PATH}_${CI_JOB_STAGE}_${CI_JOB_ID}_${CI_COMMIT_REF_NAME}_${CI_COMMIT_SHA}"
|
|
paths:
|
|
- client/*.aar
|
|
- client/*.jar
|
|
- client/client
|
|
expire_in: 1 week
|
|
when: on_success
|
|
after_script:
|
|
- echo "Download debug artifacts from https://gitlab.com/${CI_PROJECT_PATH}/-/jobs"
|
|
# this file changes every time but should not be cached
|
|
- rm -f $GRADLE_USER_HOME/caches/modules-2/modules-2.lock
|
|
- rm -rf $GRADLE_USER_HOME/caches/*/plugin-resolution/
|
|
|
|
# -- jobs ------------------------------------------------------------
|
|
|
|
android:
|
|
image: debian:bullseye-backports
|
|
variables:
|
|
ANDROID_HOME: /usr/lib/android-sdk
|
|
GOPATH: "/go"
|
|
LANG: C.UTF-8
|
|
PATH: "/go/bin:/usr/lib/go-1.16/bin:/usr/bin:/bin"
|
|
cache:
|
|
paths:
|
|
- .gradle/wrapper
|
|
- .gradle/caches
|
|
<<: *test-template
|
|
before_script:
|
|
- *apt-template
|
|
- apt-get install
|
|
android-sdk-platform-23
|
|
android-sdk-platform-tools
|
|
build-essential
|
|
curl
|
|
default-jdk-headless
|
|
git
|
|
gnupg
|
|
unzip
|
|
wget
|
|
- apt-get install -t bullseye-backports golang-1.16
|
|
|
|
- ndk=android-ndk-r21e-linux-x86_64.zip
|
|
- wget --continue --no-verbose https://dl.google.com/android/repository/$ndk
|
|
- echo "ad7ce5467e18d40050dc51b8e7affc3e635c85bd8c59be62de32352328ed467e $ndk" > $ndk.sha256
|
|
- sha256sum -c $ndk.sha256
|
|
- unzip -q $ndk
|
|
- rm ${ndk}*
|
|
- mv android-ndk-* $ANDROID_HOME/ndk-bundle/
|
|
|
|
- chmod -R a+rX $ANDROID_HOME
|
|
|
|
script:
|
|
- *go-test
|
|
- export GRADLE_USER_HOME=$CI_PROJECT_DIR/.gradle
|
|
- 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/gobind
|
|
- go install golang.org/x/mobile/cmd/gomobile
|
|
- gomobile init
|
|
|
|
- cd $CI_PROJECT_DIR/client
|
|
# gomobile builds a shared library not a CLI executable
|
|
- sed -i 's,^package main$,package snowflakeclient,' snowflake.go
|
|
- go get golang.org/x/mobile/bind
|
|
- gomobile bind -v -target=android $REPRODUCIBLE_FLAGS .
|
|
|
|
go-1.15:
|
|
image: golang:1.15-stretch
|
|
<<: *golang-docker-debian-template
|
|
<<: *test-template
|
|
script:
|
|
- *go-test
|
|
|
|
go-1.16:
|
|
image: golang:1.16-stretch
|
|
<<: *golang-docker-debian-template
|
|
<<: *test-template
|
|
script:
|
|
- *go-test
|
|
|
|
go-1.17:
|
|
image: golang:1.17-stretch
|
|
<<: *golang-docker-debian-template
|
|
<<: *test-template
|
|
script:
|
|
- *go-test
|
|
|
|
debian-testing:
|
|
image: debian:testing
|
|
<<: *debian-native-template
|
|
<<: *test-template
|
|
script:
|
|
- *go-test
|