-
Notifications
You must be signed in to change notification settings - Fork 44
131 lines (118 loc) · 5.58 KB
/
ci.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-syntax-for-github-actions
name: CI
on: [push, pull_request]
env:
LANG: en_US.UTF-8
jobs:
ci:
strategy:
fail-fast: false
matrix:
ghc: [8.6.5, 8.8.4, 8.10.7]
runs-on: ubuntu-latest
container:
image: ghcr.io/facebookincubator/hsthrift/ci-base:ghcup
options: --cpus 2 --security-opt=seccomp=unconfined
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Install additional tools
run: |
apt-get update
apt install -y ninja-build libxxhash-dev m4 rsync wget unzip clang-11 libclang-11-dev llvm-11-dev libgmock-dev
apt-get remove -y libfmt-dev
- name: Make utf8 default locale
run: |
apt-get install -y locales
locale-gen en_US.UTF-8
update-locale LANG=en_US.UTF-8
- name: Install GHC ${{ matrix.ghc }}
run: ghcup install ghc ${{ matrix.ghc }} --set
- name: Install cabal-install 3.8
run: ghcup install cabal -u https://downloads.haskell.org/~cabal/cabal-install-3.8.1.0/cabal-install-3.8.1.0-x86_64-linux-deb10.tar.xz 3.8.1.0 --set
- name: Add GHC and cabal to PATH
run: echo "$HOME/.ghcup/bin" >> "$GITHUB_PATH"
- name: Install indexer (flow)
run: |
export FLOW=0.209.1
wget "https://github.com/facebook/flow/releases/download/v${FLOW}/flow-linux64-v${FLOW}.zip"
unzip "flow-linux64-v${FLOW}.zip"
mkdir -p "$HOME"/.hsthrift/bin && mv flow/flow "$HOME"/.hsthrift/bin
- name: Install indexer (hack)
run: |
apt-get install -y software-properties-common apt-transport-https
apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xB4112585D386EB94
# NB. https stopped working at some point, certificate failure
add-apt-repository http://dl.hhvm.com/ubuntu
apt-get update
apt-get install -y hhvm-nightly
- name: Install indexer (typescript)
run: |
curl -fsSL https://deb.nodesource.com/setup_16.x | bash -
apt-get install -y nodejs
npm install -g @sourcegraph/scip-typescript
- name: Install indexer (go)
run: |
export GOLANG=1.17.8
export SCIPGO=0.1.4
mkdir go-install; cd go-install
wget "https://go.dev/dl/go${GOLANG}.linux-amd64.tar.gz"
tar -C "$HOME/.hsthrift" -xzf "go${GOLANG}.linux-amd64.tar.gz"
wget "https://github.com/sourcegraph/scip-go/releases/download/v${SCIPGO}/scip-go_${SCIPGO}_linux_amd64.tar.gz"
tar xzf "scip-go_${SCIPGO}_linux_amd64.tar.gz"
mkdir -p "$HOME"/.hsthrift/bin && mv scip-go "$HOME"/.hsthrift/bin
echo "$HOME/.hsthrift/go/bin" >> "$GITHUB_PATH"
- name: Install indexer (rust)
run: |
export RUST_ANALYZER=2023-06-19
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
echo "$HOME/.cargo/bin" >> "$GITHUB_PATH"
mkdir -p "$HOME"/.hsthrift/bin
curl -L https://github.com/rust-analyzer/rust-analyzer/releases/download/${RUST_ANALYZER}/rust-analyzer-x86_64-unknown-linux-gnu.gz | gunzip -c - > "$HOME"/.hsthrift/bin/rust-analyzer
chmod +x "$HOME"/.hsthrift/bin/rust-analyzer
- name: Install indexer (java)
run: |
apt-get install -y default-jdk maven
curl -fLo coursier https://git.io/coursier-cli && chmod +x coursier
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/
./coursier bootstrap --standalone -o lsif-java com.sourcegraph:lsif-java_2.13:0.8.0-RC1 --main-class com.sourcegraph.lsif_java.LsifJava
mkdir -p "$HOME"/.hsthrift/bin && cp lsif-java "$HOME"/.hsthrift/bin
- name: Fetch hsthrift and build folly, rocksdb
run: ./install_deps.sh
- name: Nuke build artifacts
run: rm -rf /tmp/fbcode_builder_getdeps-Z__wZGleanZGleanZhsthriftZbuildZfbcode_builder-root/
- name: Add thrift compiler and indexers to path
run: echo "$HOME/.hsthrift/bin" >> "$GITHUB_PATH"
- name: Populate hackage index
run: cabal update
- name: Build hsthrift and Glean
run: env LD_LIBRARY_PATH="$HOME/.hsthrift/lib" PKG_CONFIG_PATH="$HOME/.hsthrift/lib/pkgconfig" make
- name: Build glass
run: env LD_LIBRARY_PATH="$HOME/.hsthrift/lib" PKG_CONFIG_PATH="$HOME/.hsthrift/lib/pkgconfig" make glass
- name: Build glean-clang
run: env LD_LIBRARY_PATH="$HOME/.hsthrift/lib" PKG_CONFIG_PATH="$HOME/.hsthrift/lib/pkgconfig" make glean-clang
- if: matrix.ghc != '8.4.4' && matrix.ghc != '8.6.5'
name: Build hiedb-indexer
run: env LD_LIBRARY_PATH="$HOME/.hsthrift/lib" PKG_CONFIG_PATH="$HOME/.hsthrift/lib/pkgconfig" make glean-hiedb
- name: Run tests
# External hh_server hasn't caught up with the internal
# version yet so the test output differs. Disable the Hack
# tests temporarily.
run: env LD_LIBRARY_PATH="$HOME/.hsthrift/lib" PKG_CONFIG_PATH="$HOME/.hsthrift/lib/pkgconfig" cabal test glean:tests -f-hack-tests
# check the vscode extension builds
vscode:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Install Node
uses: actions/setup-node@v2
- name: Build VS Code extension
run: npx vsce package
working-directory: glean/vscode
- name: Archive .vsix extension file
uses: actions/upload-artifact@v2
with:
name: glean-vsix
path: |
glean/vscode/*.vsix