Loading .gitlab-ci.yml +10 −12 Original line number Diff line number Diff line Loading @@ -80,19 +80,17 @@ pages: when: on_success only: - tags before_script: - | curl "${CI_API_V4_URL}/projects/$TOOLS_SCRIPTS_PROJECT_ID/repository/files/publish_on_pages%2Esh/raw?ref=using_pages" >> publish_on_pages.sh - chmod +x publish_on_pages.sh - | curl "${CI_API_V4_URL}/projects/$TOOLS_SCRIPTS_PROJECT_ID/repository/files/updateIndex%2Epy/raw?ref=using_pages" >> updateIndex.py - | curl "${CI_API_V4_URL}/projects/$TOOLS_SCRIPTS_PROJECT_ID/repository/files/index%2Ehtm/raw?ref=using_pages" >> index.htm script: # Get the previous GitLab Pages content - set +e - curl --fail "$CI_PAGES_URL/content.zip" -o "content.zip" - if [ -e "content.zip" ]; then unzip "content.zip"; rm "content.zip"; fi - set -e # Add/update content - mkdir -p "public/$CI_COMMIT_REF_NAME" - cp -r -f "${CI_PROJECT_NAME}_${CI_COMMIT_TAG}.docx" public/$CI_COMMIT_REF_NAME - echo "public/$CI_COMMIT_REF_NAME" >> "public/index.html" # Zip the content and publish the zip again - zip -r "content.zip" "public" - mv "content.zip" "public/" - echo 'Publishing on pages' - ./publish_on_pages.sh updateIndex.py $CI_PAGES_URL ${CI_PROJECT_NAME} $CI_COMMIT_REF_NAME index.htm artifacts: paths: - public No newline at end of file index.htm 0 → 100644 +48 −0 Original line number Diff line number Diff line <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Directory Listing /</title> <style type="text/css"> body{font-size:0.8em} a { text-decoration: none; } a:hover { text-decoration: underline; } th {text-align:left;} .box {float: left; min-height: 50px; margin: 0.5em;} .after-box { clear: left;} .icon{width:22px;height:22px} </style> </head> <body> <header> <div class="box"> <h2> Available spec versions </h2> </div> <div class="after-box"> </div> </header> <form method="post" action="./" id="ctl00"> <div class="aspNetHidden"> <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="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" /> </div> <div class="aspNetHidden"> <input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="BE8C5505" /> </div> <table style="margin-left:20px"> <tbody> <ul id='document-list'> </ul> </tbody> </table> </form> </body> </html> No newline at end of file publish_on_pages.sh 0 → 100644 +37 −0 Original line number Diff line number Diff line #!/bin/bash DOCKER_IMAGE=python:3.9-slim-bullseye echo "\n------ Checking for docker image --------" docker pull "$DOCKER_IMAGE" HOST_URL=$(echo $1 | cut -d'/' -f 1-3) PROJECT_NAME=$(echo $1 | cut -d'/' -f 5- | cut -d'.' -f 1) echo "Pages URL:" $2 echo "PROJECT NAME:" $3 echo "TAG NAME:" $4 echo "------ Get the previous GitLab Pages content --------" set +e curl --fail "$1/content.zip" -o "content.zip" if [ -e "content.zip" ]; then unzip "content.zip"; rm "content.zip"; fi set -e echo "------ Add/update content --------" mkdir -p "public/$3" cp -r -f "$2_$3.docx" public/$3 docker run --rm -u $(id -u):$(id -g) "$DOCKER_IMAGE" $1 "$3_$4" "$4/$3_$4.docx" "$5" #echo "<a href="${CI_COMMIT_REF_NAME}/${CI_PROJECT_NAME}_${CI_COMMIT_TAG}.docx" target="_blank">$CI_COMMIT_REF_NAME</a>" >> "public/index.html" echo "------ Zip the content and publish the zip again ------" zip -r "content.zip" "public" mv "content.zip" "public/" exit 0 #updateIndex.py #$CI_PAGES_URL #${CI_PROJECT_NAME} #$CI_COMMIT_REF_NAME #index.htm updateIndex.py 0 → 100644 +55 −0 Original line number Diff line number Diff line # # updateIndex.py # # Script to update index.htm file on Pages. # # (c) 2023 by Miguel Angel Reina Ortega # License: BSD 3-Clause License. See the LICENSE file for further details. # from bs4 import BeautifulSoup def updateIndex(args:argparse.Namespace) -> None: # Check if index.htm exists if not os.path.exists('public/index.htm'): print("'index.htm' does not exist yet, using template") with open(args.indexTemplate, 'r', encoding='utf-8') as file: html_content = file.read() else: # Read index HTML with open('index.htm', 'r', encoding='utf-8') as file: html_content = file.read() # Analyze index content with BeautifulSoup soup = BeautifulSoup(html_content, 'html.parser') # Find document list # Assume there's a list (<ul>) with id "document-list" document_list = soup.find('ul', id='document-list') # Add the new element <li> for the new document li = soup.new_tag('li') a = soup.new_tag('a', href=args.documentLink) a.string = args.documentName li.append(a) document_list.append(li) # Guarda el archivo HTML actualizado with open('index.htm', 'w', encoding='utf-8') as file: file.write(str(soup)) print("Index.htm updated") if __name__ == '__main__': # Parse command line arguments parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter) parser.add_argument('documentName', help = 'Document name to add to the list') parser.add_argument('documentLink', help = 'Document location to add to the list') parser.add_argument('indexTemplate', help = 'Index template document') args = parser.parse_args() updateIndex(args) Loading
.gitlab-ci.yml +10 −12 Original line number Diff line number Diff line Loading @@ -80,19 +80,17 @@ pages: when: on_success only: - tags before_script: - | curl "${CI_API_V4_URL}/projects/$TOOLS_SCRIPTS_PROJECT_ID/repository/files/publish_on_pages%2Esh/raw?ref=using_pages" >> publish_on_pages.sh - chmod +x publish_on_pages.sh - | curl "${CI_API_V4_URL}/projects/$TOOLS_SCRIPTS_PROJECT_ID/repository/files/updateIndex%2Epy/raw?ref=using_pages" >> updateIndex.py - | curl "${CI_API_V4_URL}/projects/$TOOLS_SCRIPTS_PROJECT_ID/repository/files/index%2Ehtm/raw?ref=using_pages" >> index.htm script: # Get the previous GitLab Pages content - set +e - curl --fail "$CI_PAGES_URL/content.zip" -o "content.zip" - if [ -e "content.zip" ]; then unzip "content.zip"; rm "content.zip"; fi - set -e # Add/update content - mkdir -p "public/$CI_COMMIT_REF_NAME" - cp -r -f "${CI_PROJECT_NAME}_${CI_COMMIT_TAG}.docx" public/$CI_COMMIT_REF_NAME - echo "public/$CI_COMMIT_REF_NAME" >> "public/index.html" # Zip the content and publish the zip again - zip -r "content.zip" "public" - mv "content.zip" "public/" - echo 'Publishing on pages' - ./publish_on_pages.sh updateIndex.py $CI_PAGES_URL ${CI_PROJECT_NAME} $CI_COMMIT_REF_NAME index.htm artifacts: paths: - public No newline at end of file
index.htm 0 → 100644 +48 −0 Original line number Diff line number Diff line <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Directory Listing /</title> <style type="text/css"> body{font-size:0.8em} a { text-decoration: none; } a:hover { text-decoration: underline; } th {text-align:left;} .box {float: left; min-height: 50px; margin: 0.5em;} .after-box { clear: left;} .icon{width:22px;height:22px} </style> </head> <body> <header> <div class="box"> <h2> Available spec versions </h2> </div> <div class="after-box"> </div> </header> <form method="post" action="./" id="ctl00"> <div class="aspNetHidden"> <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUILTk5MzUxOTYPZBYEZg8WAh4LXyFJdGVtQ291bnRmZAIBD2QWBAIBDxYCHwACSRaSAWYPZBYCZg8VBQAgaHR0cHM6Ly9kb2Nib3guZXRzaS5vcmcvM2dwcEVUU0kIM2dwcEVUU0kQMjAxNi0wOS0yNyAxNDowNABkAgEPZBYCZg8VBQAaaHR0cHM6Ly9kb2Nib3guZXRzaS5vcmcvQVQCQVQQMjAwNy0wMy0xNSAxMDo1MwBkAgIPZBYCZg8VBQAeaHR0cHM6Ly9kb2Nib3guZXRzaS5vcmcvQVRNU0NHBkFUTVNDRxAyMDA3LTEyLTIwIDE2OjAxAGQCAw9kFgJmDxUFABxodHRwczovL2RvY2JveC5ldHNpLm9yZy9BVFRNBEFUVE0PMjAyMi0wNy0xMSA3OjI2AGQCBA9kFgJmDxUFAB1odHRwczovL2RvY2JveC5ldHNpLm9yZy9Cb2FyZAVCb2FyZA8yMDIzLTA2LTIzIDU6NTUAZAIFD2QWAmYPFQUAHGh0dHBzOi8vZG9jYm94LmV0c2kub3JnL0JSQU4EQlJBThAyMDEwLTA2LTA5IDEyOjMyAGQCBg9kFgJmDxUFACFodHRwczovL2RvY2JveC5ldHNpLm9yZy9Ccm9hZGNhc3QJQnJvYWRjYXN0DzIwMTYtMDQtMjUgODowOQBkAgcPZBYCZg8VBQAdaHR0cHM6Ly9kb2Nib3guZXRzaS5vcmcvQ0FCTEUFQ0FCTEUPMjAxMy0wMy0wMSA5OjE5AGQCCA9kFgJmDxUFABtodHRwczovL2RvY2JveC5ldHNpLm9yZy9DRE0DQ0RNEDIwMTktMDQtMTUgMTU6MjcAZAIJD2QWAmYPFQUAHWh0dHBzOi8vZG9jYm94LmV0c2kub3JnL0NZQkVSBUNZQkVSEDIwMTctMDItMTcgMTQ6NTEAZAIKD2QWAmYPFQUAKWh0dHBzOi8vZG9jYm94LmV0c2kub3JnL0NZQkVSQUNUX0JSSUVGSU5HEUNZQkVSQUNUX0JSSUVGSU5HEDIwMjAtMDYtMzAgMTA6MDIAZAILD2QWAmYPFQUAIGh0dHBzOi8vZG9jYm94LmV0c2kub3JnL0NfTGV0dGVyCENfTGV0dGVyEDIwMjMtMDEtMDIgMTY6MzkAZAIMD2QWAmYPFQUAHGh0dHBzOi8vZG9jYm94LmV0c2kub3JnL0RFQ1QEREVDVA8yMDIxLTEwLTIxIDc6NTgAZAIND2QWAmYPFQUAHWh0dHBzOi8vZG9jYm94LmV0c2kub3JnL0UzTUFHBUUzTUFHEDIwMjItMDUtMTYgMTM6NTQAZAIOD2QWAmYPFQUAIGh0dHBzOi8vZG9jYm94LmV0c2kub3JnL0VDX0ZpbGVzCEVDX0ZpbGVzEDIwMDctMDMtMTUgMTE6MTMAZAIPD2QWAmYPFQUAGmh0dHBzOi8vZG9jYm94LmV0c2kub3JnL0VFAkVFDzIwMTYtMDktMDcgODoxMQBkAhAPZBYCZg8VBQAfaHR0cHM6Ly9kb2Nib3guZXRzaS5vcmcvRUhFQUxUSAdFSEVBTFRIEDIwMTUtMTAtMDggMTE6NDQAZAIRD2QWAmYPFQUAHWh0dHBzOi8vZG9jYm94LmV0c2kub3JnL0VNVEVMBUVNVEVMEDIwMTUtMDMtMjAgMTQ6MDAAZAISD2QWAmYPFQUAH2h0dHBzOi8vZG9jYm94LmV0c2kub3JnL0VQT0RhdGEHRVBPRGF0YRAyMDIzLTA5LTI3IDIzOjAxAGQCEw9kFgJmDxUFABtodHRwczovL2RvY2JveC5ldHNpLm9yZy9FUk0DRVJNEDIwMTktMDYtMjQgMTE6NTEAZAIUD2QWAmYPFQUAG2h0dHBzOi8vZG9jYm94LmV0c2kub3JnL0VTSQNFU0kPMjAwOS0wOS0wNyA5OjQwAGQCFQ9kFgJmDxUFAB1odHRwczovL2RvY2JveC5ldHNpLm9yZy9FVFNBRwVFVFNBRxAyMDA3LTAzLTE1IDExOjQ2AGQCFg9kFgJmDxUFACRodHRwczovL2RvY2JveC5ldHNpLm9yZy9FdHNpX0NlbmVsZWMMRXRzaV9DZW5lbGVjDzIwMTQtMDQtMjMgODoyNgBkAhcPZBYCZg8VBQAqaHR0cHM6Ly9kb2Nib3guZXRzaS5vcmcvRVRTSV9wcmVzZW50YXRpb25zEkVUU0lfcHJlc2VudGF0aW9ucxAyMDE1LTAzLTA1IDEwOjEyAGQCGA9kFgJmDxUFACJodHRwczovL2RvY2JveC5ldHNpLm9yZy9lX21lZXRpbmdzCmVfbWVldGluZ3MQMjAyMC0wMy0xMyAxNDozNgBkAhkPZBYCZg8VBQAfaHR0cHM6Ly9kb2Nib3guZXRzaS5vcmcvRmluYW5jZQdGaW5hbmNlDzIwMTUtMTAtMTMgNzo0OABkAhoPZBYCZg8VBQAaaHR0cHM6Ly9kb2Nib3guZXRzaS5vcmcvR0ECR0EPMjAyMy0wMy0zMSA1OjUxAGQCGw9kFgJmDxUFABpodHRwczovL2RvY2JveC5ldHNpLm9yZy9IRgJIRhAyMDA3LTAzLTE1IDExOjU0AGQCHA9kFgJmDxUFAChodHRwczovL2RvY2JveC5ldHNpLm9yZy9JQ1RfTVNQX0JyaWVmaW5nEElDVF9NU1BfQnJpZWZpbmcPMjAxNC0wMi0wNCA5OjE1AGQCHQ9kFgJmDxUFABtodHRwczovL2RvY2JveC5ldHNpLm9yZy9JTlQDSU5UEDIwMTktMDMtMTEgMTA6NTAAZAIeD2QWAmYPFQUAI2h0dHBzOi8vZG9jYm94LmV0c2kub3JnL0ludml0YXRpb25zC0ludml0YXRpb25zEDIwMjMtMDktMjIgMTQ6NTcAZAIfD2QWAmYPFQUAG2h0dHBzOi8vZG9jYm94LmV0c2kub3JnL0lQUgNJUFIQMjAyMy0wMi0xMCAxMDoyMQBkAiAPZBYCZg8VBQAbaHR0cHM6Ly9kb2Nib3guZXRzaS5vcmcvSVNHA0lTRxAyMDIzLTAxLTMwIDEwOjIzAGQCIQ9kFgJmDxUFABtodHRwczovL2RvY2JveC5ldHNpLm9yZy9JVFMDSVRTEDIwMTktMDctMTUgMTI6MjAAZAIiD2QWAmYPFQUAHGh0dHBzOi8vZG9jYm94LmV0c2kub3JnL0pFRUMESkVFQxAyMDA3LTAzLTE1IDExOjU1AGQCIw9kFgJmDxUFABpodHRwczovL2RvY2JveC5ldHNpLm9yZy9MSQJMSQ8yMDIwLTAyLTEzIDg6NDMAZAIkD2QWAmYPFQUAHWh0dHBzOi8vZG9jYm94LmV0c2kub3JnL01lZGlhBU1lZGlhEDIwMDctMDMtMTUgMTE6NTkAZAIlD2QWAmYPFQUAIGh0dHBzOi8vZG9jYm94LmV0c2kub3JnL01lZXRpbmdzCE1lZXRpbmdzEDIwMTQtMTAtMzEgMTQ6MDkAZAImD2QWAmYPFQUAHWh0dHBzOi8vZG9jYm94LmV0c2kub3JnL01ldGFkBU1ldGFkDzIwMTUtMTAtMzAgODozNwBkAicPZBYCZg8VBQAbaHR0cHM6Ly9kb2Nib3guZXRzaS5vcmcvTVNHA01TRxAyMDIyLTAxLTI1IDEzOjQ1AGQCKA9kFgJmDxUFABtodHRwczovL2RvY2JveC5ldHNpLm9yZy9NVFMDTVRTDzIwMTktMDUtMjIgOToxMQBkAikPZBYCZg8VBQAhaHR0cHM6Ly9kb2Nib3guZXRzaS5vcmcvTXVsdGktU0RPCU11bHRpLVNETw8yMDE2LTA1LTMwIDk6NDUAZAIqD2QWAmYPFQUAG2h0dHBzOi8vZG9jYm94LmV0c2kub3JnL09DRwNPQ0cQMjAyMS0wOS0zMCAxMToyNQBkAisPZBYCZg8VBQAbaHR0cHM6Ly9kb2Nib3guZXRzaS5vcmcvT1NHA09TRw8yMDIzLTA3LTIwIDk6MDEAZAIsD2QWAmYPFQUAG2h0dHBzOi8vZG9jYm94LmV0c2kub3JnL1BBTgNQQU4QMjAwNy0wMy0xNSAxMjowNgBkAi0PZBYCZg8VBQAgaHR0cHM6Ly9kb2Nib3guZXRzaS5vcmcvUGFydG5lcnMIUGFydG5lcnMQMjAyMy0wOS0yMCAxNDozNwBkAi4PZBYCZg8VBQAgaHR0cHM6Ly9kb2Nib3guZXRzaS5vcmcvUHJvamVjdHMIUHJvamVjdHMQMjAxNi0wNC0yNiAxMjozNQBkAi8PZBYCZg8VBQAgaHR0cHM6Ly9kb2Nib3guZXRzaS5vcmcvUkVEQ1lCRVIIUkVEQ1lCRVIQMjAyMi0wMy0yNSAxNjowNgBkAjAPZBYCZg8VBQAhaHR0cHM6Ly9kb2Nib3guZXRzaS5vcmcvUmVmZXJlbmNlCVJlZmVyZW5jZRAyMDE5LTEyLTAzIDE1OjQ3AGQCMQ9kFgJmDxUFABtodHRwczovL2RvY2JveC5ldHNpLm9yZy9SUlMDUlJTDzIwMjItMDUtMDkgODo0OABkAjIPZBYCZg8VBQAaaHR0cHM6Ly9kb2Nib3guZXRzaS5vcmcvUlQCUlQQMjAxNy0wMi0wNiAxMDozOABkAjMPZBYCZg8VBQAeaHR0cHM6Ly9kb2Nib3guZXRzaS5vcmcvU2FmZXR5BlNhZmV0eRAyMDIwLTA3LTE2IDEwOjAzAGQCNA9kFgJmDxUFABxodHRwczovL2RvY2JveC5ldHNpLm9yZy9TQUdFBFNBR0UQMjAwNy0wMy0xNSAxMjoxNQBkAjUPZBYCZg8VBQAbaHR0cHM6Ly9kb2Nib3guZXRzaS5vcmcvU0NQA1NDUA8yMDIyLTAyLTEwIDk6NTQAZAI2D2QWAmYPFQUAG2h0dHBzOi8vZG9jYm94LmV0c2kub3JnL1NERwNTREcQMjAyMy0wNy0yMCAxNDo1MABkAjcPZBYCZg8VBQAfaHR0cHM6Ly9kb2Nib3guZXRzaS5vcmcvU2VtaW5hcgdTZW1pbmFyEDIwMTAtMDYtMDQgMTI6NTAAZAI4D2QWAmYPFQUAG2h0dHBzOi8vZG9jYm94LmV0c2kub3JnL1NFUwNTRVMQMjAxMy0wMS0yNyAyMDo1NABkAjkPZBYCZg8VBQAbaHR0cHM6Ly9kb2Nib3guZXRzaS5vcmcvU0VUA1NFVA8yMDIyLTAxLTA0IDk6NTIAZAI6D2QWAmYPFQUAIGh0dHBzOi8vZG9jYm94LmV0c2kub3JnL3NtYXJ0YmFuCHNtYXJ0YmFuDzIwMTMtMDMtMjcgODo1NwBkAjsPZBYCZg8VBQAgaHR0cHM6Ly9kb2Nib3guZXRzaS5vcmcvU21hcnRNMk0IU21hcnRNMk0PMjAxMy0xMC0yNCA4OjA4AGQCPA9kFgJmDxUFAB9odHRwczovL2RvY2JveC5ldHNpLm9yZy9TcGVjaWFsB1NwZWNpYWwQMjAxMy0wMi0yMCAxNTo1NQBkAj0PZBYCZg8VBQAbaHR0cHM6Ly9kb2Nib3guZXRzaS5vcmcvU1RGA1NURhAyMDIzLTAzLTEzIDEzOjQ3AGQCPg9kFgJmDxUFACJodHRwczovL2RvY2JveC5ldHNpLm9yZy9TVEZfUHVibGljClNURl9QdWJsaWMQMjAxOS0wMy0yNSAxNDozOQBkAj8PZBYCZg8VBQAbaHR0cHM6Ly9kb2Nib3guZXRzaS5vcmcvU1RRA1NUURAyMDA3LTAzLTE1IDEzOjI1AGQCQA9kFgJmDxUFABxodHRwczovL2RvY2JveC5ldHNpLm9yZy9UQ0NFBFRDQ0UQMjAxNC0wMS0wNiAxMzowNgBkAkEPZBYCZg8VBQAeaHR0cHM6Ly9kb2Nib3guZXRzaS5vcmcvdGNyLXRyBnRjci10chAyMDA3LTAzLTE1IDEzOjI3AGQCQg9kFgJmDxUFABpodHRwczovL2RvY2JveC5ldHNpLm9yZy90bQJ0bQ8yMDEwLTA5LTA5IDc6MzMAZAJDD2QWAmYPFQUAG2h0dHBzOi8vZG9jYm94LmV0c2kub3JnL1RTQQNUU0EPMjAyMS0xMS0wOSA5OjA0AGQCRA9kFgJmDxUFACFodHRwczovL2RvY2JveC5ldHNpLm9yZy9Vc2VyR3JvdXAJVXNlckdyb3VwEDIwMDctMDMtMTUgMTQ6MDYAZAJFD2QWAmYPFQUAIGh0dHBzOi8vZG9jYm94LmV0c2kub3JnL1dvcmtzaG9wCFdvcmtzaG9wEDIwMjMtMDQtMjAgMTI6MDIAZAJGD2QWAmYPFQUAIGh0dHBzOi8vZG9jYm94LmV0c2kub3JnL3pBcmNoaXZlCHpBcmNoaXZlEDIwMjMtMDEtMTIgMTM6MDUAZAJHD2QWAmYPFQUAHGh0dHBzOi8vZG9jYm94LmV0c2kub3JnL1pERVYEWkRFVg8yMDIyLTA1LTA2IDk6NTkAZAJID2QWAmYPFQUELmJhdCRodHRwczovL2RvY2JveC5ldHNpLm9yZy9kbG9nX3NqYy5iYXQMZGxvZ19zamMuYmF0EDIwMjMtMDktMjYgMTM6MjcGMyw2IEtCZAIDDw8WAh4EVGV4dAUJNzMgaXRlbXMuZGRkaFH4UAAprCxOf/psxJwKFtgbqks=" /> </div> <div class="aspNetHidden"> <input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="BE8C5505" /> </div> <table style="margin-left:20px"> <tbody> <ul id='document-list'> </ul> </tbody> </table> </form> </body> </html> No newline at end of file
publish_on_pages.sh 0 → 100644 +37 −0 Original line number Diff line number Diff line #!/bin/bash DOCKER_IMAGE=python:3.9-slim-bullseye echo "\n------ Checking for docker image --------" docker pull "$DOCKER_IMAGE" HOST_URL=$(echo $1 | cut -d'/' -f 1-3) PROJECT_NAME=$(echo $1 | cut -d'/' -f 5- | cut -d'.' -f 1) echo "Pages URL:" $2 echo "PROJECT NAME:" $3 echo "TAG NAME:" $4 echo "------ Get the previous GitLab Pages content --------" set +e curl --fail "$1/content.zip" -o "content.zip" if [ -e "content.zip" ]; then unzip "content.zip"; rm "content.zip"; fi set -e echo "------ Add/update content --------" mkdir -p "public/$3" cp -r -f "$2_$3.docx" public/$3 docker run --rm -u $(id -u):$(id -g) "$DOCKER_IMAGE" $1 "$3_$4" "$4/$3_$4.docx" "$5" #echo "<a href="${CI_COMMIT_REF_NAME}/${CI_PROJECT_NAME}_${CI_COMMIT_TAG}.docx" target="_blank">$CI_COMMIT_REF_NAME</a>" >> "public/index.html" echo "------ Zip the content and publish the zip again ------" zip -r "content.zip" "public" mv "content.zip" "public/" exit 0 #updateIndex.py #$CI_PAGES_URL #${CI_PROJECT_NAME} #$CI_COMMIT_REF_NAME #index.htm
updateIndex.py 0 → 100644 +55 −0 Original line number Diff line number Diff line # # updateIndex.py # # Script to update index.htm file on Pages. # # (c) 2023 by Miguel Angel Reina Ortega # License: BSD 3-Clause License. See the LICENSE file for further details. # from bs4 import BeautifulSoup def updateIndex(args:argparse.Namespace) -> None: # Check if index.htm exists if not os.path.exists('public/index.htm'): print("'index.htm' does not exist yet, using template") with open(args.indexTemplate, 'r', encoding='utf-8') as file: html_content = file.read() else: # Read index HTML with open('index.htm', 'r', encoding='utf-8') as file: html_content = file.read() # Analyze index content with BeautifulSoup soup = BeautifulSoup(html_content, 'html.parser') # Find document list # Assume there's a list (<ul>) with id "document-list" document_list = soup.find('ul', id='document-list') # Add the new element <li> for the new document li = soup.new_tag('li') a = soup.new_tag('a', href=args.documentLink) a.string = args.documentName li.append(a) document_list.append(li) # Guarda el archivo HTML actualizado with open('index.htm', 'w', encoding='utf-8') as file: file.write(str(soup)) print("Index.htm updated") if __name__ == '__main__': # Parse command line arguments parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter) parser.add_argument('documentName', help = 'Document name to add to the list') parser.add_argument('documentLink', help = 'Document location to add to the list') parser.add_argument('indexTemplate', help = 'Index template document') args = parser.parse_args() updateIndex(args)