Skip to content

Commit

Permalink
cache python
Browse files Browse the repository at this point in the history
  • Loading branch information
sosiristseng committed Feb 3, 2024
1 parent 500b027 commit 2746f41
Show file tree
Hide file tree
Showing 2 changed files with 157 additions and 150 deletions.
197 changes: 102 additions & 95 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,95 +1,102 @@
name: Build notebooks and publish

on:
workflow_dispatch:
push:
branches: [main]
pull_request:
branches: [main]

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

env:
NPROC: '2' # Number of Julia processes to run the notebooks
CACHE_NUM: '1'
PY_VER: '3.12'
JULIA_CONDAPKG_BACKEND: 'Null'
JULIA_CI: 'true'
JULIA_NUM_THREADS: '2'

jobs:
CI:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
id: cp
with:
python-version: ${{ env.PY_VER }}
cache: 'pip'
- name: Install python packages
run: pip install -r requirements.txt
- name: Read Julia version
uses: SebRollen/[email protected]
id: read_toml
with:
file: 'Manifest.toml'
field: 'julia_version'
- name: Setup Julia
uses: julia-actions/setup-julia@v1
with:
version: ${{ steps.read_toml.outputs.value }}
- name: Cache Julia packages
uses: actions/cache@v4
id: cache-julia
with:
save-always: 'true'
path: |
~/.julia
!~/.julia/registries
key: ${{ runner.os }}-julia-${{ env.CACHE_NUM }}-${{ hashFiles('src/**', 'Project.toml', 'Manifest.toml')}}
restore-keys: |
${{ runner.os }}-julia-${{ env.CACHE_NUM }}-
- name: Install Julia packages
if: ${{ steps.cache-julia.outputs.cache-hit != 'true' }}
env:
PYTHON: ${{ env.pythonLocation }}/python
shell: julia --color=yes {0}
run: |
using Pkg, Dates
Pkg.add(["PrettyTables", "Literate"])
Pkg.activate(".")
Pkg.instantiate()
Pkg.precompile()
Pkg.gc(collect_delay=Day(0))
- name: Run program
run: julia --color=yes -p ${{ env.NPROC }} literate.jl
- name: Build website
run: jupyter-book build docs/
- name: Upload page artifact
if: ${{ github.ref == 'refs/heads/main' }}
uses: actions/upload-pages-artifact@v3
with:
path: docs/_build/html

# Deploy pages
deploy:
needs: CI
if: ${{ github.ref == 'refs/heads/main' }}
# Grant GITHUB_TOKEN the permissions required to make a Pages deployment
permissions:
pages: write # to deploy to Pages
id-token: write # to verify the deployment originates from an appropriate source
actions: read # to download an artifact uploaded by `actions/upload-pages-artifact@v3`
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
name: Build notebooks and publish

on:
workflow_dispatch:
push:
branches: [main]
pull_request:
branches: [main]

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

env:
NPROC: '2' # Number of Julia processes to run the notebooks
CACHE_NUM: '1'
PY_VER: '3.12'
JULIA_CONDAPKG_BACKEND: 'Null'
JULIA_CI: 'true'
JULIA_NUM_THREADS: '2'

