diff --git a/Makefile b/Makefile index 41f593e6..905f9837 100644 --- a/Makefile +++ b/Makefile @@ -11,7 +11,7 @@ VERSION = "build-$(shell date +%F)" all: install: - install -d -m 755 $(DESTDIR)$(bindir) $(DESTDIR)$(pkgdatadir) $(DESTDIR)$(unitdir) $(DESTDIR)$(oscplugindir) $(DESTDIR)$(sysconfdir)/$(package_name) $(DESTDIR)$(grafana_provisioning_dir)/dashboards $(DESTDIR)$(grafana_provisioning_dir)/datasources $(DESTDIR)$(logdir)/$(package_name) $(DESTDIR)$(varlibdir)/osrt-slsa + install -d -m 755 $(DESTDIR)$(bindir) $(DESTDIR)$(pkgdatadir) $(DESTDIR)$(unitdir) $(DESTDIR)$(oscplugindir) $(DESTDIR)$(sysconfdir)/$(package_name) $(DESTDIR)$(grafana_provisioning_dir)/dashboards $(DESTDIR)$(grafana_provisioning_dir)/datasources $(DESTDIR)$(logdir)/$(package_name) $(DESTDIR)$(varlibdir)/osrt-slsa/pkglistgen $(DESTDIR)$(varlibdir)/osrt-slsa/relpkggen for i in $(pkgdata_SCRIPTS); do install -m 755 $$i $(DESTDIR)$(pkgdatadir); done chmod 644 $(DESTDIR)$(pkgdatadir)/osc-*.py for i in $(pkgdata_DATA); do cp -a $$i $(DESTDIR)$(pkgdatadir); done diff --git a/generate-release-packages b/generate-release-packages index 490e310c..713640b7 100755 --- a/generate-release-packages +++ b/generate-release-packages @@ -4,5 +4,17 @@ PROJECT=$1 LOG_DIR="/var/log/openSUSE-release-tools/${PROJECT}" [ ! -d "${LOG_DIR}" ] && mkdir ${LOG_DIR} -date -Is >> ${LOG_DIR}/relpkggen.log +logger() { + date -Is >> ${LOG_DIR}/relpkggen.log + echo "$1" >> ${LOG_DIR}/relpkggen.log +} + +logger "[START] Start relpkgen service" +if pgrep "osrt-pkglistgen"; then + logger "[SKIP] Skip execution due to osrt-pkglistgen service is running" + exit 0 +fi + +logger "[RUNNING] Running osrt-relpkggen" /usr/bin/osrt-pkglistgen -A ${API_URL} update_and_solve -p ${PROJECT} -s target --only-release-packages --force >> ${LOG_DIR}/relpkggen.log 2>&1 +logger "[FINISH] Finish relpkgen service" diff --git a/systemd/osrt-pkglistgen@.service b/systemd/osrt-pkglistgen@.service index 3b8f3e0a..f8de971e 100644 --- a/systemd/osrt-pkglistgen@.service +++ b/systemd/osrt-pkglistgen@.service @@ -6,7 +6,7 @@ User=osrt-slsa SyslogIdentifier=osrt-slsa EnvironmentFile=/etc/openSUSE-release-tools/ibsapi Environment="OSC_CONFIG=/etc/openSUSE-release-tools/oscrc" -WorkingDirectory=/var/lib/osrt-slsa/ +WorkingDirectory=/var/lib/osrt-slsa/pkglistgen ExecStart=/usr/bin/osrt-verify-build-and-generatelists %i [Install] diff --git a/systemd/osrt-pkglistgen@.timer b/systemd/osrt-pkglistgen@.timer new file mode 100644 index 00000000..6854b1d6 --- /dev/null +++ b/systemd/osrt-pkglistgen@.timer @@ -0,0 +1,7 @@ +[Timer] +OnBootSec=240 +OnCalendar=*:0/20 +Unit=osrt-pkglistgen@.service + +[Install] +WantedBy=timers.target diff --git a/systemd/osrt-relpkggen@.service b/systemd/osrt-relpkggen@.service index 622231c3..f72368d2 100644 --- a/systemd/osrt-relpkggen@.service +++ b/systemd/osrt-relpkggen@.service @@ -6,7 +6,7 @@ User=osrt-slsa SyslogIdentifier=osrt-slsa EnvironmentFile=/etc/openSUSE-release-tools/ibsapi Environment="OSC_CONFIG=/etc/openSUSE-release-tools/oscrc" -WorkingDirectory=/var/lib/osrt-slsa/ +WorkingDirectory=/var/lib/osrt-slsa/relpkggen ExecStart=/usr/bin/osrt-generate-release-packages %i RuntimeMaxSec=120 hour diff --git a/verify-build-and-generatelists b/verify-build-and-generatelists index afb3b240..4f83d09b 100755 --- a/verify-build-and-generatelists +++ b/verify-build-and-generatelists @@ -4,62 +4,66 @@ PROJECT=$1 LOG_DIR="/var/log/openSUSE-release-tools/${PROJECT}" [ ! -d "${LOG_DIR}" ] && mkdir ${LOG_DIR} +logger() { + date -Is >> ${LOG_DIR}/pkglistgen.log + echo "$1" >> ${LOG_DIR}/pkglistgen.log +} + polling_repo() { # poll repository every 20min sleep 20m OUTPUT=$(/usr/share/openSUSE-release-tools/verify-repo-built-successful.py -A ${API_URL} -p ${PROJECT} -r standard 2>&1) RETURNCODE=$? if [ ${RETURNCODE} -eq 0 ]; then - REPO_STATUS="Repository is NOT building" + logger "[READY] Repository is NOT building" else case ${OUTPUT} in *"Repository "*" is not yet finished"*) - REPO_STATUS="Repository is building" + logger "[BUILDING] Repository is building" RETURNCODE=3 ;; *"Repository "*" has "*" packages"*) - REPO_STATUS="Repository has package build failed" + logger "[FAILED] Repository has package build failed" RETURNCODE=4 ;; *"Repository "*" has more disabled packages than succeeded"*) - REPO_STATUS="Repository has more disabled packages than succeeded" + logger "[ERROR] Repository has more disabled packages than succeeded" RETURNCODE=5 ;; esac - date -Is >> ${LOG_DIR}/verify-build.log - echo ${REPO_STATUS} >> ${LOG_DIR}/verify-build.log - echo ${OUTPUT} >> ${LOG_DIR}/verify-build.log + logger "${OUTPUT}" fi return ${RETURNCODE} } -while true; do - polling_repo - # Check if repository building - if [ $? -eq 3 ]; then - # Repository is building, waiting it finishes - while true; do - polling_repo - case $? in - 0) - # Stop polling repository results: Repository finished building, run pkglistgen - date -Is >> ${LOG_DIR}/pkglistgen.log - /usr/bin/osrt-pkglistgen -A ${API_URL} --debug update_and_solve -p ${PROJECT} -s target --force >> ${LOG_DIR}/pkglistgen.log 2>&1 - break - ;; - 3) - # Continue polling repository results: Repository is still building +logger "[START] Start pkglistgen service: polling repository results" +polling_repo +# Check if repository building +if [ $? -eq 3 ]; then + # Repository is building, waiting it finishes + while true; do + polling_repo + case $? in + 0) + # Stop polling repository results: Repository finished building + if pgrep "osrt-pkglistgen"; then + logger "[WAITING] Waiting for osrt-relpkggen service finishes" continue - ;; - 4) - # Stop polling repository results: Repository has package build failed - break - ;; - 5) - # Stop polling repository results: Repository has more disabled packages than succeeded - break - ;; - esac - done - fi -done + else + logger"[RUNNING] Running osrt-pkglistgen" + /usr/bin/osrt-pkglistgen -A ${API_URL} --debug update_and_solve -p ${PROJECT} -s target --force >> ${LOG_DIR}/pkglistgen.log 2>&1 + exit $? + fi + ;; + 3) + # Continue polling repository results: Repository is still building + continue + ;; + *) + # Stop polling repository results: Failed polling results + exit 1 + ;; + esac + done +fi +logger "[FINISH] Finish pkglistgen service"