linux.yml raw
1 # SPDX-License-Identifier: Unlicense OR MIT
2 image: debian/testing
3 packages:
4 - curl
5 - pkg-config
6 - libwayland-dev
7 - libx11-dev
8 - libx11-xcb-dev
9 - libxkbcommon-dev
10 - libxkbcommon-x11-dev
11 - libgles2-mesa-dev
12 - libegl1-mesa-dev
13 - libffi-dev
14 - libxcursor-dev
15 - libxrandr-dev
16 - libxinerama-dev
17 - libxi-dev
18 - libxxf86vm-dev
19 - wine
20 - xvfb
21 - xdotool
22 - scrot
23 - sway
24 - grim
25 - wine
26 - unzip
27 sources:
28 - https://git.sr.ht/~eliasnaur/gio
29 environment:
30 GOFLAGS: -mod=readonly
31 PATH: /home/build/sdk/go/bin:/usr/bin:/home/build/go/bin:/home/build/android/tools/bin
32 ANDROID_SDK_ROOT: /home/build/android
33 android_sdk_tools_zip: sdk-tools-linux-3859397.zip
34 android_ndk_zip: android-ndk-r20-linux-x86_64.zip
35 github_mirror: git@github.com:gioui/gio
36 secrets:
37 - 75d8a1eb-5fc5-4074-8a36-db6015d6ed5a
38 tasks:
39 - install_go1_14: |
40 mkdir -p /home/build/sdk
41 curl -s https://dl.google.com/go/go1.14.linux-amd64.tar.gz | tar -C /home/build/sdk -xzf -
42 - test_gio: |
43 cd gio
44 export EGL_PLATFORM=surfaceless # for headless tests
45 go test -race ./...
46 GOOS=windows go test -exec=wine ./...
47 GOOS=js GOARCH=wasm go build -o /dev/null ./...
48 - install_chrome: |
49 curl -s https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
50 sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
51 sudo apt-get -qq update
52 sudo apt-get -qq install -y google-chrome-stable
53 - test_cmd: |
54 cd gio/cmd
55 go test ./...
56 go test -race ./...
57 cd gogio # since we need -modfile to point at the parent directory
58 GOFLAGS=-modfile=../go.local.mod go test
59 - install_jdk8: |
60 curl -so jdk.deb "https://cdn.azul.com/zulu/bin/zulu8.42.0.21-ca-jdk8.0.232-linux_amd64.deb"
61 sudo apt-get -qq install -y -f ./jdk.deb
62 - install_android: |
63 mkdir android
64 cd android
65 curl -so sdk-tools.zip https://dl.google.com/android/repository/$android_sdk_tools_zip
66 unzip -q sdk-tools.zip
67 rm sdk-tools.zip
68 curl -so ndk.zip https://dl.google.com/android/repository/$android_ndk_zip
69 unzip -q ndk.zip
70 rm ndk.zip
71 mv android-ndk-* ndk-bundle
72 yes|sdkmanager --licenses
73 sdkmanager "platforms;android-29" "build-tools;29.0.2"
74 - test_android: |
75 cd gio
76 CC=$ANDROID_SDK_ROOT/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android29-clang GOOS=android GOARCH=arm64 CGO_ENABLED=1 go build ./...
77 - install_gogio: |
78 cd gio/cmd
79 go install ./gogio
80 - test_android_gogio: |
81 mkdir tmp
82 cd tmp
83 go mod init example.com
84 go get -d github.com/p9c/p9/pkg/gel/gio/example/kitchen
85 gogio -target android github.com/p9c/p9/pkg/gel/gio/example/kitchen
86 - check_gofmt: |
87 cd gio
88 test -z "$(gofmt -s -l .)"
89 - check_sign_off: |
90 set +x -e
91 cd gio
92 for hash in $(git log -n 20 --format="%H"); do
93 message=$(git log -1 --format=%B $hash)
94 if [[ ! "$message" =~ "Signed-off-by: " ]]; then
95 echo "Missing 'Signed-off-by' in commit $hash"
96 exit 1
97 fi
98 done
99 - mirror: |
100 # mirror to github
101 ssh-keyscan github.com > "$HOME"/.ssh/known_hosts && cd gio && git push --mirror "$github_mirror" || echo "failed mirroring"
102