openSUSE-release-tools/gocd/bci.gocd.yaml.erb
Fabian Vogt a983a4ef6a Add BCI repo publishing bot
Unfortunately TTM itself doesn't quite fit here due to the reasons outlined
in the code and the additional checks are not a good fit for adding it into
the go pipeline description, so write yet another OBS publishing bot!

For the initial test runs this is not triggered by timer runs yet.
2023-07-21 10:43:31 +02:00

149 lines
5.0 KiB
Plaintext

format_version: 3
pipelines:
BCI.RelPkgs:
group: BCI
lock_behavior: unlockWhenFinished
timer:
spec: 0 10 * ? * *
only_on_changes: false
materials:
git:
git: https://github.com/openSUSE/openSUSE-release-tools.git
environment_variables:
OSC_CONFIG: /home/go/config/oscrc-staging-bot
stages:
- Create.Release.Packages:
approval: manual
resources:
- repo-checker
tasks:
- script: ./pkglistgen.py -A https://api.opensuse.org update_and_solve -p devel:BCI -s target --only-release-packages --force
Pkglistgen.BCI:
group: BCI
lock_behavior: unlockWhenFinished
environment_variables:
OSC_CONFIG: /home/go/config/oscrc-staging-bot
timer:
spec: 0 10 * ? * *
only_on_changes: false
materials:
git:
git: https://github.com/openSUSE/openSUSE-release-tools.git
stages:
- pkglistgen:
approval:
type: manual
jobs:
BCI_target:
resources:
- repo-checker
tasks:
- script: python3 ./pkglistgen.py -d -A https://api.opensuse.org update_and_solve -p devel:BCI -s target
<% ['SP3', 'SP4', 'SP5'].each do |sp| %>
SLE_BCI_15<%= sp %>.RelPkgs:
group: BCI
lock_behavior: unlockWhenFinished
timer:
spec: 0 10 * ? * *
only_on_changes: false
materials:
git:
git: https://github.com/openSUSE/openSUSE-release-tools.git
environment_variables:
OSC_CONFIG: /home/go/config/oscrc-staging-bot
stages:
- Create.Release.Packages:
approval: manual
resources:
- repo-checker
tasks:
- script: ./pkglistgen.py -A https://api.suse.de update_and_solve -p SUSE:SLE-15-<%= sp %>:Update:BCI -s target --only-release-packages --force
Pkglistgen.SLE_BCI_15<%= sp %>:
group: BCI
lock_behavior: unlockWhenFinished
timer:
spec: 0 10 * ? * *
only_on_changes: false
materials:
repos:
git: git://botmaster.suse.de/suse-repos.git
auto_update: true
destination: repos
whitelist:
- SUSE:SLE-15-<%= sp %>:Update_-_standard.yaml
scripts:
auto_update: true
git: https://github.com/openSUSE/openSUSE-release-tools.git
whitelist:
- DO_NOT_TRIGGER
destination: scripts
environment_variables:
OSC_CONFIG: /home/go/config/oscrc-staging-bot
stages:
- pkglistgen:
approval:
type: manual
jobs:
BCI_target:
resources:
- repo-checker
tasks:
- script: ./scripts/pkglistgen.py -d -A https://api.suse.de update_and_solve -p SUSE:SLE-15-<%= sp %>:Update:BCI -s target
- Expect.Images.To.Finish:
resources:
- staging-bot
tasks:
- script: |
export PYTHONPATH=scripts
./scripts/gocd/verify-repo-built-successful.py -A https://api.suse.de -p SUSE:SLE-15-<%= sp %>:Update:BCI -r images
- Release.Images.to.Product:
approval: manual
roles:
- SLE
environment_variables:
OSC_CONFIG: /home/go/config/oscrc-totest-manager
BCI_TOKEN: '{{SECRET:[opensuse.secrets][BCI_TOKEN]}}'
resources:
- staging-bot
tasks:
# can't use osc command due to https://github.com/openSUSE/osc/issues/1194
- script: |-
SPRJ=SUSE:SLE-15-<%= sp %>:Update:BCI
for arch in aarch64 ppc64le s390x x86_64 ; do
PKG="000product:SLE_BCI-ftp-POOL-$arch"
PRJ="SUSE:Products:SLE-BCI:15-<%= sp %>:$arch"
curl -X POST -H "Authorization: Token $BCI_TOKEN" "https://api.suse.de/trigger/release?project=${SPRJ}&package=${PKG}&targetproject=${PRJ}&targetrepository=images&filter_source_repository=images"
done
for arch in aarch64 ppc64le s390x x86_64 ; do
sleep 600
while (osc -A https://api.suse.de/ api "/build/$PRJ/_result?view=summary&repository=images" | grep "result project" | grep -v 'code="published" state="published">'); do
echo PENDING
sleep 600
done
osc -A https://api.suse.de/ api "/build/$PRJ/_result?view=summary&repository=images" | grep "result project" | grep 'code="published" state="published">' && echo PUBLISHED
done
SLE_BCI_15<%= sp %>.RepoPublisher:
group: BCI
lock_behavior: unlockWhenFinished
materials:
git:
git: https://github.com/openSUSE/openSUSE-release-tools.git
environment_variables:
OSC_CONFIG: /home/go/config/oscrc-totest-manager
BCI_TOKEN: '{{SECRET:[opensuse.secrets][BCI_TOKEN]}}'
stages:
- Run:
approval: manual
resources:
- staging-bot
tasks:
- script: |
export PYTHONPATH=scripts
./scripts/gocd/bci_repo_publish.py -A https://api.suse.de --verbose --debug run "--token=$BCI_TOKEN" 15-<%= sp %>
<% end %>