summaryrefslogtreecommitdiffhomepage
path: root/.github/workflows/installer.yml
blob: 48b29c6ec02cd6c63921158a5aee60474f7c2449 (plain)
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
name: test installer.sh

on:
  push:
    branches:
      - "main"
    paths:
      - scripts/installer.sh
  pull_request:
    branches:
      - "*"
    paths:
      - scripts/installer.sh

jobs:
  test:
    strategy:
      # Don't abort the entire matrix if one element fails.
      fail-fast: false
      # Don't start all of these at once, which could saturate Github workers.
      max-parallel: 4
      matrix:
        image:
          # This is a list of Docker images against which we test our installer.
          # If you find that some of these no longer exist, please feel free
          # to remove them from the list.
          # When adding new images, please only use official ones.
          - "debian:oldstable-slim"
          - "debian:stable-slim"
          - "debian:testing-slim"
          - "debian:sid-slim"
          - "ubuntu:18.04"
          - "ubuntu:20.04"
          - "ubuntu:22.04"
          - "ubuntu:23.04"
          - "elementary/docker:stable"
          - "elementary/docker:unstable"
          - "parrotsec/core:lts-amd64"
          - "parrotsec/core:latest"
          - "kalilinux/kali-rolling"
          - "kalilinux/kali-dev"
          - "oraclelinux:9"
          - "oraclelinux:8"
          - "fedora:latest"
          - "rockylinux:8.7"
          - "rockylinux:9"
          - "amazonlinux:latest"
          - "opensuse/leap:latest"
          - "opensuse/tumbleweed:latest"
          - "archlinux:latest"
          - "alpine:3.14"
          - "alpine:latest"
          - "alpine:edge"
        deps:
          # Run all images installing curl as a dependency.
          - curl
        include:
          # Check a few images with wget rather than curl.
          - { image: "debian:oldstable-slim", deps: "wget" }
          - { image: "debian:sid-slim", deps: "wget" }
          - { image: "ubuntu:23.04", deps: "wget" }
          # Ubuntu 16.04 also needs apt-transport-https installed.
          - { image: "ubuntu:16.04", deps: "curl apt-transport-https" }
          - { image: "ubuntu:16.04", deps: "wget apt-transport-https" }
    runs-on: ubuntu-latest
    container:
      image: ${{ matrix.image }}
      options: --user root
    steps:
    - name: install dependencies (pacman)
      # Refresh the package databases to ensure that the tailscale package is
      # defined.
      run: pacman -Sy
      if: contains(matrix.image, 'archlinux')
    - name: install dependencies (yum)
      # tar and gzip are needed by the actions/checkout below.
      run: yum install -y --allowerasing tar gzip ${{ matrix.deps }}
      if: |
        contains(matrix.image, 'centos')
        || contains(matrix.image, 'oraclelinux')
        || contains(matrix.image, 'fedora')
        || contains(matrix.image, 'amazonlinux')
    - name: install dependencies (zypper)
      # tar and gzip are needed by the actions/checkout below.
      run: zypper --non-interactive install tar gzip ${{ matrix.deps }}
      if: contains(matrix.image, 'opensuse')
    - name: install dependencies (apt-get)
      run: |
        apt-get update
        apt-get install -y ${{ matrix.deps }}
      if: |
        contains(matrix.image, 'debian')
        || contains(matrix.image, 'ubuntu')
        || contains(matrix.image, 'elementary')
        || contains(matrix.image, 'parrotsec')
        || contains(matrix.image, 'kalilinux')
    - name: checkout
      # We cannot use v4, as it requires a newer glibc version than some of the
      # tested images provide. See
      # https://github.com/actions/checkout/issues/1487
      uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0
    - name: run installer
      run: scripts/installer.sh
      # Package installation can fail in docker because systemd is not running
      # as PID 1, so ignore errors at this step. The real check is the
      # `tailscale --version` command below.
      continue-on-error: true
    - name: check tailscale version
      run: tailscale --version