-
Notifications
You must be signed in to change notification settings - Fork 4
168 lines (144 loc) · 5.44 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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
name: Test WASM build, prepare web application and deploy to GitHub Pages
on:
push:
branches: ["main"]
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: "pages"
cancel-in-progress: true
jobs:
test_and_deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
#
# Compile INCHI_EXE and run the test suite
#
- name: Setup emsdk
uses: mymindstorm/setup-emsdk@v14
with:
version: 3.1.43
actions-cache-folder: 'emsdk-cache'
- name: Verify emsdk
run: |
emcc -v
- name: Verify Node.js version
run: |
node -v
- name: Checkout this repository
uses: actions/checkout@v4
with:
path: './InChI-Web-Demo'
- name: Checkout InChI 1.0.6 repository
uses: actions/checkout@v4
with:
path: './InChI_1_06'
repository: 'IUPAC-InChI/InChI_1_06'
- name: Patch InChI_1_06's util.c
run: |
cd $GITHUB_WORKSPACE/InChI_1_06
git apply $GITHUB_WORKSPACE/InChI-Web-Demo/inchi/util.c.patch
- name: Compile InChI_1_06's INCHI_EXE
# Creates inchi-1.js and inchi-1.wasm in $GITHUB_WORKSPACE/InChI_1_06/INCHI-1-SRC/INCHI_EXE/bin/wasm
run: |
cd $GITHUB_WORKSPACE/InChI_1_06/INCHI-1-SRC/INCHI_EXE/inchi-1/gcc
mkdir -p ../../bin/wasm
make -j C_COMPILER=emcc CPP_COMPILER=em++ LINKER=em++ LINKER_OPTIONS="-lnodefs.js -lnoderawfs.js -sSTACK_SIZE=1048576" BIN_DIR=../../bin/wasm INCHI_EXECUTABLE_NAME=inchi-1.js
- name: Prepare InChI_1_06's tests
run: |
cd $GITHUB_WORKSPACE/InChI_1_06/INCHI-1-TEST/test
unzip test-datasets.zip -d test-datasets
unzip test-results.zip -d expected-test-results
cp $GITHUB_WORKSPACE/InChI-Web-Demo/inchi/INCHI-1-TEST/inchify_*.sh .
- name: Run InChI_1_06's tests and compare test results with expected results
run: |
cd $GITHUB_WORKSPACE/InChI_1_06/INCHI-1-TEST/test
./inchify_InChI_TestSet.sh "node ../../INCHI-1-SRC/INCHI_EXE/bin/wasm/inchi-1.js" test-datasets test-results test-logs
./inchify_zzp.sh "node ../../INCHI-1-SRC/INCHI_EXE/bin/wasm/inchi-1.js" test-datasets test-results test-logs
diff -q --strip-trailing-cr test-results/ expected-test-results/ && echo "Tests are OK!"
#
# Build InChI WASM module
#
- name: Compile InChI_1_06 WebAssembly module (INCHI_WEB)
# Creates inchi-web106.js and inchi-web106.wasm in $GITHUB_WORKSPACE/InChI_1_06/INCHI-1-SRC/INCHI_WEB
run: |
cd $GITHUB_WORKSPACE/InChI_1_06/INCHI-1-SRC
cp -R $GITHUB_WORKSPACE/InChI-Web-Demo/inchi/INCHI_WEB .
cd INCHI_WEB
make -j INCHI_WEB_NAME=inchi-web106 MODULE_NAME=inchiModule106
#
# Build RInChI WASM module
#
- name: Checkout RInChI repository
uses: actions/checkout@v4
with:
path: './RInChI'
repository: 'IUPAC-InChI/RInChI'
- name: Patch RInChI project
run: |
cd $GITHUB_WORKSPACE/RInChI
git apply $GITHUB_WORKSPACE/InChI-Web-Demo/rinchi/rinchi.patch
- name: Compile RInChI WebAssembly module from rinchi_lib
# Creates librinchi-100.js and librinchi-100.wasm in $GITHUB_WORKSPACE/RInChI/src/rinchi_lib
run: |
cd $GITHUB_WORKSPACE/RInChI/src/rinchi_lib
make -j -f Makefile-32bit
#
# Build Ketcher
#
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'yarn'
cache-dependency-path: ${{github.workspace}}/InChI-Web-Demo/ketcher/react-app/yarn.lock
- name: Verify Node.js version
run: |
node -v
- name: Build Ketcher React App
# creates build directoy in $GITHUB_WORKSPACE/InChI-Web-Demo/ketcher/react-app
run: |
cd $GITHUB_WORKSPACE/InChI-Web-Demo/ketcher/react-app
yarn install --frozen-lockfile
yarn run build
#
# Bootstrap
#
- name: Download Bootstrap
run: |
cd $GITHUB_WORKSPACE
wget https://github.com/twbs/bootstrap/releases/download/v5.2.3/bootstrap-5.2.3-dist.zip
wget https://github.com/twbs/icons/releases/download/v1.10.3/bootstrap-icons-1.10.3.zip
unzip bootstrap-5.2.3-dist.zip -d bootstrap
unzip bootstrap-icons-1.10.3.zip -d bootstrap-icons
#
# GitHub pages deployment
#
- name: Collect artifacts for deployment
run: |
cd $GITHUB_WORKSPACE
cp -R $GITHUB_WORKSPACE/InChI-Web-Demo/pages .
cd pages
mkdir inchi
cp $GITHUB_WORKSPACE/InChI_1_06/INCHI-1-SRC/INCHI_WEB/inchi-web106.* inchi
mkdir rinchi
cp $GITHUB_WORKSPACE/RInChI/src/rinchi_lib/librinchi-100.* rinchi
mkdir ketcher
cp -R $GITHUB_WORKSPACE/InChI-Web-Demo/ketcher/react-app/build/* ketcher
cp -R $GITHUB_WORKSPACE/bootstrap .
cp -R $GITHUB_WORKSPACE/bootstrap-icons .
- name: Setup Pages
uses: actions/configure-pages@v4
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: ${{github.workspace}}/pages
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v1