aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpacien2021-06-28 19:07:23 +0200
committerpacien2021-06-28 20:12:22 +0200
commit01fc05f04f3b043fe863f29dad953a2ca1f80fcd (patch)
tree4eacdfd9147cc16c74325be7a5206289c39c9a82
parent153615a69e463ebb859cded5cfe8fb27acd6e722 (diff)
downloadldgallery-01fc05f04f3b043fe863f29dad953a2ca1f80fcd.tar.gz
ci: configure GitHub Actions
This configures GitHub Actions for building the viewer and compiler components and produce archive bundles for Linux and Windows. Those are uploaded as build artifacts instead of automatically being attached to releases like before with Travis CI. This allows manually checking the archives when doing new releases.
-rw-r--r--.github/workflows/build.yml124
1 files changed, 124 insertions, 0 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
new file mode 100644
index 0000000..aef142b
--- /dev/null
+++ b/.github/workflows/build.yml
@@ -0,0 +1,124 @@
1name: Build
2on: pull_request
3
4jobs:
5 build-viewer:
6 runs-on: ubuntu-latest
7 steps:
8 - uses: actions/checkout@v2
9 - uses: actions/setup-node@v1
10 with:
11 node-version: 12.x
12 - name: Lint and build Node.js Vue project
13 working-directory: viewer
14 run: |
15 npm install
16 npm run lint
17 npm run build
18 - uses: actions/upload-artifact@v2
19 with:
20 name: viewer-dist
21 path: viewer/dist
22
23 # TODO: do not hard-code the CI install path in the output binary
24 # See https://github.com/ldgallery/ldgallery/issues/286
25 build-compiler:
26 strategy:
27 fail-fast: false
28 matrix:
29 os: [ ubuntu-latest, windows-latest ]
30 runs-on: ${{ matrix.os }}
31 steps:
32 - uses: actions/checkout@v2
33 - uses: haskell/actions/setup@v1
34 with:
35 ghc-version: 8.10.4
36 enable-stack: true
37 - name: Build Haskell Stack project
38 working-directory: compiler
39 run: |
40 stack setup --no-terminal
41 stack build --no-terminal
42 stack install --local-bin-path dist
43 - uses: actions/upload-artifact@v2
44 with:
45 name: compiler-dist-${{ matrix.os }}
46 path: compiler/dist
47
48 # TODO: generate a distro-agnostic Linux package.
49 # See https://github.com/ldgallery/ldgallery/issues/285
50 archive-linux:
51 needs: [ build-viewer, build-compiler ]
52 runs-on: ubuntu-latest
53 steps:
54 - uses: actions/checkout@v2
55 - name: Bundle ldgallery viewer
56 uses: actions/download-artifact@v2
57 with:
58 name: viewer-dist
59 path: dist/viewer
60 - name: Bundle ldgallery compiler
61 uses: actions/download-artifact@v2
62 with:
63 name: compiler-dist-ubuntu-latest
64 path: dist
65 - name: Install build dependencies
66 run: |
67 sudo apt-get update -qq
68 sudo apt-get install -y pandoc
69 - name: Build manuals
70 run: |
71 pandoc --standalone --to man ldgallery-quickstart.7.md --output dist/ldgallery-quickstart.7
72 pandoc --standalone --to man compiler/ldgallery.1.md --output dist/ldgallery.1
73 pandoc --standalone --to man viewer/ldgallery-viewer.7.md --output dist/ldgallery-viewer.7
74 cp changelog.md dist/
75 cp license.md dist/
76 - uses: actions/upload-artifact@v2
77 with:
78 name: archive-linux-amd64
79 path: dist
80
81 archive-windows:
82 needs: [ build-viewer, build-compiler ]
83 runs-on: ubuntu-latest
84 steps:
85 - uses: actions/checkout@v2
86 - name: Bundle ldgallery viewer
87 uses: actions/download-artifact@v2
88 with:
89 name: viewer-dist
90 path: dist/viewer
91 - name: Bundle ldgallery compiler
92 uses: actions/download-artifact@v2
93 with:
94 name: compiler-dist-windows-latest
95 path: dist
96 - name: Install build dependencies
97 run: |
98 sudo apt-get update -qq
99 sudo apt-get install -y pandoc wget p7zip-full
100 - name: Copy scripts
101 run: |
102 mkdir dist/scripts
103 cp scripts/win_* dist/scripts/
104 - name: Build manuals
105 run: |
106 pandoc --standalone --to html ldgallery-quickstart.7.md --output dist/ldgallery-quickstart.7.html
107 pandoc --standalone --to html compiler/ldgallery.1.md --output dist/ldgallery.1.html
108 pandoc --standalone --to html viewer/ldgallery-viewer.7.md --output dist/ldgallery-viewer.7.html
109 pandoc --standalone --to html changelog.md --output dist/changelog.html
110 pandoc --standalone --to html license.md --output dist/license.html
111 # TODO: automatically get the latest imagemagick version, since old archives disappear from the website
112 # See https://github.com/ldgallery/ldgallery/issues/281
113 - name: Bundle ImageMagick
114 run: |
115 wget -O magick.zip \
116 https://download.imagemagick.org/ImageMagick/download/binaries/ImageMagick-7.1.0-2-portable-Q16-x64.zip
117 7z e magick.zip -odist/ magick.exe
118 7z e magick.zip -so LICENSE.txt > dist/magick.license.txt
119 7z e magick.zip -so NOTICE.txt > dist/magick.notice.txt
120 7z e magick.zip -so README.txt > dist/magick.readme.txt
121 - uses: actions/upload-artifact@v2
122 with:
123 name: archive-win64
124 path: dist