Deploy Website #86
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Deploy Website | |
concurrency: | |
group: deploy-${{ github.head_ref }} | |
cancel-in-progress: false # Not sure about this. | |
on: | |
push: | |
branches: | |
- main | |
schedule: | |
# nightly builds to keep in sync with changes to the video library | |
- cron: '0 0 * * *' | |
jobs: | |
deploy: | |
runs-on: ubuntu-latest | |
if: github.repository_owner == 'galaxyproject' | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
# Avg commits between successive monday: | |
# Min. : 2.0 | |
# 1st Qu.: 25.0 | |
# Median : 54.5 | |
# Mean : 65.2 | |
# 3rd Qu.: 94.0 | |
# Max. :282.0 | |
fetch-depth: 400 | |
persist-credentials: false | |
# BEGIN Dependencies | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.11' | |
architecture: 'x64' | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: "3.2" | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: '19' | |
- uses: actions/cache@v4 | |
with: | |
path: | | |
vendor/bundle | |
~/.npm | |
key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }}-node-${{ hashFiles('**/package-lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }}-node- | |
${{ runner.os }}-gems- | |
- name: Install dependencies | |
run: | | |
sudo apt-get install -y build-essential libxi-dev libglu1-mesa-dev libglew-dev pkg-config graphviz # for node | |
gem install bundler | |
bundle config path vendor/bundle | |
bundle install --jobs 4 --retry 3 | |
rm -f package.json package-lock.json yarn.lock | |
npm install markdown-yaml-metadata-parser lunr | |
bundle pristine ffi | |
# END Dependencies | |
- name: Prepare Site Metadata | |
run: | | |
gem install bundler | |
python -m pip install --upgrade pip | |
pip install requests ephemeris | |
export PATH=/home/runner/.local/bin:$PATH | |
make annotate ACTIVATE_ENV=pwd | |
curl -L https://docs.google.com/spreadsheets/d/1NfZhi5Jav7kl9zFCkeb7rIC2F8xW1isruv1TeO4WpNI/export\?format\=tsv | ruby bin/prepare_feedback.rb | |
curl -L https://hexylena.github.io/toolshed-version-database/tool-meta.json > metadata/tool-meta.json | |
make rebuild-search-index ACTIVATE_ENV=pwd | |
cat metadata/swagger.yaml | python bin/yaml2json.py > api/swagger.json | |
rdoc bin _plugins/ --output gtn_rdoc | |
- name: Build Site | |
run: | | |
JEKYLL_ENV=production bundle exec jekyll build --strict_front_matter -d _site/training-material | |
cp metadata/feedback.csv _site/training-material/api/feedback.csv | |
cp metadata/feedback2.yaml _site/training-material/api/feedback2.yaml | |
env: | |
GTN_FORK: ${{ github.repository_owner }} | |
- name: Add jupyter notebooks | |
run: | | |
# Remove our existing directory which was a placeholder | |
rm -rf _site/training-material/jupyter/ | |
# Collect all notebooks into a tmp dir | |
mkdir /tmp/notebook/ | |
ruby bin/filter-pyolite-safe | xargs -I{} -n1 cp '{}' /tmp/notebook | |
# Build the notebook site and add to deployment. | |
pip install jupyterlab~=3.5.1 jupyterlite==0.1.0b18 jupyterlite-xeus-sqlite==0.2.1 | |
jupyter lite build --contents /tmp/notebook | |
mv _output _site/training-material/jupyter/ | |
- name: Deploy 🚀 | |
uses: peaceiris/actions-gh-pages@v3 | |
with: | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
publish_dir: ./_site/training-material/ | |
publish_branch: gh-pages |