Files
build-rpm/action.yml

92 lines
3.3 KiB
YAML

name: Build and Upload RPM
description: "Builds rpm for given spec file and uploads to hydrosaber gitea repository."
inputs:
spec-file-path:
description: "Path to spec file for rpm"
required: true
package-group:
description: "Group repository to upload package to"
default: "f43"
repository-url:
description: "Gitea repository to upload package to"
default: "https://git.hydrosaber.com"
repository-user:
description: "User in repository to upload as"
required: true
repository-user-token:
description: "Token to use with user"
required: true
extra-source-directory:
description: "(Optional) Directory to grab files for sources."
default: ""
runs:
using: "composite"
steps:
- name: Setup workspace
shell: bash
env:
SPEC_FILE_PATH: ${{ inputs.spec-file-path }}
run: |
mkdir -p ./rpmbuild/{RPMS,SPECS}
cp ${SPEC_FILE_PATH} ./rpmbuild/SPECS
- name: Add extra source files
shell: bash
if: "${{ inputs.extra-source-directory != '' }}"
env:
SOURCE_DIRECTORY: ${{ inputs.extra-source-directory }}
run: |
find ${SOURCE_DIRECTORY} -type f -not -name "*\.spec" \
-exec cp {} ./rpmbuild/SOURCES \;
- name: Build RPM
shell: bash
env:
SPEC_FILE_PATH: ${{ inputs.spec-file-path }}
ACTION_ROOT: ${{ gitea.action_path }}
run: |
SPEC_FILE_NAME=$(basename ${SPEC_FILE_PATH})
podman run --rm \
-v ./rpmbuild:/root/rpmbuild:rw,z \
-v ${ACTION_ROOT}/entrypoint.sh:/root/entrypoint.sh:ro,z \
-w /root \
fedora:latest \
/root/entrypoint.sh /root/rpmbuild/SPECS/${SPEC_FILE_NAME}
- name: Upload package
shell: bash
env:
SPEC_FILE_PATH: ${{ inputs.spec-file-path }}
REPOSITORY_URL: ${{ inputs.repository-url }}
PACKAGE_GROUP: ${{ inputs.package-group }}
REPOSITORY_OWNER: ${{ gitea.repository_owner }}
UPLOAD_USER: ${{ inputs.repository-user }}
UPLOAD_USER_TOKEN: ${{ inputs.repository-user-token }}
run: |
PACKAGE_NAME=$(basename -s .spec ${SPEC_FILE_PATH})
echo "Goal package to upload: ${PACKAGE_NAME}"
RPM_PATH="./rpmbuild/RPMS/x86_64"
echo "Searching in ${RPM_PATH}"
ls ${RPM_PATH}
UPLOAD_URL="${REPOSITORY_URL}/api/packages/${REPOSITORY_OWNER}/rpm/${PACKAGE_GROUP}/upload"
echo "Uploading to url: ${UPLOAD_URL}"
REGULAR_PACKAGE=$(find ${RPM_PATH} -maxdepth 1 -type f \( -name "${PACKAGE_NAME}*\.rpm" -a ! -name "*-devel*\.rpm" \) | head -1)
DEVEL_PACKAGE=$(find ${RPM_PATH} -maxdepth 1 -type f -name "${PACKAGE_NAME}-devel*\.rpm" | head -1)
if [[ -n "$REGULAR_PACKAGE" ]]; then
echo "Found regular package at ${REGULAR_PACKAGE}, uploading it."
curl --user ${UPLOAD_USER}:${UPLOAD_USER_TOKEN} \
--upload-file ${REGULAR_PACKAGE} \
${UPLOAD_URL}
else
echo "No regular package found, skipping..."
fi
if [[ -n "$DEVEL_PACKAGE" ]]; then
echo "Found devel package at ${DEVEL_PACKAGE}, uploading it."
curl --user ${UPLOAD_USER}:${UPLOAD_USER_TOKEN} \
--upload-file ${DEVEL_PACKAGE} \
${UPLOAD_URL}
else
echo "No devel package found, skipping..."
fi