-
Notifications
You must be signed in to change notification settings - Fork 5
139 lines (136 loc) · 4.35 KB
/
deploy.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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
# This is the name of our workflow.
# Github will show it on its Website UI
name: deploy
# This configures our workflow to be triggered
# only when we push to the master branch
on:
push:
branches:
- master
pull_request:
types: [opened, synchronize, reopened, closed]
branches:
- master
workflow_dispatch:
env:
RUBY_VERSION: "3.3.2"
BUNDLER_VERSION: "2.5.11"
# Here is where we define our jobs.
# Which means the tasks we want Github to execute
jobs:
build:
name: build
# Here we specify in whith OS we want it to run
runs-on: ubuntu-latest
# Now we define which actions will take place.
# One after another
steps:
# This is the first action. It will make sure that we have
# all the necessary files from our repo, including our custom actions
# This action here is actually from a remote repo available from Githup itself
- name: 🛎 Checkout master
uses: actions/checkout@v2
with:
fetch-depth: 1
- name: ⚡️ Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends bats build-essential ca-certificates curl make shellcheck libgsl-dev libffi-dev minify liblapacke-dev libopenblas-dev
sudo gem update
sudo gem install bundler:${{ env.BUNDLER_VERSION }}
- name: Setup Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ env.RUBY_VERSION }} # Not needed with a .ruby-version file
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
- name: ⚡️ Cache node modules
uses: actions/cache@v3
env:
cache-name: cache-node-modules
with:
# npm cache files are stored in `~/.npm` on Linux/macOS
path: ~/.npm
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
- name: ⚡️ Setting up dependencies
continue-on-error: true
run: |
npm install
- name: Checking Jekyll configuration
run: bundle exec jekyll doctor
- name: 🔨 Build site
run: |
bundle exec jekyll build --lsi --profile
env:
JEKYLL_ENV: production
- name: Optimize
run: |
minify -r -o _site/ --html-keep-document-tags --html-keep-end-tags --html-keep-default-attrvals --html-keep-whitespace --verbose _site
- name: Cache jekyll
uses: actions/cache@v3
with:
path: "_site/"
key: ${{ runner.os }}-${{ github.sha }}
# npm run build:js
# - name: 🔨 Test calculations JS
# run: |
# npm run test
deploy:
if: github.event_name == 'push'
name: deploy
needs: build
runs-on: ubuntu-latest
steps:
- name: Use cache
uses: actions/cache@v3
with:
path: "_site/"
key: ${{ runner.os }}-${{ github.sha }}
- name: 🎉 Deploy to GitHub Pages 🎊
if: success()
uses: crazy-max/ghaction-github-pages@v2
with:
target_branch: gh-pages
build_dir: _site
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
test:
needs: build
runs-on: ubuntu-latest
steps:
- name: Use cache
uses: actions/cache@v3
with:
path: "_site/"
key: ${{ runner.os }}-${{ github.sha }}
- name: ⚡️ Cache HTMLProofer
id: cache-htmlproofer
uses: actions/cache@v2
with:
path: tmp/.htmlproofer
key: ${{ runner.os }}-htmlproofer
- name: 📉 Check HTML
uses: chabad360/htmlproofer@master
with:
directory: "./_site"
# The directory to scan
arguments: |
--only-4xx
--ignore-status-codes "400,403,409,429"
--ignore-empty-alt
--allow-hash-href
--ignore-urls "/bjsm.bmj.com/, /mademistakes.com/"
clean:
needs: [build,deploy,test]
runs-on: ubuntu-latest
steps:
- name: Use cache
uses: actions/cache@v3
with:
path: "_site/"
key: ${{ runner.os }}-${{ github.sha }}
- name: ☁️ Cleaning up
run: bundle exec jekyll clean