mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-04-12 02:39:57 +00:00
Bumps [actions/cache](https://github.com/actions/cache) from 4.2.2 to 4.2.3. - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](https://github.com/actions/cache/compare/v4.2.2...v4.2.3) --- updated-dependencies: - dependency-name: actions/cache dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
105 lines
3.8 KiB
YAML
105 lines
3.8 KiB
YAML
name: Update cache from SVN
|
|
|
|
on:
|
|
# Allows you to run this workflow manually from the Actions tab
|
|
workflow_dispatch:
|
|
|
|
#schedule:
|
|
#- cron: '59 */3 * * *' # every third hour to keep cache up to date
|
|
|
|
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 subversion git-svn -y --no-install-recommends
|
|
|
|
- name: checkout authors
|
|
uses: actions/checkout@v4.2.2
|
|
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
|
|
uses: actions/cache@v4.2.3
|
|
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
|
|
uses: actions/checkout@v4.2.2
|
|
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;
|
|
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" ;
|
|
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
|