summaryrefslogtreecommitdiffstats
path: root/.github/actions/bootstrap/action.yaml
blob: df71a17ced0b75e31fec933f1c208787c709df3f (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
name: "Bootstrap"
description: "Bootstrap all tools and dependencies"
inputs:
  go-version:
    description: "Go version to install"
    required: true
    default: "1.20.x"
  use-go-cache:
    description: "Restore go cache"
    required: true
    default: "true"
  cache-key-prefix:
    description: "Prefix all cache keys with this value"
    required: true
    default: "efa04b89c1b1"
  build-cache-key-prefix:
    description: "Prefix build cache key with this value"
    required: true
    default: "f8b6d31dea"
  bootstrap-apt-packages:
    description: "Space delimited list of tools to install via apt"
    default: ""

runs:
  using: "composite"
  steps:
    - uses: actions/setup-go@v3
      with:
        go-version: ${{ inputs.go-version }}

    - name: Restore tool cache
      id: tool-cache
      uses: actions/cache@v3
      with:
        path: ${{ github.workspace }}/.tmp
        key: ${{ inputs.cache-key-prefix }}-${{ runner.os }}-tool-${{ hashFiles('Makefile') }}

    # note: we need to keep restoring the go mod cache before bootstrapping tools since `go install` is used in
    # some installations of project tools.
    - name: Restore go module cache
      id: go-mod-cache
      if: inputs.use-go-cache == 'true'
      uses: actions/cache@v3
      with:
        path: |
          ~/go/pkg/mod
        key: ${{ inputs.cache-key-prefix }}-${{ runner.os }}-go-${{ inputs.go-version }}-${{ hashFiles('**/go.sum') }}
        restore-keys: |
          ${{ inputs.cache-key-prefix }}-${{ runner.os }}-go-${{ inputs.go-version }}-

    - name: (cache-miss) Bootstrap project tools
      shell: bash
      if: steps.tool-cache.outputs.cache-hit != 'true'
      run: make bootstrap-tools

    - name: Restore go build cache
      id: go-cache
      if: inputs.use-go-cache == 'true'
      uses: actions/cache@v3
      with:
        path: |
          ~/.cache/go-build
        key: ${{ inputs.cache-key-prefix }}-${{ inputs.build-cache-key-prefix }}-${{ runner.os }}-go-${{ inputs.go-version }}-${{ hashFiles('**/go.sum') }}
        restore-keys: |
          ${{ inputs.cache-key-prefix }}-${{ inputs.build-cache-key-prefix }}-${{ runner.os }}-go-${{ inputs.go-version }}-

    - name: (cache-miss) Bootstrap go dependencies
      shell: bash
      if: steps.go-mod-cache.outputs.cache-hit != 'true' && inputs.use-go-cache == 'true'
      run: make bootstrap-go

    - name: Install apt packages
      if: inputs.bootstrap-apt-packages != ''
      shell: bash
      run: |
        DEBIAN_FRONTEND=noninteractive sudo apt update && sudo -E apt install -y ${{ inputs.bootstrap-apt-packages }}