Fix PR closed workflow
Signed-off-by: Nicolas Belouin <nicolas.belouin@suse.com>
This commit is contained in:
parent
704eec6875
commit
8f20b3433e
@ -1,4 +1,4 @@
|
|||||||
name: Synchronize Project Config
|
name: Build PR in OBS
|
||||||
on:
|
on:
|
||||||
pull_request_target:
|
pull_request_target:
|
||||||
types:
|
types:
|
||||||
@ -9,11 +9,17 @@ on:
|
|||||||
branches-ignore:
|
branches-ignore:
|
||||||
- "devel"
|
- "devel"
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ gitea.workflow }}-${{ gitea.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
sync-pr-project:
|
sync-pr-project:
|
||||||
|
name: "Build PR in OBS"
|
||||||
runs-on: tumbleweed
|
runs-on: tumbleweed
|
||||||
steps:
|
steps:
|
||||||
- run: |
|
- name: Setup OSC
|
||||||
|
run: |
|
||||||
zypper in -y python3-jinja2
|
zypper in -y python3-jinja2
|
||||||
mkdir -p ~/.config/osc
|
mkdir -p ~/.config/osc
|
||||||
cat >~/.config/osc/oscrc <<'EOF'
|
cat >~/.config/osc/oscrc <<'EOF'
|
||||||
@ -26,22 +32,28 @@ jobs:
|
|||||||
EOF
|
EOF
|
||||||
# Waiting on PR to get merged for support in upstream action/checkout action
|
# Waiting on PR to get merged for support in upstream action/checkout action
|
||||||
- uses: 'https://github.com/yangskyboxlabs/action-checkout@sha256'
|
- uses: 'https://github.com/yangskyboxlabs/action-checkout@sha256'
|
||||||
|
name: Checkout repository
|
||||||
with:
|
with:
|
||||||
object-format: 'sha256'
|
object-format: 'sha256'
|
||||||
- run: |
|
- name: "[if PR is closed] Delete project in OBS"
|
||||||
|
run: |
|
||||||
if [ "${{ gitea.event.action }}" = "closed" ]; then
|
if [ "${{ gitea.event.action }}" = "closed" ]; then
|
||||||
PROJECT="$(grep PROJECT .obs/common.py | sed 's/PROJECT = "\(.*\)"/\1/')"
|
PROJECT="$(grep PROJECT .obs/common.py | sed 's/PROJECT = "\(.*\)"/\1/')"
|
||||||
osc rdelete "${PROJECT}:Staging:PR-${{ gitea.event.number }}"
|
osc rdelete -f -r -m "PR closed" "${PROJECT}:Staging:PR-${{ gitea.event.number }}"
|
||||||
fi
|
fi
|
||||||
- env:
|
- name: "Setup PR project in OBS"
|
||||||
|
env:
|
||||||
SCM_URL: ${{ gitea.event.pull_request.head.repo.clone_url }}#${{ gitea.head_ref }}
|
SCM_URL: ${{ gitea.event.pull_request.head.repo.clone_url }}#${{ gitea.head_ref }}
|
||||||
run: |
|
run: |
|
||||||
if [ "${{ gitea.event.action }}" != "closed" ]; then
|
if [ "${{ gitea.event.action }}" != "closed" ]; then
|
||||||
PROJECT="$(grep PROJECT .obs/common.py | sed 's/PROJECT = "\(.*\)"/\1/')"
|
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 -
|
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
|
fi
|
||||||
- env:
|
- env:
|
||||||
GIT_SHA: ${{ gitea.event.pull_request.head.sha }}
|
GIT_SHA: ${{ gitea.event.pull_request.head.sha }}
|
||||||
|
name: "Wait for OBS to build the project"
|
||||||
run: |
|
run: |
|
||||||
if [ "${{ gitea.event.action }}" != "closed" ]; then
|
if [ "${{ gitea.event.action }}" != "closed" ]; then
|
||||||
PROJECT="$(grep PROJECT .obs/common.py | sed 's/PROJECT = "\(.*\)"/\1/')"
|
PROJECT="$(grep PROJECT .obs/common.py | sed 's/PROJECT = "\(.*\)"/\1/')"
|
||||||
|
@ -9,9 +9,11 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
sync-prjconf:
|
sync-prjconf:
|
||||||
|
name: "Update prjconf in OBS"
|
||||||
runs-on: tumbleweed
|
runs-on: tumbleweed
|
||||||
steps:
|
steps:
|
||||||
- run: |
|
- name: Setup OSC
|
||||||
|
run: |
|
||||||
mkdir -p ~/.config/osc
|
mkdir -p ~/.config/osc
|
||||||
cat >~/.config/osc/oscrc <<'EOF'
|
cat >~/.config/osc/oscrc <<'EOF'
|
||||||
[general]
|
[general]
|
||||||
@ -23,6 +25,7 @@ jobs:
|
|||||||
EOF
|
EOF
|
||||||
# Waiting on PR to get merged for support in upstream action/checkout action
|
# Waiting on PR to get merged for support in upstream action/checkout action
|
||||||
- uses: 'https://github.com/yangskyboxlabs/action-checkout@sha256'
|
- uses: 'https://github.com/yangskyboxlabs/action-checkout@sha256'
|
||||||
|
name: Checkout repository
|
||||||
with:
|
with:
|
||||||
object-format: 'sha256'
|
object-format: 'sha256'
|
||||||
- run: |
|
- run: |
|
||||||
|
@ -12,7 +12,8 @@ jobs:
|
|||||||
sync-prj-meta:
|
sync-prj-meta:
|
||||||
runs-on: tumbleweed
|
runs-on: tumbleweed
|
||||||
steps:
|
steps:
|
||||||
- run: |
|
- name: Setup OSC
|
||||||
|
run: |
|
||||||
zypper in -y python3-jinja2
|
zypper in -y python3-jinja2
|
||||||
mkdir -p ~/.config/osc
|
mkdir -p ~/.config/osc
|
||||||
cat >~/.config/osc/oscrc <<'EOF'
|
cat >~/.config/osc/oscrc <<'EOF'
|
||||||
@ -25,9 +26,11 @@ jobs:
|
|||||||
EOF
|
EOF
|
||||||
# Waiting on PR to get merged for support in upstream action/checkout action
|
# Waiting on PR to get merged for support in upstream action/checkout action
|
||||||
- uses: 'https://github.com/yangskyboxlabs/action-checkout@sha256'
|
- uses: 'https://github.com/yangskyboxlabs/action-checkout@sha256'
|
||||||
|
name: Checkout repository
|
||||||
with:
|
with:
|
||||||
object-format: 'sha256'
|
object-format: 'sha256'
|
||||||
- run: |
|
- name: "Update or create OBS Project"
|
||||||
|
run: |
|
||||||
PROJECT="$(grep PROJECT .obs/common.py | sed 's/PROJECT = "\(.*\)"/\1/')"
|
PROJECT="$(grep PROJECT .obs/common.py | sed 's/PROJECT = "\(.*\)"/\1/')"
|
||||||
set -o pipefail
|
set -o pipefail
|
||||||
if meta="$(osc meta prj "${PROJECT}" 2>/dev/null | sha256sum)"; then
|
if meta="$(osc meta prj "${PROJECT}" 2>/dev/null | sha256sum)"; then
|
||||||
|
15
README.md
15
README.md
@ -5,15 +5,6 @@ Contains the definition of the packages built on OBS for the SUSE Edge Solution
|
|||||||
This repository is linked to an OBS project: <https://build.opensuse.org/project/show/isv:SUSE:Edge:Factory>
|
This repository is linked to an OBS project: <https://build.opensuse.org/project/show/isv:SUSE:Edge:Factory>
|
||||||
Every directory in this repository represents a package in that OBS project, those should be synced automatically from this repository.
|
Every directory in this repository represents a package in that OBS project, those should be synced automatically from this repository.
|
||||||
|
|
||||||
## Adding a package
|
|
||||||
|
|
||||||
To add a package, first create a directory with your package as you intend it in OBS.
|
|
||||||
|
|
||||||
Then run the `.obs/add_package.py` script to create the package in the OBS project and add the required elements to the synchronization workflow.
|
|
||||||
This script is using the `osc` command behind the scenes, so ensure you have it installed and correctly configured, as well as you have the correct permissions to create a new package in the project.
|
|
||||||
|
|
||||||
You will then get asked to push your changes.
|
|
||||||
|
|
||||||
## Testing a fork or a development branch
|
## Testing a fork or a development branch
|
||||||
|
|
||||||
You can create a project in your home space in OBS, use the same prjconf as the one of "isv:SUSE:Edge:Factory", and copy the repositories part of the metadata (adjust self references).
|
You can create a project in your home space in OBS, use the same prjconf as the one of "isv:SUSE:Edge:Factory", and copy the repositories part of the metadata (adjust self references).
|
||||||
@ -23,16 +14,14 @@ Then add a scmsync stanza to your metadata like this (adjust repository path and
|
|||||||
<scmsync>https://src.opensuse.org/suse-edge/Factory#main</scmsync>
|
<scmsync>https://src.opensuse.org/suse-edge/Factory#main</scmsync>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
This is done automatically for any PR filed against this repository.
|
||||||
|
|
||||||
## Cutting a release version branch
|
## Cutting a release version branch
|
||||||
|
|
||||||
1. Do the appropriate git branch command
|
1. Do the appropriate git branch command
|
||||||
2. Change the project path in `.obs/common.py` file (e.g. from `isv:SUSE:Edge:Factory` to `isv:SUSE:Edge:3.2`)
|
2. Change the project path in `.obs/common.py` file (e.g. from `isv:SUSE:Edge:Factory` to `isv:SUSE:Edge:3.2`)
|
||||||
3. Change the branch reference in `.obs/common.py` file (e.g. from `main` to `3.2`)
|
3. Change the branch reference in `.obs/common.py` file (e.g. from `main` to `3.2`)
|
||||||
4. Edit the `.obs/workflows.yml` file to change the references to the correct projects
|
|
||||||
5. Commit those changes to the new branch and push the new branch
|
5. Commit those changes to the new branch and push the new branch
|
||||||
6. Create the base and to-test projects (e.g. `isv:SUSE:Edge:3.2` and `isv:SUSE:Edge:3.2:ToTest`), use the `isv:SUSE:Edge:Factory` projects as example for metadata part
|
|
||||||
7. Use the prjconf of Factory in all those projects
|
|
||||||
8. Run the `.obs/sync_packages.py` script to create all the packages in the base project
|
|
||||||
9. Go take a few cups of coffee/tea/mate/... while waiting for OBS to build everything
|
9. Go take a few cups of coffee/tea/mate/... while waiting for OBS to build everything
|
||||||
10. Once built do an `osc release` of the project for it to be copied over in the `ToTest` section
|
10. Once built do an `osc release` of the project for it to be copied over in the `ToTest` section
|
||||||
11. Hand over to QA to test whatever is in `ToTest`. (You can continue to work on the base branch if needed meanwhile)
|
11. Hand over to QA to test whatever is in `ToTest`. (You can continue to work on the base branch if needed meanwhile)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user