name: Documentation on: issue_comment: types: [created] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/github-script@v3 id: get_round with: result-encoding: string script: | const asso = context.payload.comment.author_association if(asso == 'OWNER' || asso == 'MEMBER') { const body = context.payload.comment.body if(body.includes("build:")) { const re = /\/build:(\w+)\s*/; if(re.test(body)){ const res = re.exec(body) return res[1]; } } } return 'stop' - uses: actions/github-script@v3 if: steps.get_round.outputs.result != 'stop' id: get_pr_number with: result-encoding: string script: | //get pullrequest url const pr_number = context.payload.issue.number return pr_number - uses: actions/checkout@v2 name: "checkout branch" if: steps.get_round.outputs.result != 'stop' with: repository: ${{ github.repository }} ref: refs/pull/${{ steps.get_pr_number.outputs.result }}/merge token: ${{ secrets.PUSH_TO_CGAL_GITHUB_IO_TOKEN }} fetch-depth: 2 - name: install dependencies if: steps.get_round.outputs.result != 'stop' run: | set -x sudo apt-get update && sudo apt-get install -y graphviz ssh bibtex2html sudo pip install lxml sudo pip install 'pyquery==1.4.1' # it seems to be the last py2 compatible version wget --no-verbose -O doxygen_exe https://cgal.geometryfactory.com/~mgimeno/doxygen/build_1_8_13/bin/doxygen sudo mv doxygen_exe /usr/bin/doxygen sudo chmod +x /usr/bin/doxygen git config --global user.email "maxime.gimeno@geometryfactory.com" git config --global user.name "Maxime Gimeno" - name: configure all if: steps.get_round.outputs.result != 'stop' run: | set -ex mkdir -p build_doc && cd build_doc && cmake ../Documentation/doc - name: Build and Upload Doc if: steps.get_round.outputs.result != 'stop' run: | set -ex PR_NUMBER=${{ steps.get_pr_number.outputs.result }} ROUND=${{ steps.get_round.outputs.result }} wget --no-verbose cgal.github.io -O tmp.html if ! egrep -q "\/$PR_NUMBER\/$ROUND" tmp.html; then #list impacted packages LIST_OF_PKGS=$(git diff --name-only HEAD^1 HEAD |cut -s -d/ -f1 |sort -u | xargs -I {} echo {} && ls -d {}/package_info 2>/dev/null |cut -d/ -f1 |egrep -v Installation||true) if [ "$LIST_OF_PKGS" = "" ]; then exit 1 fi cd build_doc && make -j2 doc && make -j2 doc_with_postprocessing cd .. git clone https://CGAL:${{ secrets.PUSH_TO_CGAL_GITHUB_IO_TOKEN }}@github.com/CGAL/cgal.github.io.git mkdir -p cgal.github.io/${PR_NUMBER}/$ROUND for f in $LIST_OF_PKGS do if [ -d ./build_doc/doc_output/$f ]; then cp -r ./build_doc/doc_output/$f ./cgal.github.io/${PR_NUMBER}/$ROUND fi done cp -r ./build_doc/doc_output/Manual ./cgal.github.io/${PR_NUMBER}/$ROUND cd ./cgal.github.io egrep -v " ${PR_NUMBER}\." index.html > tmp.html || true echo "
  • Manual for PR ${PR_NUMBER} ($ROUND).
  • " >> ./tmp.html mv tmp.html index.html git add ${PR_NUMBER}/$ROUND index.html && git commit -q --amend -m "base commit" && git push -q -f -u origin master else exit 1 fi - name: Post address uses: actions/github-script@v3 if: steps.get_round.outputs.result != 'stop' with: script: | const address = "The documentation is built. It will be available, after a few minutes, here : https://cgal.github.io/${{ steps.get_pr_number.outputs.result }}/${{ steps.get_round.outputs.result }}/Manual/index.html" github.issues.createComment({ owner: "CGAL", repo: "cgal", issue_number: ${{ github.event.issue.number }}, body: address });