-
Notifications
You must be signed in to change notification settings - Fork 9
117 lines (105 loc) · 3.8 KB
/
🌱-deploy-site.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
# This is a basic workflow to help you get started with Actions
name: 🌱 Deploy site
# Controls when the action will run. Triggers the workflow on push or pull request
# events but only for the main branch
on:
workflow_dispatch:
push:
branches:
- main
# 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:
# 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:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v2
# - name: npm cache directory
# id: npm-cache-directory
# run: echo "::set-output name=dir::$(npm config get cache)"
# - name: Cache npm
# uses: actions/cache@v2
# with:
# path: ${{ steps.npm-cache-directory.outputs.dir }}
# key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }}
# restore-keys: |
# ${{ runner.os }}-npm-
# - name: Cache node_modules
# uses: actions/cache@v2
# with:
# path: node_modules
# key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }}
# restore-keys: |
# ${{ runner.os }}-npm-
# - name: Cache gatsby cache directory
# uses: actions/cache@v2
# with:
# path: .cache
# key: ${{ runner.os }}-gatsby-cache-directory
# restore-keys: |
# ${{ runner.os }}-cache-directory
# - uses: dorny/paths-filter@v2.2.0
# id: filter
# with:
# # inline YAML or path to separate file (e.g.: .github/filters.yaml)
# filters: |
# npm:
# - 'package*.json'
# - name: Cache gatsby public directory
# uses: actions/cache@v2
# with:
# path: public/
# key: ${{ runner.os }}-gatsby-public-directory
# restore-keys: |
# ${{ runner.os }}-public-director
- name: Set up Python 3.8
uses: actions/setup-python@v1
with:
python-version: 3.8
- name: install python deps
run: pip install python-frontmatter pillow python-twitter markdown beautifulsoup4 pytz pymdownx
# - name: fill missing covers
# run: |
# cd .github/scripts
# python missing-covers.py
# git status # show changes afterwards
- name: Use Node.js 14.x
uses: actions/setup-node@v1
with:
node-version: 14.x
registry-url: https://npm.pkg.github.com/
scope: "@ownername"
# - uses: bahmutov/npm-install@v1
- name: install npm
# if: steps.filter.outputs.npm == 'true'
run: npm install --production
- name: flatten
run: |
mv src/pages/blog/* src/pages/
mv src/pages/notes/* src/pages/
- name: 🔨 gatsby build
run: |
cd .github/scripts
python missing-covers.py
python data.py --create-indexes
python data.py --create-json > ../../static/posts.json
cp -r archive ../../static/
npm run build
env:
GATSBY_EXPERIMENTAL_PAGE_BUILD_ON_DATA_CHANGES: true
NODE_ENV: production
ENVIRONMENT: ${{ contains(github.ref, 'master') && 'production' || 'staging'}}
- name: expose raw markdown in public
# I use this to easily cross post articles
run: |
cp -r src/pages/*.md public/
- name: Deploy to gh-pages
uses: crazy-max/ghaction-github-pages@v1.3.0
with:
target_branch: gh-pages
build_dir: public
env:
GITHUB_PAT: ${{ secrets.GITHUB_PAT }}