name: Documentation on: issue_comment: types: [created] permissions: contents: read # to fetch code (actions/checkout) jobs: build: permissions: contents: read # to fetch code (actions/checkout) pull-requests: write # to create comment runs-on: ubuntu-latest steps: - uses: actions/github-script@v7 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 = /\/(force-)?build:(\w+)\s*/; if(re.test(body)){ const res = re.exec(body) if(body.includes("force-")) { return res[2]+":yes" } else{ return res[2]+":no" } } } } return 'stop' - uses: actions/github-script@v7 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 - name: Emoji-comment uses: actions/github-script@v7 if: steps.get_round.outputs.result != 'stop' with: script: | github.rest.reactions.createForIssueComment({ comment_id: ${{ github.event.comment.id }}, owner: context.repo.owner, repo: context.repo.repo, content: 'rocket' }) - uses: actions/checkout@v4 name: "checkout branch" if: steps.get_round.outputs.result != 'stop' with: repository: ${{ github.repository }} ref: refs/pull/${{ steps.get_pr_number.outputs.result }}/merge 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 wget --no-verbose -O doxygen_exe https://cgal.geometryfactory.com/~cgaltest/doxygen_1_9_6_patched/doxygen sudo mv doxygen_exe /usr/bin/doxygen sudo chmod +x /usr/bin/doxygen git config --global user.email "cgal@geometryfactory.com" git config --global user.name "cgaltest" - 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 id: build_and_run if: steps.get_round.outputs.result != 'stop' run: | set -ex PR_NUMBER=${{ steps.get_pr_number.outputs.result }} TMP_ROUND=${{ steps.get_round.outputs.result }} ROUND=$(echo $TMP_ROUND | cut -d ":" -f 1) force=$(echo $TMP_ROUND | cut -d ":" -f 2) wget --no-verbose cgal.github.io -O tmp.html if ! egrep -q "\/$PR_NUMBER\/$ROUND" tmp.html || [ "$force" = "yes" ]; 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 echo "DoxygenError=No package affected." >> $GITHUB_OUTPUT exit 1 fi cd build_doc && make -j2 doc make -j2 doc_with_postprocessing 2>tmp.log if [ -s tmp.log ]; then content=`cat ./tmp.log` delimiter="$(openssl rand -hex 8)" echo "DoxygenError<<${delimiter}" >> "${GITHUB_OUTPUT}" cat tmp.log >> "${GITHUB_OUTPUT}" echo "${delimiter}" >> "${GITHUB_OUTPUT}" exit 1 fi 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 rm cgal.github.io/${PR_NUMBER}/$ROUND/* -rf 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 "