jobs:
CI:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
id: cp
with:
python-version: ${{ env.PY_VER }}
- name: Cache pip dependencies
uses: actions/cache@v4
id: cache-py
with:
save-always: 'true'
path: ${{ env.pythonLocation }}
key: ${{ runner.os }}-pip-${{ env.CACHE_NUM }}-${{ steps.cp.outputs.python-version }}-${{ hashFiles('requirements.txt') }}
- name: Install pip dependencies if cache miss
if: steps.cache-py.outputs.cache-hit != 'true'
run: pip install -r requirements.txt
- name: Read Julia version
uses: SebRollen/[email protected]
id: read_toml
with:
file: 'Manifest.toml'
field: 'julia_version'
- name: Setup Julia
uses: julia-actions/setup-julia@v1
with:
version: ${{ steps.read_toml.outputs.value }}
- name: Cache Julia packages
uses: actions/cache@v4
id: cache-julia
with:
save-always: 'true'
path: |
~/.julia
!~/.julia/registries
key: ${{ runner.os }}-julia-${{ env.CACHE_NUM }}-${{ hashFiles('src/**', 'Project.toml', 'Manifest.toml')}}
restore-keys: |
${{ runner.os }}-julia-${{ env.CACHE_NUM }}-
- name: Install Julia packages
if: ${{ steps.cache-julia.outputs.cache-hit != 'true' }}
env:
PYTHON: ${{ env.pythonLocation }}/python
shell: julia --color=yes {0}
run: |
using Pkg, Dates
Pkg.add(["PrettyTables", "Literate"])
Pkg.activate(".")
Pkg.instantiate()
Pkg.precompile()
Pkg.gc(collect_delay=Day(0))
- name: Run program
run: julia --color=yes -p ${{ env.NPROC }} literate.jl
- name: Build website
run: jupyter-book build docs/
- name: Upload page artifact
if: ${{ github.ref == 'refs/heads/main' }}
uses: actions/upload-pages-artifact@v3
with:
path: docs/_build/html

# Deploy pages
deploy:
needs: CI
if: ${{ github.ref == 'refs/heads/main' }}
# Grant GITHUB_TOKEN the permissions required to make a Pages deployment
permissions:
pages: write # to deploy to Pages
id-token: write # to verify the deployment originates from an appropriate source
actions: read # to download an artifact uploaded by `actions/upload-pages-artifact@v3`
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
110 changes: 55 additions & 55 deletions .github/workflows/linkcheck.yml
Original file line number Diff line number Diff line change
@@ -1,55 +1,55 @@
name: Check markdown links

on:
workflow_dispatch:
schedule:
- cron: '0 0 1 * *' # Every month
push:
branches:
- main
paths:
- 'docs/**'
- '.lycheeignore'
- '.github/workflows/linkcheck.yml'

env:
DIR: 'docs'

jobs:
linkcheck:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Julia
uses: julia-actions/setup-julia@v1
- name: Convert literate notebooks to markdown files
shell: julia --color=yes {0}
working-directory: ${{ env.DIR }}
run: |
import Pkg
Pkg.add("Literate")
using Literate
for (root, dirs, files) in walkdir(pwd())
for file in files
if endswith(file, ".jl")
Literate.markdown(joinpath(root, file); mdstrings=true, flavor = Literate.CommonMarkFlavor())
end
end
end
- name: Restore lychee cache
id: restore-cache
uses: actions/cache@v4
with:
save-always: 'true'
path: .lycheecache
key: cache-lychee-${{ github.sha }}
restore-keys: cache-lychee-
- name: Lychee Checker
uses: lycheeverse/[email protected]
id: lychee
with:
fail: true
args: '--accept 200,204,429 --verbose --no-progress --cache --max-cache-age 1d ${{ env.DIR }}'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
name: Check markdown links

on:
workflow_dispatch:
schedule:
- cron: '0 0 1 * *' # Every month
push:
branches:
- main
paths:
- 'docs/**'
- '.lycheeignore'
- '.github/workflows/linkcheck.yml'

env:
DIR: 'docs'

jobs:
linkcheck:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Julia
uses: julia-actions/setup-julia@v1
- name: Convert literate notebooks to markdown files
shell: julia --color=yes {0}
working-directory: ${{ env.DIR }}
run: |
import Pkg
Pkg.add("Literate")
using Literate
for (root, dirs, files) in walkdir(pwd())
for file in files
if endswith(file, ".jl")
Literate.markdown(joinpath(root, file); mdstrings=true, flavor = Literate.CommonMarkFlavor())
end
end
end
- name: Restore lychee cache
id: restore-cache
uses: actions/cache@v4
with:
save-always: 'true'
path: .lycheecache
key: cache-lychee-${{ github.sha }}
restore-keys: cache-lychee-
- name: Lychee Checker
uses: lycheeverse/[email protected]
id: lychee
with:
fail: true
args: '--accept 200,204,429 --verbose --no-progress --cache --max-cache-age 1d ${{ env.DIR }}'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

0 comments on commit 2746f41

Please sign in to comment.