From a8b3f4c64d322e3610e4a8709ef54b75cd96df17 Mon Sep 17 00:00:00 2001 From: Antoine Martin Date: Thu, 22 Aug 2024 13:31:32 -0400 Subject: [PATCH] forgejo-ci: add deploy flows --- .forgejo/bin/deploy.sh | 15 +++++ .forgejo/workflows/release-build.yaml | 79 +++++++++++++++++++++++++++ 2 files changed, 94 insertions(+) create mode 100755 .forgejo/bin/deploy.sh create mode 100644 .forgejo/workflows/release-build.yaml diff --git a/.forgejo/bin/deploy.sh b/.forgejo/bin/deploy.sh new file mode 100755 index 0000000..b9dee56 --- /dev/null +++ b/.forgejo/bin/deploy.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +# shellcheck disable=SC3040 +set -eu -o pipefail + +readonly REPOS="backports user" +readonly QUBES_REL=$( echo $GITHUB_REF_NAME | awk -F '-' '{print $2}') +readonly TARGET_REPO=$CI_RPM_REPO + +readonly group="qubes/$QUBES_REL" +readonly rpm=$(find . -name 'qubes-template-*.rpm') + +echo "Sending $rpm to $TARGET_REPO/$group/upload" +curl -s --user $FORGE_REPO_USER:$FORGE_REPO_TOKEN --upload-file $rpm $TARGET_REPO/$group/upload + diff --git a/.forgejo/workflows/release-build.yaml b/.forgejo/workflows/release-build.yaml new file mode 100644 index 0000000..c968780 --- /dev/null +++ b/.forgejo/workflows/release-build.yaml @@ -0,0 +1,79 @@ +on: + push: + tags: + - 'alpine*' + +jobs: + release-build: + runs-on: x86_64 + container: + image: alpine:latest + env: + QUBES_REL: r4.2 + DIST: alpine320 + steps: + - name: Environment setup + run: | + apk add rpm wget coreutils eudev e2fsprogs xen doas sudo curl nodejs git alpine-sdk fuse2fs patch findutils grep + cd /etc/apk/keys + curl -JO https://ayakael.net/api/packages/forge/alpine/key + - name: Repo pull + uses: actions/checkout@v4 + with: + fetch-depth: 500 + - name: RPM build + run: | + git clone https://github.com/QubesOS/qubes-builder + mkdir qubes-builder/qubes-src + ln -s $GITHUB_WORKSPACE qubes-builder/qubes-src/builder-alpine + cp builder.conf qubes-builder/. + git clone https://github.com/QubesOS/qubes-linux-template-builder qubes-builder/qubes-src/linux-template-builder + patch -d qubes-builder/qubes-src/linux-template-builder -p1 -i $GITHUB_WORKSPACE/.forgejo/patches/linux-template-builder_use-fuse.patch + echo "%define _arch x86_64" >> qubes-builder/qubes-src/linux-template-builder/templates.spec + echo "4.2.0" > qubes-builder/qubes-src/linux-template-builder/version + sed "s|DISTS_VM :.*|DISTS_VM := $DIST|" -i ./qubes-builder/builder.conf + cd qubes-builder + make linux-template-builder + cp qubes-src/linux-template-builder/rpm/noarch/qubes-template-*.rpm $GITHUB_WORKSPACE/. + - name: Package upload + uses: forgejo/upload-artifact@v3 + with: + name: package + path: qubes-template-*.rpm + release-deploy: + needs: [release-build] + runs-on: x86_64 + container: + image: alpine:latest + env: + CI_RPM_REPO: 'https://ayakael.net/api/packages/forge/rpm' + FORGE_REPO_TOKEN: ${{ secrets.FORGE_REPO_TOKEN }} + FORGE_REPO_USER: ${{ vars.FORGE_REPO_USER }} + steps: + - name: Setting up environment + run: apk add nodejs curl findutils git gawk + - name: Repo pull + uses: actions/checkout@v4 + - name: Package download + uses: forgejo/download-artifact@v3 + - name: Package deployment + run: ${{ github.workspace }}/.forgejo/bin/deploy.sh + release-create: + needs: [release-build] + runs-on: x86_64 + container: + image: node:latest + steps: + - name: Package download + uses: forgejo/download-artifact@v3 + - name: Release creation + uses: actions/forgejo-release@v2.3.1 + with: + direction: upload + url: "https://ayakael.net" + repo: "forge/qubes-builder-alpine" + verbose: true + token: "${{ secrets.FORGE_REPO_TOKEN }}" + release-dir: ./package + release-notes: "For download of template through DNF, please go to https://ayakael.net/forge/-/packages/rpm/qubes-template-alpine320" +