fdroiddata/.gitlab-ci.yml
Hans-Christoph Steiner 9ccf886978
gitlab-ci: check active git repos to ensure they're available
This then edits the metadata file for apps with failing git repos, then
includes those edited files in the gitlab job artifacts.

fdroid/fdroiddata!5262
2019-08-26 11:24:17 +02:00

145 lines
5.2 KiB
YAML

image: registry.gitlab.com/fdroid/ci-images-server:latest
lint:
before_script:
- printf "Package\x3a androguard fdroidserver python3-asn1crypto python3-ruamel.yaml\nPin\x3a release a=stretch-backports\nPin-Priority\x3a 500\n" > /etc/apt/preferences.d/debian-stretch-backports.pref
- echo "deb http://deb.debian.org/debian/ stretch-backports main" > /etc/apt/sources.list.d/backports.list
- apt-get update
- apt-get -qy dist-upgrade
- rm -rf fdroidserver
- mkdir fdroidserver
- curl --silent https://gitlab.com/fdroid/fdroidserver/repository/master/archive.tar.gz
| tar -xz --directory=fdroidserver --strip-components=1
- export PATH="$PWD/fdroidserver:$PATH"
- touch config.py
script:
# if this is a merge request fork, then only check relevant apps
- if [ "$CI_PROJECT_NAMESPACE" != "fdroid" ]; then
git fetch https://gitlab.com/fdroid/fdroiddata;
test -d build || mkdir build;
for f in `git diff --name-only --diff-filter=d FETCH_HEAD...HEAD`; do
appid=`echo $f | sed -n -e 's,^metadata/\([^/][^/]*\)\.txt,\1,p'
-e 's,^metadata/\([^/][^/]*\)\.yml,\1,p'`;
export CHANGED="$CHANGED $appid";
grep -q "^Repo *Type\W *git$" $f && tail -1 $f | grep -qv '^NoSourceSince' && git -C build clone `sed -n "s,^Repo *:,,p" $f` $appid;
done;
./tools/audit-gradle.py $CHANGED;
fi
- export EXITVALUE=0
- fdroid lint -f $CHANGED || {
export EXITVALUE=1;
printf "\nThese files have lint issues:\n";
fdroid rewritemeta -l $CHANGED;
printf "\nThese are the formatting issues:\n";
fdroid rewritemeta $CHANGED;
git --no-pager diff --color=always;
}
- apt-get -qy update
- apt-get -qy install --no-install-recommends exiftool
- find metadata/ -name '*.jp*g' -o -name '*.png' | xargs exiftool -all=
- echo "these images have EXIF that must be stripped:"
- git --no-pager diff --stat
- git --no-pager diff --name-only --exit-code || export EXITVALUE=1
- ./tools/check-localized-metadata.py || export EXITVALUE=1
- ./tools/check-keyalias-collision.py || export EXITVALUE=1
- ./tools/check-metadata-summary-whitespace.py || export EXITVALUE=1
- exit $EXITVALUE
pages:
image: ruby:2.3
stage: deploy
only:
- schedules
cache:
key: "$CI_JOB_NAME"
paths:
- vendor/ruby
artifacts:
paths:
- public
script:
- rm -rf public
- gem install git_stats
- git_stats generate --silent --out-path=public
check_git_repos:
image: debian:buster-slim
stage: test
only:
- schedules
artifacts:
when: on_failure
expire_in: 1 month
paths:
- public
script:
- apt-get update
- apt-get -qy install --no-install-recommends ca-certificates git python3-yaml
- tools/check-git-repo-availability.py || export EXITVALUE=1
- test -d public || mkdir public
- cp `git status | grep -Eo 'metadata/.*\.yml'` public/ || true
- exit $EXITVALUE
fdroid-buildserver:
tags:
- fdroid
- buildserver
only:
- DONOTRUN
# - branches@beuc/fdroiddata
# - branches@Bubu/fdroiddata
# - branches@eighthave/fdroiddata
# - branches@fdroid/fdroiddata
# - branches@grote/fdroiddata
# - branches@izzysoft/fdroiddata
# - branches@schildbach/fdroiddata
# - branches@uniqx/fdroiddata
artifacts:
name: "${CI_PROJECT_PATH}_${CI_JOB_STAGE}_${CI_COMMIT_REF_NAME}_${CI_COMMIT_SHA}"
paths:
- json
- libscout-logs
- logs
- stats
- unsigned
expire_in: 1 week
when: always
cache:
key: "$CI_JOB_NAME"
paths:
- build
- unsigned
script:
- virsh -c qemu:///system destroy builder_default || true
- virsh -c qemu:///system undefine builder_default
--nvram --managed-save --remove-all-storage --snapshots-metadata || true
- git -C $HOME/fdroidserver reset --hard
- git -C $HOME/fdroidserver checkout -B master origin/master
- export PATH="$HOME/fdroidserver:$PATH"
- if [ "$CI_PROJECT_NAMESPACE" = "fdroid" ]; then
export head=HEAD^^^;
echo ORIG_HEAD `git diff --name-only --diff-filter=d ORIG_HEAD...HEAD
| sed -n -e 's,^metadata/\([^/][^/]*\)\.txt,\1,p' -e 's,^metadata/\([^/][^/]*\)\.yml,\1,p'`;
else
git fetch https://gitlab.com/fdroid/fdroiddata.git;
export head=FETCH_HEAD;
fi
- export appids=`git diff --name-only --diff-filter=d $head...HEAD
| sed -n -e 's,^metadata/\([^/][^/]*\)\.txt,\1,p' -e 's,^metadata/\([^/][^/]*\)\.yml,\1,p'`
- echo $appids | grep '\w' || exit 0
- fdroid build --verbose --server --stop --no-tarball --latest $appids
- find unsigned -maxdepth 0 -empty -exec exit 0 \;
- cd ~/libscout
- java -jar build/LibScout.jar -o match -a lib/android-23.jar -p profiles
-j $CI_PROJECT_DIR/json
-s $CI_PROJECT_DIR/stats
-d $CI_PROJECT_DIR/libscout-logs
$CI_PROJECT_DIR/unsigned
- for f in $CI_PROJECT_DIR/libscout-logs/*.log; do printf "\n\n$f\n"; cut -b43-160 $f; done
- for f in `find $CI_PROJECT_DIR/json -name \*.json`; do cat $f | python3 -m json.tool; done
after_script:
- test -d builder || exit 0
- cd builder
- vagrant destroy --force