Skip to content

Github workflow test #354

Github workflow test

Github workflow test #354

name: Deploy to GitHub Pages
on:
push: #Action fires anytime there is a push to the following branches
branches:
- main
- development
pull_request: #Action also fires anytime a PR is (re)opened, closed or synchronized
types:
- opened
- reopened
- synchronize
- closed
env:
GH_TOKEN: ${{ secrets.ADMIN_TOKEN }}
TZ: Australia/Canberra
jobs:
pr-preview-setup:
# If the action is fired because of a PR, run this job
if: ${{ github.event_name == 'pull_request' }}
runs-on: ubuntu-latest
steps:
- name: Set up PR preview title
# Set up infos for PR (new, updated or reopened branch not having a head as 'development' or 'main' branch)
if: ${{ github.event.pull_request.head.ref != 'development' && github.event.pull_request.head.ref != 'main' }}
run: |
echo 'TITLE=PR preview' >> $GITHUB_ENV
- name: Set up development preview title
# Set up infos for PR (new, updated or reopened branch not having a head as 'development' or 'main' branch)
if: ${{ github.event.pull_request.head.ref == 'development' }}
run: |
echo 'TITLE=Development website preview' >> $GITHUB_ENV
- name: Get date
run: echo "DATE=$(date '+%Y-%m-%d %H:%M %Z')" >> $GITHUB_ENV
- name: Set up open PR message
if: ${{ github.event.action != 'closed' }}
run: |
# multi-line-msg="${{ env.TITLE }}\n
# \n
# :---:\n
# \n
# 🛫 Deployment still ongoing.<br>\n
# Preview URL will be available at the end of the deployment.\n
# \n
# For more information, please check the [Actions](https://github.com/${{ github.repository }}/actions) tab.\n
# \n
# ${{ env.DATE }}\n
# TEST"
multi-line-msg="ciao \n
mamma"
echo "MSG<<EOF" >> $GITHUB_ENV
echo "$multi-line-msg" >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV
- name: Set up closed PR message
if: ${{ github.event.action == 'closed' }}
run: |
echo 'MSG="
${{ env.TITLE }}
:---:
🛬 Preview link removed because the pull request was closed.
"' >> $GITHUB_ENV
- name: Set preview
uses: thollander/[email protected]
with:
GITHUB_TOKEN: ${{ secrets.ADMIN_TOKEN }}
comment_tag: pr-preview
pr_number: ${{ github.event.number }}
message: ${{ env.MSG }}
# build:
# # Cancel any previous build/deploy jobs that are still running (no need to build/deploy multiple times)
# concurrency:
# group: build-deploy
# cancel-in-progress: true
# runs-on: ubuntu-latest
# outputs:
# pr_nums: ${{ steps.build.outputs.pr_nums }}
# url: ${{ steps.url.outputs.url }}
# steps:
# - name: Checkout
# uses: actions/checkout@master
# with:
# token: ${{ secrets.ADMIN_TOKEN }}
# ref: main
# - name: Get URL
# id: url
# run: echo "url=$(cat docs/CNAME)" >> "$GITHUB_OUTPUT"
# - name: Python setup
# uses: actions/setup-python@v5
# with:
# python-version: 3.9.x
# - name: Install dependencies
# run: pip install -r requirements.txt
# # Build full website using main, development and open PRs head branches
# # (excluding `development` and `main` as PR head branches)
# - name: Build full website
# id: build
# shell: bash
# run: |
# retry() {
# command="$1"
# n_tries="$2"
# wait="$3"
# exit_msg="$4"
# eval "$command"
# until [ $? == 0 ]; do
# if [ $i -eq $((n_tries - 1)) ]; then
# echo "$exit_msg"
# exit 1
# else
# ((i++))
# fi
# sleep $wait
# eval "$command"
# done
# }
# git fetch --all
# echo "Build main website"
# retry "git checkout main" 5 1 "Failed to checkout 'main'."
# retry 'mkdocs build -f mkdocs.yml -d ../website' 5 1 "Failed to build main website."
# echo "Build development website"
# retry 'git checkout development' 5 1 "Failed to checkout 'development' branch."
# retry 'mkdocs build -f mkdocs.yml -d ../website/development-website' 5 1 "Failed to build development website."
# echo "Build PR websites"
# open_pr_info=$(gh pr list --json headRefOid,number,headRefName --jq '.[] | select(.headRefName!="development" and .headRefName!="main")')
# pr_nums=($(jq '.number' <<< "$open_pr_info"))
# pr_sha=($(jq '.headRefOid' <<< "$open_pr_info"))
# if [[ -n $pr_nums ]]; then
# echo "Found PR numbers: $(perl -pe 's/\s(?!$)/, /g' <<< ${pr_nums[@]})."
# echo "pr_nums=[$(perl -pe 's/\s(?!$)/,/g' <<< ${pr_nums[@]})]" >> "$GITHUB_OUTPUT"
# for i in ${!pr_nums[@]}; do
# retry "git checkout ${pr_sha[i]}" 5 1 "Failed to checkout git hash '${pr_sha[i]}'."
# retry "mkdocs build -f mkdocs.yml -d ../website/pr-preview/pr-${pr_nums[i]}" 5 1 "Failed to build pr-${pr_nums[i]} website."
# done
# else
# echo "No open PR found."
# fi
# echo "Set the right file permissions"
# chmod -c -R +rX ../website
# - name: Create artifact for deployment to GitHub Pages
# uses: actions/upload-pages-artifact@v2
# with:
# path: ../website
# deploy:
# needs: build
# runs-on: ubuntu-latest
# # Cancel any previous build/deploy jobs that are still running (no need to build/deploy multiple times)
# concurrency:
# group: build-deploy
# cancel-in-progress: true
# outputs:
# success: ${{ steps.success.outputs.success }}
# permissions:
# pages: write # to deploy to Pages
# id-token: write # to verify the deployment originates from an appropriate source
# steps:
# - name: Deploy to GitHub Pages
# uses: actions/deploy-pages@v2
# with:
# token: ${{ secrets.ADMIN_TOKEN }}
# - name: Output success status
# id: success
# run: |
# echo "success=1" >> "$GITHUB_OUTPUT"
# # Set pr-preview URL
# pr-preview:
# needs: [build, deploy]
# # If there are open PRs (whose head branch is neither `development` nor `main`), run this job
# if: ${{ needs.build.outputs.pr_nums }}
# runs-on: ubuntu-latest
# # Run the same job for each of the open PRs found
# strategy:
# matrix:
# pr_nums: ${{fromJson(needs.build.outputs.pr_nums)}}
# steps:
# - name: Get date
# run: echo "DATE=$(date '+%Y-%m-%d %H:%M %Z')" >> $GITHUB_ENV
# - name: Set pr-preview URL
# if: ${{github.event.action != 'closed'}}
# uses: thollander/[email protected]
# with:
# GITHUB_TOKEN: ${{ secrets.ADMIN_TOKEN }}
# comment_tag: pr-preview
# pr_number: ${{ matrix.pr_nums }}
# message: "\
# PR Preview
# :---:
# 🚀 Deployed preview to
# https://${{ needs.build.outputs.url }}/pr-preview/pr-${{ matrix.pr_nums }}
# ${{ env.DATE }}
# "
# # Add development URL
# development-preview:
# needs: [build, deploy]
# # If there are open PRs (whose head branch is neither `development` nor `main`), run this job
# if: ${{ github.event.pull_request.head.ref == 'development' }}
# runs-on: ubuntu-latest
# steps:
# - name: Get date
# run: echo "DATE=$(date '+%Y-%m-%d %H:%M %Z')" >> $GITHUB_ENV
# - name: Add development-preview URL
# if: ${{github.event.action != 'closed'}}
# uses: thollander/[email protected]
# with:
# GITHUB_TOKEN: ${{ secrets.ADMIN_TOKEN }}
# comment_tag: pr-preview
# pr_number: ${{ github.event.number }}
# message: "\
# Development website preview
# :---:
# 🚀 Development website deployed to
# https://${{ needs.build.outputs.url }}/development-website
# ${{ env.DATE }}
# "
# # Change preview message if deployment fails
# failed-preview:
# needs: deploy
# # If the action failed (but was not cancelled) and was fired because of a pull request (not closed)
# if: ${{ always() && '!cancelled()' && github.event_name == 'pull_request' && github.event.action != 'closed' && needs.deploy.outputs.success != '1' }}
# runs-on: ubuntu-latest
# steps:
# - name: Get date
# run: echo "DATE=$(date '+%Y-%m-%d %H:%M %Z')" >> $GITHUB_ENV
# - name: Change development-preview message
# if: ${{ github.event.pull_request.head.ref == 'development' }}
# uses: thollander/[email protected]
# with:
# GITHUB_TOKEN: ${{ secrets.ADMIN_TOKEN }}
# comment_tag: pr-preview
# pr_number: ${{ github.event.number }}
# message: "\
# Development website preview
# :---:
# ⚠️ There was an error in the deployment of the development website.
# For more information, please check the [Actions](https://github.com/${{github.repository}}/actions) tab.
# ${{ env.DATE }}
# "
# - name: Change pr-preview message
# if: ${{ github.event.pull_request.head.ref != 'development' }}
# uses: thollander/[email protected]
# with:
# GITHUB_TOKEN: ${{ secrets.ADMIN_TOKEN }}
# comment_tag: pr-preview
# pr_number: ${{ github.event.number }}
# message: "\
# PR preview
# :---:
# ⚠️ There was an error in the pr-preview deployment.
# For more information, please check the [Actions](https://github.com/${{github.repository}}/actions) tab.
# ${{ env.DATE }}
# "