Factory/.gitea/workflows/pr_project.yaml
Nicolas Belouin cf3153e074 Sync metadata, revamp PR jobs
Signed-off-by: Nicolas Belouin <nicolas.belouin@suse.com>
(cherry picked from commit d6d501ad99137d3d17d3950e48ea768f0c0848d6d48fbb0f3cf05769ea7285c0)
(cherry picked from commit 4d824b71cc20b0ab2b5292d78ac8d79c3046b48fa5b70a1c805252f32e491827)
(cherry picked from commit 0d3c83fca159371618bee443a192b3b78adc5465ace6a457e5100a0ca334e1d0)
(cherry picked from commit 5a73d61002b63c37b7c204a1d01bf712e892fee5bbcc41e83635c4b633215fa3)
(cherry picked from commit 34687fb5e96509bcd109122a5b4ea3dac33b1a7d0190a41ff7aa8fa61be968e3)
(cherry picked from commit 4a99805fde33bf70d8826d050e3eb8e1403dc3dd1feae7d5c08692e03c889317)
(cherry picked from commit 331f08255c04109ba40a9ee6c1cfe95f6e4202c734c33a6c818f70a3bd395171)
(cherry picked from commit 3dea69443d4b33dd453537e2ca5bd6b11bfbb58c818bca2f3b5095e5a7a8bc3e)
(cherry picked from commit d97e434fcef181dcfce05e1a633c1bd802ca369820cfb4fbfeac716cc7b4eea3)
(cherry picked from commit 9e41ee25d9dc356caf7484e62dc447402b4c235a454d4004709dfd7975d439a4)
(cherry picked from commit 8f20b3433e0a9f9a3222e561ecd43462828a6a40c76c2b957e4cd75a393b04d7)
2025-02-24 16:00:18 +01:00

62 lines
2.3 KiB
YAML

name: Build PR in OBS
on:
pull_request_target:
types:
- opened
- reopened
- synchronize
- closed
branches-ignore:
- "devel"
concurrency:
group: ${{ gitea.workflow }}-${{ gitea.ref }}
cancel-in-progress: true
jobs:
sync-pr-project:
name: "Build PR in OBS"
runs-on: tumbleweed
steps:
- name: Setup OSC
run: |
zypper in -y python3-jinja2
mkdir -p ~/.config/osc
cat >~/.config/osc/oscrc <<'EOF'
[general]
apiurl = https://api.opensuse.org
[https://api.opensuse.org]
user=${{ vars.OBS_USERNAME }}
pass=${{ secrets.OBS_PASSWORD }}
EOF
# Waiting on PR to get merged for support in upstream action/checkout action
- uses: 'https://github.com/yangskyboxlabs/action-checkout@sha256'
name: Checkout repository
with:
object-format: 'sha256'
- name: "[if PR is closed] Delete project in OBS"
run: |
if [ "${{ gitea.event.action }}" = "closed" ]; then
PROJECT="$(grep PROJECT .obs/common.py | sed 's/PROJECT = "\(.*\)"/\1/')"
osc rdelete -f -r -m "PR closed" "${PROJECT}:Staging:PR-${{ gitea.event.number }}"
fi
- name: "Setup PR project in OBS"
env:
SCM_URL: ${{ gitea.event.pull_request.head.repo.clone_url }}#${{ gitea.head_ref }}
run: |
if [ "${{ gitea.event.action }}" != "closed" ]; then
PROJECT="$(grep PROJECT .obs/common.py | sed 's/PROJECT = "\(.*\)"/\1/')"
python3 .obs/render_meta.py --pr ${{ gitea.event.number }} --scm-url "${SCM_URL}" | osc meta prj "${PROJECT}:Staging:PR-${{ gitea.event.number }}" -F -
echo "Project created ${PROJECT}:Staging:PR-${{ gitea.event.number }}"
echo "Follow build at: https://build.opensuse.org/project/monitor/${PROJECT}:Staging:PR-${{ gitea.event.number }}"
fi
- env:
GIT_SHA: ${{ gitea.event.pull_request.head.sha }}
name: "Wait for OBS to build the project"
run: |
if [ "${{ gitea.event.action }}" != "closed" ]; then
PROJECT="$(grep PROJECT .obs/common.py | sed 's/PROJECT = "\(.*\)"/\1/')"
export OBS_PROJECT="${PROJECT}:Staging:PR-${{ gitea.event.number }}"
python3 .obs/wait_obs.py
fi