@@ -5,8 +5,6 @@ name: Update OBS Packages
55on :
66 workflow_call :
77 secrets :
8- OBS_USER :
9- required : true
108 OBS_PASSWORD :
119 required : true
1210
2725 type : string
2826
2927jobs :
30- update_staging_package :
31- # do not run in forks which do not set the OBS_PROJECT variable ,
32- # for the "release" branch or a git tag use the OBS_PROJECT_RELEASE variable
33- if : vars.OBS_PROJECT != '' || (( github.ref_name == 'release' || github.ref_type == 'tag') && vars.OBS_PROJECT_RELEASE != '')
28+ update_obs_package :
29+ # do not run in forks which do not set the OBS_PROJECTS and OBS_USER variables ,
30+ # or the mapping for the current branch is missing
31+ if : vars.OBS_PROJECTS && fromJson(vars.OBS_PROJECTS)[ github.ref_name] && vars.OBS_USER
3432
3533 runs-on : ubuntu-latest
3634
3735 container :
3836 image : registry.opensuse.org/opensuse/tumbleweed:latest
3937
4038 steps :
41- - name : Select OBS project
42- id : obs_project
43- run : |-
44- if [ "${{ github.ref_name }}" = "release" -o "${{ github.ref_type }}" = "tag" ]; then
45- echo "OBS_PROJECT=${{ vars.OBS_PROJECT_RELEASE }}" >> "$GITHUB_OUTPUT"
46- echo "OBS project: ${{ vars.OBS_PROJECT_RELEASE }}"
47- else
48- echo "OBS_PROJECT=${{ vars.OBS_PROJECT }}" >> "$GITHUB_OUTPUT"
49- echo "OBS project: ${{ vars.OBS_PROJECT }}"
50- fi
51-
5239 - name : Configure and refresh repositories
5340 # disable unused repositories to have a faster refresh
5441 run : zypper modifyrepo -d repo-non-oss repo-openh264 repo-update && zypper ref
@@ -73,54 +60,45 @@ jobs:
7360 - name : Configure osc
7461 run : .github/workflows/configure_osc.sh
7562 env :
76- OBS_USER : ${{ secrets .OBS_USER }}
63+ OBS_USER : ${{ vars .OBS_USER }}
7764 OBS_PASSWORD : ${{ secrets.OBS_PASSWORD }}
7865
79- - name : Checkout ${{ steps.obs_project.outputs.OBS_PROJECT }} ${{ inputs.package_name }}
80- run : osc co ${{ steps.obs_project.outputs.OBS_PROJECT }} ${{ inputs.package_name }}
66+ - name : Checkout ${{ inputs.package_name }} from ${{ fromJson(vars.OBS_PROJECTS)[github.ref_name] }}
67+ run : osc co ${{ fromJson(vars.OBS_PROJECTS)[github.ref_name] }} ${{ inputs.package_name }}
8168
8269 - name : Configure git
8370 run : git config --global --add safe.directory "$GITHUB_WORKSPACE"
8471
8572 - name : Update service revision
8673 # only when a tag has been pushed, or "release" branch updated
87- if : github.ref_type == 'tag' || github.ref_name == 'release '
74+ if : inputs.service_file != ' '
8875 run : |-
8976 echo "Updating revision to \"${{ github.ref_name }}\""
90- sed -i -e 's#<param name="revision">.*</param>#<param name="revision">${{ github.ref_name }}</param>#' _service
91- working-directory : ./${{ steps.obs_project.outputs.OBS_PROJECT }}/${{ inputs.package_name }}
77+ sed -i -e 's#<param name="revision">.*</param>#<param name="revision">${{ github.ref_name }}</param>#' ${{ inputs.service_file }}
9278
9379 - name : Copy optional service file
9480 # patch the URL in the file so it works also from forks, forks also by
9581 # default do not inherit the tags so remove the version format option if
9682 # no tag is present
9783 if : inputs.service_file != ''
9884 run : |
99- sed -e 's#<param name="url">.*</param>#<param name="url">https://github.com/${{ github.repository }}.git</param>#' ${{ inputs.service_file }} > ./${{ steps.obs_project.outputs.OBS_PROJECT }}/${{ inputs.package_name }}/_service
100- if [ -z "$(git tag -l)" ]; then sed -i -e 's#<param name="versionformat">.*</param>##' ./${{ steps.obs_project.outputs.OBS_PROJECT }}/${{ inputs.package_name }}/_service; fi
85+ sed -e 's#<param name="url">.*</param>#<param name="url">https://github.com/${{ github.repository }}.git</param>#' ${{ inputs.service_file }} > ./${{ fromJson(vars.OBS_PROJECTS)[github.ref_name] }}/${{ inputs.package_name }}/_service
86+ if [ -z "$(git tag -l)" ]; then sed -i -e 's#<param name="versionformat">.*</param>##' ./${{ fromJson(vars.OBS_PROJECTS)[github.ref_name] }}/${{ inputs.package_name }}/_service; fi
10187
10288 - name : Run services
103- run : osc service manualrun
104- working-directory : ./${{ steps.obs_project.outputs.OBS_PROJECT }}/${{ inputs.package_name }}
105-
106- - name : Cleanup
107- # sometimes the "osc service" run does not cleanup properly all
108- # downloaded NPM package tarballs and they are accidentally added to the
109- # OBS package, so delete any TGZ files present
110- run : rm -vf *.tgz
111- working-directory : ./${{ steps.obs_project.outputs.OBS_PROJECT }}/${{ inputs.package_name }}
89+ run : |
90+ osc service manualrun
91+ # sometimes the "osc service" run does not cleanup properly all
92+ # downloaded NPM package tarballs and they are accidentally added to the
93+ # OBS package, so delete any TGZ files present
94+ rm -vf *.tgz
95+ working-directory : ./${{ fromJson(vars.OBS_PROJECTS)[github.ref_name] }}/${{ inputs.package_name }}
11296
11397 - name : Check status
11498 run : osc addremove && osc diff && osc status
115- working-directory : ./${{ steps.obs_project.outputs.OBS_PROJECT }}/${{ inputs.package_name }}
99+ working-directory : ./${{ fromJson(vars.OBS_PROJECTS)[github.ref_name] }}/${{ inputs.package_name }}
116100
117- - name : Commit ${{ inputs.package_name }} to ${{ steps.obs_project.outputs.OBS_PROJECT }}
101+ - name : Commit ${{ inputs.package_name }} to ${{ fromJson(vars.OBS_PROJECTS)[github.ref_name] }}
118102 run : |-
119103 osc commit -m "Updated to $(sed -e '/^version:/!d' -e 's/version: *\(.*\)/\1/' agama.obsinfo) ($(sed -e '/^commit:/!d' -e 's/commit: *\(.*\)/\1/' agama.obsinfo))"
120- working-directory : ./${{ steps.obs_project.outputs.OBS_PROJECT }}/${{ inputs.package_name }}
121-
122- - name : Submit the package
123- # only when a tag has been pushed
124- if : github.ref_type == 'tag'
125- run : osc sr --yes -m "Releasing version ${{ github.ref_name }}"
126- working-directory : ./${{ steps.obs_project.outputs.OBS_PROJECT }}/${{ inputs.package_name }}
104+ working-directory : ./${{ fromJson(vars.OBS_PROJECTS)[github.ref_name] }}/${{ inputs.package_name }}
0 commit comments