summaryrefslogtreecommitdiff
path: root/.github/workflows/main.yml
blob: ed3855469c09acc22120e06d5a1086dc447e5739 (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
# This is a basic workflow to help you get started with Actions

name: CI

# Controls when the action will run.
# We run this workflow on pushes and also every night to pick up fresh nightly builds
on:
  push:
    branches:
      - main
      - production
  schedule:
    - cron: "0 3 * * *"
  workflow_dispatch:
  workflow_call:
    inputs:
      branch:
        required: true
        type: string
    secrets:
      NETLIFY_TOKEN:
        required: true
      GH_ACCESS_TOKEN:
        required: true

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  # This workflow contains a single job called "build"
  build:
    environment:
      name: ${{ github.ref_name }}

    # The type of runner that the job will run on
    runs-on: ubuntu-latest

    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:
    # If the workflow is called from this repo, check out the branch it's called from
    - uses: actions/checkout@v4
      if: ${{ inputs.branch == '' }}
      with:
        repository: vyos/community.vyos.net
        ref: ${{ github.ref_name }}

    # If the workflow is called externally, check out the branch from its inputs
    - uses: actions/checkout@v3
      if: ${{ inputs.branch != '' }}
      with:
        repository: vyos/community.vyos.net
        ref: ${{ inputs.branch }}

    - name: Install build dependencies from the repos
      run: |
        echo Installing build dependencies
        sudo apt-get update
        sudo apt-get -y install cmark make npm
        sudo npm install -g sass@1.32.8
        # PyGitHub changes its API recently, distros use older versions,
        # so we install it from PyPI for now
        python -m venv .
        source ./bin/activate
        pip install pygithub jinja2

    - name: Install soupault
      env:
        SOUPAULT_VERSION: 4.7.0
      run: |
        echo Downloading and unpacking soupault
        wget https://github.com/PataphysicalSociety/soupault/releases/download/$SOUPAULT_VERSION/soupault-$SOUPAULT_VERSION-linux-x86_64.tar.gz
        tar xvf soupault-$SOUPAULT_VERSION-linux-x86_64.tar.gz
        sudo mv -v ./soupault-$SOUPAULT_VERSION-linux-x86_64/soupault /usr/bin/

    - name: Build the site
      env:
        GH_ACCESS_TOKEN: ${{ secrets.GH_ACCESS_TOKEN }}
        # SOUPAULT_PROFILE is "staging" for the main branch,
        # it enabled a preview version warning.
        # The "live" profile simply enabled listing nightly builds
        SOUPAULT_OPTS: "--profile ${{ vars.SOUPAULT_PROFILE }} --profile live"
      run: |
        source ./bin/activate
        make all

    - name: Deploy to Netlify
      env:
        NETLIFY_TOKEN: ${{ secrets.NETLIFY_TOKEN }}
      run: |
        zip -r website.zip build/
        curl --show-error --fail -H "Content-Type: application/zip" -H "Authorization: Bearer $NETLIFY_TOKEN" --data-binary "@website.zip" https://api.netlify.com/api/v1/sites/${{vars.NETLIFY_SITE_NAME}}/deploys