-
Notifications
You must be signed in to change notification settings - Fork 16
117 lines (106 loc) · 3.64 KB
/
build.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
name: build
on:
push:
branches: ['*']
pull_request:
branches: ['*']
jobs:
build:
runs-on: ubuntu-latest
env:
LSI: 'true'
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: ruby/setup-ruby@v1
with:
ruby-version: '3.0'
- uses: actions/setup-node@v4
with:
node-version: 16
- name: Cache Ruby gems
uses: actions/cache@v4
env:
CACHE_ID: 1
with:
path: |
Gemfile.lock
vendor/bundle
key: ${{ runner.os }}-bundler-${{ env.CACHE_ID }}-${{ hashFiles('Gemfile') }}
restore-keys: |
${{ runner.os }}-bundler-${{ env.CACHE_ID }}-
- name: Cache Node modules
uses: actions/cache@v4
env:
CACHE_ID: 1
with:
path: ~/.npm
key: ${{ runner.os }}-npm-${{ env.CACHE_ID }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-npm-${{ env.CACHE_ID }}-
- name: Install dependencies
run: |
bundle config set --local path vendor/bundle
bundle install --jobs=4 --retry=3
bundle clean
npm install --include=dev
- name: Prettier check
id: prettier
run: npm run check
- name: Prettier fix
if: "failure() && steps.prettier.outcome == 'failure'"
run: npm run fix
- name: Submit PR for prettier fix
if: "failure() && steps.prettier.outcome == 'failure' && github.ref == 'refs/heads/master'"
uses: peter-evans/create-pull-request@v6
with:
commit-message: 'Prettier auto fix from GitHub Actions run ${{ github.run_number }}'
assignees: '${{ github.actor }}'
branch: prettier-auto-fix
delete-branch: true
title: 'Fix Prettier formatting from GitHub Actions run ${{ github.run_number }}'
body: |
Attempt to automatically fix Prettier formatting issues in ${{ github.sha }}.
This PR is generated by GitHub Actions [run ${{ github.run_number }}](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}). Please choose **Squash and Merge** for this PR.
- name: Prepare build
if: github.ref == 'refs/heads/master'
run: |
git clone --depth=1 --branch=gh-pages --single-branch --no-checkout \
"https://${GITHUB_ACTOR}:${{ secrets.GITHUB_TOKEN }}@github.com/${GITHUB_REPOSITORY}.git" \
_site
- name: Run Jekyll Doctor
run: |
bundle exec jekyll doctor --trace --profile
env:
JEKYLL_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Build site
run: |
bundle exec jekyll build --trace --profile
: > _site/.nojekyll
env:
JEKYLL_ENV: production
JEKYLL_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Deploy to GitHub Pages
if: github.ref == 'refs/heads/master'
run: |
CINFO="$(git log -1 --pretty="%an: [%h] %s")"
pushd _site/ &>/dev/null
echo -n lug.ustc.edu.cn > CNAME
git add -A
git -c user.name=GitHub -c [email protected] commit \
-m "Auto deploy from GitHub Actions build ${GITHUB_RUN_NUMBER}" \
-m "$CINFO"
git push
popd &>/dev/null
- name: Update Algolia index
run: bundle exec jekyll algolia push
env:
ALGOLIA_API_KEY: ${{ secrets.ALGOLIA_API_KEY }}
JEKYLL_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
continue-on-error: true
- name: Call webhook
if: "github.repository == 'ustclug/website' && github.ref == 'refs/heads/master'"
env:
WEBHOOK_SECRET: ${{ secrets.WEBHOOK_SECRET }}
run: ruby _scripts/webhook.rb