Ensure that the 'product' repo is configured in the project meta. Unfortunately, since we're checking in the configuration of the staging itself, rather than the parent project's, there are increased changes of some human/tooling error that might drop the repository from the configuration. This will make the job run an endless loop. Also, add a timeout for 180 minutes for the job. It is enough for the product build process, and if it isn't, it's better to cancel and have human eyes looking at it. Signed-off-by: Eugenio Paolantonio <eugenio.paolantonio@suse.com>
90 lines
3.3 KiB
Plaintext
90 lines
3.3 KiB
Plaintext
---
|
|
<% stagings = %w(A B C D E F G H S V Y) -%>
|
|
format_version: 3
|
|
pipelines:
|
|
<% stagings.each do |letter| %>
|
|
SUSE.SLFO.Main.Staging.<%= letter %>:
|
|
environment_variables:
|
|
STAGING_PROJECT: SUSE:SLFO:Main:Staging:<%= letter %>
|
|
STAGING_API: https://api.suse.de
|
|
OSC_CONFIG: /home/go/config/oscrc-staging-bot
|
|
group: SLFO.Stagings
|
|
lock_behavior: unlockWhenFinished
|
|
materials:
|
|
stagings:
|
|
git: git://botmaster.suse.de/suse-repos.git
|
|
auto_update: true
|
|
destination: repos
|
|
whitelist:
|
|
- SUSE:SLFO:Main:Staging:<%= letter %>_-_standard.yaml
|
|
scripts:
|
|
auto_update: true
|
|
git: https://github.com/openSUSE/openSUSE-release-tools.git
|
|
whitelist:
|
|
- DO_NOT_TRIGGER
|
|
destination: scripts
|
|
stages:
|
|
- Checks:
|
|
jobs:
|
|
Check.Build.Succeeds:
|
|
resources:
|
|
- staging-bot
|
|
tasks:
|
|
- script: |-
|
|
export PYTHONPATH=$PWD/scripts
|
|
cd scripts/gocd
|
|
./report-status.py -A $STAGING_API -p $STAGING_PROJECT -n packagelists -r standard -s pending
|
|
./verify-repo-built-successful.py -A $STAGING_API -p $STAGING_PROJECT -r standard
|
|
Repo.Checker:
|
|
environment_variables:
|
|
OSC_CONFIG: /home/go/config/oscrc-staging-bot
|
|
resources:
|
|
- repo-checker
|
|
tasks:
|
|
- script: |-
|
|
./scripts/staging-installcheck.py -A $STAGING_API -p SUSE:SLFO:Main -s $STAGING_PROJECT
|
|
|
|
- Update.000product:
|
|
resources:
|
|
- repo-checker
|
|
tasks:
|
|
- script: |-
|
|
export PYTHONPATH=$PWD/scripts
|
|
cd scripts/gocd
|
|
|
|
if ../pkglistgen.py --debug -A $STAGING_API update_and_solve --engine product_composer --staging $STAGING_PROJECT --force; then
|
|
./report-status.py -A $STAGING_API -p $STAGING_PROJECT -n packagelists -r standard -s success
|
|
else
|
|
./report-status.py -A $STAGING_API -p $STAGING_PROJECT -n packagelists -r standard -s failure
|
|
exit 1
|
|
fi
|
|
|
|
- Build.product:
|
|
timeout: 180
|
|
resources:
|
|
- staging-bot
|
|
tasks:
|
|
- script: |-
|
|
osc -A $STAGING_API api -X POST "/source/$STAGING_PROJECT?cmd=remove_flag&repository=product&flag=build"
|
|
export PYTHONPATH=$PWD/scripts
|
|
while ./scripts/gocd/verify-repo-built-successful.py -A $STAGING_API -p $STAGING_PROJECT -r product; ret=$?; [ ${ret} -ne 0 ]; do
|
|
if [ ${ret} -eq 2 ]; then
|
|
echo "product repository not found. Project configuration issue?" >&2
|
|
exit 1
|
|
fi
|
|
sleep 60
|
|
done
|
|
|
|
- Enable.images.repo:
|
|
resources:
|
|
- staging-bot
|
|
tasks:
|
|
- script: |-
|
|
osc -A $STAGING_API api -X POST "/source/$STAGING_PROJECT?cmd=remove_flag&repository=images&flag=build"
|
|
export PYTHONPATH=$PWD/scripts
|
|
while osc -A $STAGING_API api "/build/$STAGING_PROJECT/_result?view=summary&repository=images" | grep 'dirty=.true.'; do
|
|
sleep 60
|
|
done
|
|
./scripts/gocd/report-status.py -A $STAGING_API -p $STAGING_PROJECT -n images:enabled -r standard -s success
|
|
<% end -%>
|