Deploy Website #289
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 | |
# 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 # for node | |
gem install bundler | |
bundle config path vendor/bundle | |
bundle install --jobs 4 --retry 3 | |
npm install | |
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 | |
npm install | |
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 |