aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows/build.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/build.yml')
-rw-r--r--.github/workflows/build.yml139
1 files changed, 139 insertions, 0 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
new file mode 100644
index 0000000..532c1f7
--- /dev/null
+++ b/.github/workflows/build.yml
@@ -0,0 +1,139 @@
1name: Build
2on: pull_request
3
4jobs:
5 build-viewer:
6 runs-on: ubuntu-20.04
7 steps:
8 - uses: actions/checkout@v2
9 - uses: actions/setup-node@v1
10 with:
11 # Latest version officially tested for Vue
12 node-version: 12.16.1
13 - name: Lint and build Node.js Vue project
14 working-directory: viewer
15 run: |
16 npm install
17 npm run lint
18 npm run build
19 - uses: actions/upload-artifact@v2
20 with:
21 name: viewer-dist
22 path: viewer/dist
23
24 # TODO: do not hard-code the CI install path in the output binary
25 # See https://github.com/ldgallery/ldgallery/issues/286
26 build-compiler:
27 strategy:
28 fail-fast: false
29 matrix:
30 os: [ ubuntu-20.04, windows-2019 ]
31 runs-on: ${{ matrix.os }}
32 steps:
33 - uses: actions/checkout@v2
34 - uses: actions/cache@v2
35 with:
36 path: ~/.stack
37 key: compiler-${{ runner.os }}-${{ hashFiles('compiler/stack.yaml') }}
38 - uses: haskell/actions/setup@v1
39 with:
40 ghc-version: 8.10.4
41 enable-stack: true
42 - name: Build Haskell Stack project
43 working-directory: compiler
44 shell: bash
45 run: |
46 STACK_ROOT=~/.stack # make it the same on all platforms
47 stack setup --no-terminal
48 stack build --no-terminal
49 stack install --local-bin-path dist
50 - uses: actions/upload-artifact@v2
51 with:
52 name: compiler-dist-${{ matrix.os }}
53 path: compiler/dist
54
55 # TODO: generate a distro-agnostic Linux package.
56 # See https://github.com/ldgallery/ldgallery/issues/285
57 archive-linux:
58 needs: [ build-viewer, build-compiler ]
59 runs-on: ubuntu-20.04
60 steps:
61 - uses: actions/checkout@v2
62 - name: Bundle ldgallery viewer
63 uses: actions/download-artifact@v2
64 with:
65 name: viewer-dist
66 path: dist/viewer
67 - name: Bundle ldgallery compiler
68 uses: actions/download-artifact@v2
69 with:
70 name: compiler-dist-ubuntu-20.04
71 path: dist
72 - name: Install build dependencies
73 run: |
74 sudo apt-get update -qq
75 sudo apt-get install -y pandoc
76 - name: Build manuals
77 run: |
78 pandoc --standalone --to man ldgallery-quickstart.7.md --output dist/ldgallery-quickstart.7
79 pandoc --standalone --to man compiler/ldgallery.1.md --output dist/ldgallery.1
80 pandoc --standalone --to man viewer/ldgallery-viewer.7.md --output dist/ldgallery-viewer.7
81 cp changelog.md dist/
82 cp license.md dist/
83 - uses: actions/upload-artifact@v2
84 with:
85 name: archive-linux-amd64
86 path: dist
87
88 archive-windows:
89 needs: [ build-viewer, build-compiler ]
90 runs-on: ubuntu-20.04
91 steps:
92 - uses: actions/checkout@v2
93 - uses: actions/cache@v2
94 with:
95 path: ~/downloads
96 key: archive-windows-vendored
97 - name: Bundle ldgallery viewer
98 uses: actions/download-artifact@v2
99 with:
100 name: viewer-dist
101 path: dist/viewer
102 - name: Bundle ldgallery compiler
103 uses: actions/download-artifact@v2
104 with:
105 name: compiler-dist-windows-2019
106 path: dist
107 - name: Install build dependencies
108 run: |
109 sudo apt-get update -qq
110 sudo apt-get install -y pandoc wget curl html-xml-utils p7zip-full
111 - name: Copy scripts
112 run: |
113 mkdir dist/scripts
114 cp scripts/win_* dist/scripts/
115 - name: Build manuals
116 run: |
117 pandoc --standalone --to html ldgallery-quickstart.7.md --output dist/ldgallery-quickstart.7.html
118 pandoc --standalone --to html compiler/ldgallery.1.md --output dist/ldgallery.1.html
119 pandoc --standalone --to html viewer/ldgallery-viewer.7.md --output dist/ldgallery-viewer.7.html
120 pandoc --standalone --to html changelog.md --output dist/changelog.html
121 pandoc --standalone --to html license.md --output dist/license.html
122 - name: Bundle ImageMagick
123 run: |
124 MAGICK_ARCHIVES="https://download.imagemagick.org/ImageMagick/download/binaries/"
125 MAGICK_LATEST=$( \
126 curl --silent "$MAGICK_ARCHIVES" \
127 | hxclean \
128 | hxselect 'a::attr(href)' -c -s '\n' \
129 | grep -m1 '^ImageMagick-7.*portable-Q16-HDRI-x64.zip$' )
130 mkdir -p ~/downloads
131 wget --timestamping --directory-prefix ~/downloads "$MAGICK_ARCHIVES/$MAGICK_LATEST"
132 7z e ~/downloads/"$MAGICK_LATEST" -odist/ magick.exe
133 7z e ~/downloads/"$MAGICK_LATEST" -so LICENSE.txt > dist/magick.license.txt
134 7z e ~/downloads/"$MAGICK_LATEST" -so NOTICE.txt > dist/magick.notice.txt
135 7z e ~/downloads/"$MAGICK_LATEST" -so README.txt > dist/magick.readme.txt
136 - uses: actions/upload-artifact@v2
137 with:
138 name: archive-win64
139 path: dist