-
Notifications
You must be signed in to change notification settings - Fork 2
99 lines (86 loc) · 3.22 KB
/
docker.yaml
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
#
# GitHub actions for building and testing.
#
# For best support, use `-latest` for runners spinning up containers. More at
# https://help.github.com/en/actions/reference/virtual-environments-for-github-hosted-runners.
name: Docker
on:
push:
branches: [ master ]
pull_request:
concurrency:
group: docker-${{ github.ref }}
cancel-in-progress: true
# Using a job name that doesn't contain the OS name, to minimize the risk of
# confusion with the OS names of the containers, which are the relevant ones.
jobs:
linux:
runs-on: ubuntu-latest
container: ${{ matrix.container }}
strategy:
fail-fast: false
matrix:
# Alpine 3.12 has musl 1.1.24, Amazon 2 has glibc 2.26.
container: [ 'alpine:3.12', 'amazonlinux:2' ]
timeout-minutes: 60
steps:
# OpenSSL gets updated by apk, but that is the Alpine way, so it's fine.
- name: Alpine setup
if: startsWith(matrix.container, 'alpine')
run: |
apk upgrade -U
apk add git curl bash gcc make m4 patch musl-dev linux-headers lddtree shadow openssh-client file unzip perl g++ musl-locales dejagnu
apk del util-linux-dev
curl --output /usr/local/bin/paxctl https://bin.chevah.com:20443/third-party-stuff/alpine/paxctl-3.12
chmod +x /usr/local/bin/paxctl
- name: Amazon setup
if: startsWith(matrix.container, 'amazonlinux')
run: |
yum -y upgrade
yum -y install git-core gcc make m4 patch tar unzip perl perl-Test-Simple perl-IPC-Cmd xz gcc-c++ dejagnu
# To avoid linking against libdb and gdmb libraries on Amazon Linux 2.
# Can't simply uninstall libdb-devel and gdmb-devel, they are required by perl-IPC-Cmd.
rm /usr/include/libdb/db.h
rm /usr/include/gdbm.h
- name: Ubuntu setup
if: startsWith(matrix.container, 'ubuntu')
run: |
apt update
apt --yes dist-upgrade
apt --yes install wget curl gcc make m4 patch openssh-client unzip git libtest-simple-perl xz-utils g++ dejagnu
- name: Clone repo independently
run: |
git clone https://github.com/chevah/pythia.git
cd pythia
git checkout ${GITHUB_HEAD_REF}
- name: Build Pythia
timeout-minutes: 30
run: |
cd pythia
./build.sh build
- name: Test Pythia
timeout-minutes: 5
run: |
cd pythia
./build.sh test
# Using `~/` is problematic under Docker, use `/root/`.
# Remove key in same step to avoid leaving it on disk if publishing fails.
- name: Upload testing package
timeout-minutes: 5
run: |
mkdir -pv /root/.ssh/
cd pythia
touch priv_key
chmod 600 priv_key
echo "${{ secrets.SFTPPLUS_BIN_PRIV_KEY }}" > priv_key
echo "${{ secrets.SFTPPLUS_BIN_HOST_KEY }}" > /root/.ssh/known_hosts
./publish_dist.sh ; rm priv_key
# If one of the above steps fails, fire up tmate for remote debugging.
# Not all platforms are supported by tmate.
# Currently not supported: Alpine, Amazon 2, CentOS 5 (no glibc or too old).
- name: Tmate debug on failure
if: ${{ !cancelled() && runner.debug }}
uses: chevah/action-tmate@v3
with:
sudo: false
limit-access-to-actor: true