-
Notifications
You must be signed in to change notification settings - Fork 359
112 lines (96 loc) · 3.31 KB
/
docker.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
#
# Build GMT on different Linux distros, using dockers
#
name: Docker
on:
# pull_request:
push:
branches:
- master
- 6.[0-9]+
defaults:
run:
# default to use bash shell
shell: bash
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/master' }}
jobs:
docker:
name: ${{ matrix.image }}
runs-on: ubuntu-latest
container:
image: ${{ matrix.image }}
env:
# directories
COASTLINEDIR: ${{ github.workspace }}/coastline
INSTALLDIR: ${{ github.workspace }}/gmt-install-dir
# disable auto-display of GMT plots
GMT_END_SHOW: off
# Compile only
BUILD_DOCS : false
PACKAGE : false
RUN_TESTS : false
strategy:
fail-fast: false
matrix:
image:
- ubuntu:14.04 # CMake 2.8.12 + GNU 4.8.4; EOL: 2024-04-25
- ubuntu:16.04 # CMake 3.5.1 + GNU 5.4.0; EOL: 2026-04-23
- ubuntu:18.04 # CMake 3.10.2 + GNU 7.4.0; EOL: 2028-04-26
- ubuntu:20.04 # CMake 3.16.3 + GNU 9.3.0; EOL: 2030-04-23
- ubuntu:22.04 # CMake 3.22.1 + GNU 11.2.0; EOL: 2032-04-21
- ubuntu:23.04 # CMake 3.24.1 + GNU 12.2.0; EOL: 2024-01-20
- debian:10 # CMake 3.13.4 + GNU 8.3.0; EOL: 2024-06-01
- debian:11 # CMake 3.18.4 + GNU 10.2.1; EOL: 2026-06-01
- debian:12 # CMake 3.25.1 + GNU 12.2.0; EOL: 2028-06-01
- debian:sid # rolling release with latest versions
steps:
- name: Checkout
uses: actions/checkout@v3.5.3
- name: Install GMT dependencies
run: |
apt-get update
# tzdata is required for Ubuntu>=20.04
DEBIAN_FRONTEND="noninteractive" TZ="America/New_York" apt-get install -y tzdata
apt-get install -y --no-install-recommends --no-install-suggests \
build-essential cmake ninja-build libcurl4-gnutls-dev libnetcdf-dev \
ghostscript curl git \
libgdal-dev libfftw3-dev libpcre3-dev liblapack-dev libglib2.0-dev
- name: Cache GSHHG and DCW data
uses: actions/cache@v3
id: cache-coastline
with:
path: ${{ env.COASTLINEDIR }}
key: coastline-${{ hashFiles('ci/download-coastlines.sh') }}
- name: Download coastlines
run: bash ci/download-coastlines.sh
if: steps.cache-coastline.outputs.cache-hit != 'true'
- name: Configure GMT
run: bash ci/config-gmt-unix.sh
- name: Compile GMT
run: |
mkdir build
cd build
cmake -G Ninja ..
cmake --build .
- name: Download cached GMT remote data from GitHub Artifacts
uses: dawidd6/action-download-artifact@v2.27.0
with:
workflow: ci-caches.yml
name: gmt-cache
path: .gmt
# Move downloaded files to ~/.gmt directory and list them
- name: Move and list downloaded remote files
run: |
mkdir -p ~/.gmt
mv .gmt/* ~/.gmt
ls -lRh ~/.gmt
- name: Install GMT
run: |
cd build
cmake --build . --target install
# Add GMT PATH to bin
echo "${INSTALLDIR}/bin" >> $GITHUB_PATH
- name: Check a few simple commands
run: bash ci/simple-gmt-tests.sh