2021-12-19 19:32:37 +00:00
name : Update cache from SVN
on :
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch :
2021-12-22 10:00:11 +00:00
#schedule:
#- cron: '59 */3 * * *' # every third hour to keep cache up to date
2021-12-19 19:32:37 +00:00
jobs :
# This workflow contains a single job called "build"
mirror :
# The type of runner that the job will run on
runs-on : ubuntu-latest
continue-on-error : true
steps :
- name : install git-svn package
run : |
sudo apt-get remove git git-man
sudo apt-get update
sudo apt-get install git-svn --no-install-recommends
- name : checkout authors
2023-04-14 17:48:10 +00:00
uses : actions/checkout@v3.5.2
2021-12-19 19:32:37 +00:00
with :
ref : travis
path : ./authors
- name : Get current date
id : get-date
run : |
echo "::set-output name=timestamp::$(/bin/date -u "+%Y%m%d%H" )"
shell : bash
- name : Cache runners svn-2-git-fhem mirror directory
# Some room for improvement because we create a new cache on every run where a new ref is fetched, this isn't very nice, normaly we need only the last one and it takes 7 days until they are deleted
id : cache-fhem
2023-03-18 10:17:05 +00:00
uses : actions/cache@v3.3.1
2021-12-19 19:32:37 +00:00
with :
path : |
./src/fhem-mirror/.git
key : ${{ runner.os }}-fhemsvndir-${{ steps.get-date.outputs.timestamp }}
restore-keys : |
${{ runner.os }}-fhemsvndir-
#- name: remove gitconfig
# run: |
# rm ./src/fhem-mirror/.git/config
- name : checkout main branch
2023-04-14 17:48:10 +00:00
uses : actions/checkout@v3.5.2
2021-12-19 19:32:37 +00:00
with :
path : ./src/fhem-mirror
clean : false
- name : generate merged authors file
run : |
cd /tmp
svn log https://svn.fhem.de/fhem --xml --quiet | grep author | sort -u | perl -pe 's/.*>(.*?)<.*/$1 = $1 <>/' > ${GITHUB_WORKSPACE}/authors/authors_svn.txt;
cat ${GITHUB_WORKSPACE}/authors/authors.txt ${GITHUB_WORKSPACE}/authors/authors_svn.txt | sort -u -k1,1 > ${GITHUB_WORKSPACE}/authors/authors_merged.txt;
ls -la ${GITHUB_WORKSPACE}/authors/authors_merged.txt;
- name : fetch from svn
id : fetchsvn
timeout-minutes : 120
working-directory : ./src/fhem-mirror
run : |
echo "::group::git svn init"
git svn init --trunk=trunk --tags=tags --prefix=svn/ https://svn.fhem.de/fhem;
2021-12-22 10:00:11 +00:00
git config --replace-all svn.authorsfile "${GITHUB_WORKSPACE}/authors/authors_merged.txt"
git config --replace-all svn-remote.svn.preserve-empty-dirs "true" ;
git config --replace-all svn-remote.svn.placeholder-filename ".gitkeep" ;
2021-12-19 19:32:37 +00:00
echo "Current .git/config file content:";
cat ${GITHUB_WORKSPACE}/src/fhem-mirror/.git/config;
echo "::endgroup::"
echo "::set-output name=SVN_FETCH_STATUS::incomplete"
# Run fetches after init, go pick up some base refs for the cache on first run only!
RET=124
c=1
while [ $RET -eq 124 ]; do
echo "::group::Fetch ${c}/5"
timeout 1200 git svn --log-window-size=200 -q fetch && RET=$? || true
if [ "$RET" -ne 0 ] && [ "$RET" -ne 124 ]; then
echo "::set-output name=SVN_FETCH_STATUS::error"
fi
((c++)) && ((c==6)) && break
echo "::endgroup::"
done
if [ "$RET" -eq 0 ]; then
echo "::set-output name=SVN_FETCH_STATUS::complete"
fi
# - name: Copy Workflow Files to target
# if: ${{ steps.fetchsvn.outputs.SVN_FETCH_STATUS == 'complete' }}
# run: |
# cp -R ${GITHUB_WORKSPACE}/main/.github ./src/fhem-mirror
- name : Verify no fetch error state
if : ${{ steps.fetchsvn.outputs.SVN_FETCH_STATUS == 'error' }}
run : |
echo "A permanent error occured"
exit 1