From 59e75d54fff2d1662e015c623232dd2ca1209f63 Mon Sep 17 00:00:00 2001 From: Stephen Seo Date: Mon, 29 Jan 2024 13:33:49 +0900 Subject: [PATCH] Add forgejo action to make releases for tags --- .forgejo/workflows/tag_release_pkg.yaml | 70 +++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 .forgejo/workflows/tag_release_pkg.yaml diff --git a/.forgejo/workflows/tag_release_pkg.yaml b/.forgejo/workflows/tag_release_pkg.yaml new file mode 100644 index 0000000..f587d35 --- /dev/null +++ b/.forgejo/workflows/tag_release_pkg.yaml @@ -0,0 +1,70 @@ +name: Create releases with ArchLinux pkg +on: + push: + branches: + - '*' + +jobs: + check-and-build-and-release: + runs-on: any_archLinux + steps: + - name: Get tags + run: | + curl --fail-with-body -X 'GET' \ + 'https://git.seodisparate.com/api/v1/repos/stephenseo/obs-studio-plugin-unix-socket-control/tags' \ + -H 'accept: application/json' -o tags.json -w '%output{header_count}%header{x-total-count}' 2>/dev/null \ + - name: Fetch repo + run: git clone https://git.seodisparate.com/stephenseo/obs-studio-plugin-unix-socket-control.git obs_usc + - name: Fetch PKGBUILD + run: pushd obs_usc >&/dev/null && git checkout main && popd >&/dev/null && cp obs_usc/archLinuxPackaging/PKGBUILD ./ + - name: Check tags and build per release + run: | + SAVED_DIR="$(pwd)" + + for ((i=0; i<$(cat ./header_count); ++i)); do + echo "$(jq ".[$i].name" < ./tags.json | tr -d '"')" >> tempList + done + + sort -V < tempList > versionList + + for ((i=0; i<$(cat ./header_count); ++i)); do + cd "$SAVED_DIR" + + TAG_NAME="$(sed -n "$((i+1))p" ./versionList)" + + curl -X 'GET' "https://git.seodisparate.com/api/v1/repos/stephenseo/obs-studio-plugin-unix-socket-control/releases/tags/${TAG_NAME}" -H 'accept: application/json' -w '%output{http_code}%{http_code}' >&/dev/null + + if [[ $(cat ./http_code) != "404" ]]; then + continue + fi + + echo "Trying to build and release \"$TAG_NAME\"..." + + mkdir -p "build_${TAG_NAME}" || continue + cp ./PKGBUILD "build_${TAG_NAME}/" || continue + sed -i "s/^pkgver=.*\$/pkgver=${TAG_NAME}/" "build_${TAG_NAME}/PKGBUILD" || continue + sed -i 's/^pkgrel=.*$/pkgrel=1/' "build_${TAG_NAME}/PKGBUILD" || continue + sed -i 's/^sha256sums=.*$/sha256sums=("SKIP")/' "build_${TAG_NAME}/PKGBUILD" || continue + + cd "build_${TAG_NAME}" || continue + + makepkg || continue + + curl --fail-with-body -X 'POST' \ + "https://git.seodisparate.com/api/v1/repos/stephenseo/obs-studio-plugin-unix-socket-control/releases" \ + -H 'accept: application/json' \ + -H "Authorization: token ${GITHUB_TOKEN}" \ + -H 'Content-Type: application/json' \ + -d "{ + \"name\": \"OBS Plugin Unix Socket Control version ${TAG_NAME}\", + \"body\": \"\", + \"tag_name\": \"${TAG_NAME}\" + }" > release_response.json || continue + + curl --fail-with-body -X 'POST' \ + "https://git.seodisparate.com/api/v1/repos/stephenseo/obs-studio-plugin-unix-socket-control/releases/$(jq .id < release_response.json)/assets" \ + -H 'accept: application/json' \ + -H "Authorization: token ${GITHUB_TOKEN}" \ + -H 'Content-Type: multipart/form-data' \ + -F "attachment=@obs-studio-plugin-unix-socket-control-${TAG_NAME}-1-x86_64.pkg.tar.zst;type=application/zstd" > release_asset.json || continue + done