test git action #74
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: conditional_convert_via_pandoc | |
# | |
# A script to check for changed and added .md files in content/ and convert those with pandoc (except for _index.md) | |
# | |
# Thanks to Gérald Barré aka. meziantou for the basic template of the condition check | |
# Written by Marcel Kaiser | |
# | |
# published: 2024-10-29 | |
# last edit: 2024-11-16 | |
# | |
on: | |
push: | |
branches: | |
- 'main' # Do the work exclusively for the branch deploying the website | |
jobs: | |
# Seperate jobs to be able to possibly use condition_check_files for other tasks as well | |
condition_check_files: | |
runs-on: 'ubuntu-22.04' | |
outputs: | |
bool_files_changed: ${{ steps.check_file_changed.outputs.bool_files_changed }} | |
list_changed_files: ${{ steps.check_file_changed.outputs.list_changed_files }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 2 | |
- shell: pwsh | |
id: check_file_changed | |
run: | | |
# Look only for changed files (A - added, M - modified) and return their path+name (the specific changes are irrelevant) | |
$diff=git diff --name-only --diff-filter=AM "HEAD^" HEAD | |
# Filter the files under content/ with the .md extension excluding the Hugo associated _index.md files | |
$FilesDiff=$diff | Where-Object { $_ -match 'content/' -and $_ -match '.md$' -and -not ($_ -match '_index.md') } | |
$HasDiff=$FilesDiff.Length -gt 0 | |
# Set the output named "bool_files_changed" | |
echo "bool_files_changed=$HasDiff" >> $env:GITHUB_OUTPUT | |
echo "list_changed_files=$FilesDiff" >> $env:GITHUB_OUTPUT | |
# Run the job only with 'bool_files_changed' equals 'True' | |
conditional_pandoc: | |
runs-on: 'ubuntu-22.04' | |
container: | |
image: pandoc/latex:3.5 | |
needs: [ condition_check_files ] | |
if: needs.condition_check_files.outputs.bool_files_changed == 'true' | |
env: | |
list_changed_files: ${{ needs.condition_check_files.outputs.list_changed_files }} | |
steps: | |
- uses: actions/checkout@v4 # In order to find the script pandoc.sh | |
with: | |
fetch-depth: 2 | |
- name: Run Pandoc in Docker | |
# This is a one-liner. It gets a Docker Image of pandoc/latex:3.5 working directly in the workspace (because | |
# $list_changed_files contains relative paths) and executes the script. | |
run: | | |
if ! dpkg-query -W -f='${Status}' parallel | grep "ok installed"; | |
then apt install parallel; | |
fi | |
./pandoc.sh ${{ env.list_changed_files }} | |
- name: Commit files # transfer the new files into the repository | |
run: | | |
git config --local user.name "GH_Action_Bot" | |
git add ./content | |
git commit -m "GH Action: Pandoc | New output for changed files" | |
git push -f origin main |