diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c8b2dc8..0665056 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -21,6 +21,10 @@ on: description: "Update AUR packages (dcr & dcr-bin)" type: boolean default: false + run_aur_dev: + description: "Update Dev AUR packages (dcr-dev, dcr-dev-bin)" + type: boolean + default: false run_bsd: description: "Build BSD" type: boolean @@ -56,6 +60,7 @@ jobs: outputs: tag: ${{ steps.tag.outputs.value }} version: ${{ steps.tag.outputs.version }} + clean_version: ${{ steps.tag.outputs.clean_version }} prerelease: ${{ steps.tag.outputs.prerelease }} steps: - name: Resolve tag @@ -67,9 +72,11 @@ jobs: TAG="${GITHUB_REF_NAME}" fi VERSION="${TAG#v}" + CLEAN_VERSION="${VERSION%-dev}" [[ "$TAG" == *"-"* ]] && PRERELEASE="true" || PRERELEASE="false" echo "value=${TAG}" >> "$GITHUB_OUTPUT" echo "version=${VERSION}" >> "$GITHUB_OUTPUT" + echo "clean_version=${CLEAN_VERSION}" >> "$GITHUB_OUTPUT" echo "prerelease=${PRERELEASE}" >> "$GITHUB_OUTPUT" # ── Release Notes ────────────────────────────────────────────────────────── @@ -452,8 +459,6 @@ jobs: cp target/release/dcr "$ASSET" echo "BSD_ASSET=${ASSET}" >> "$GITHUB_ENV" - - # --- UPLOAD TARGET --- - name: Upload BSD Asset to Release uses: softprops/action-gh-release@v2 @@ -739,6 +744,240 @@ jobs: git commit -m "dcr-bin ${{ needs.setup.outputs.version }}" git push -u origin master + # ── Arch User Repository (dcr-dev) ──────────────────────────────── + publish-aur-dev: + if: ${{ (github.event_name == 'push' && needs.setup.outputs.prerelease == 'true') || github.event.inputs.run_aur_dev == 'true' }} + needs: [setup] + runs-on: ubuntu-latest + environment: aur + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Derive checksum + id: meta + shell: bash + run: | + set -euo pipefail + SRC_URL="https://github.com/dexoron/dcr/archive/refs/tags/${{ needs.setup.outputs.tag }}.tar.gz" + SHA256="$(curl -fsSL "$SRC_URL" | sha256sum | awk '{print $1}')" + echo "source_url=$SRC_URL" >> "$GITHUB_OUTPUT" + echo "sha256=$SHA256" >> "$GITHUB_OUTPUT" + + - name: Render AUR metadata + shell: bash + run: | + set -euo pipefail + PKGVER_ORIG='${{ needs.setup.outputs.version }}' + PKGVER_CLEAN='${{ needs.setup.outputs.clean_version }}' + SRC_URL='${{ steps.meta.outputs.source_url }}' + SHA256='${{ steps.meta.outputs.sha256 }}' + + mkdir -p packages/aur/dcr-dev + cat > packages/aur/dcr-dev/PKGBUILD < packages/aur/dcr-dev/.SRCINFO < ~/.ssh/aur + chmod 600 ~/.ssh/aur + ssh-keyscan aur.archlinux.org >> ~/.ssh/known_hosts + + export GIT_SSH_COMMAND='ssh -i ~/.ssh/aur -o IdentitiesOnly=yes' + + mkdir -p aur-repo + cd aur-repo + git init + git remote add origin "ssh://aur@aur.archlinux.org/${AUR_PACKAGE}.git" + + git fetch origin master || true + git checkout master || git checkout -b master + + cp ../packages/aur/dcr-dev/PKGBUILD . + cp ../packages/aur/dcr-dev/.SRCINFO . + + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" + + if git rev-parse --verify HEAD >/dev/null 2>&1; then + if git diff --quiet; then + echo "No AUR changes" + exit 0 + fi + fi + + git add PKGBUILD .SRCINFO + git commit -m "dcr-dev ${{ needs.setup.outputs.version }}" + git push -u origin master + + # ── Arch User Repository (dcr-dev-bin) ──────────────────────────── + publish-aur-dev-bin: + if: ${{ (github.event_name == 'push' && needs.setup.outputs.prerelease == 'true') || github.event.inputs.run_aur_dev == 'true' }} + needs: [setup, build-linux] + runs-on: ubuntu-latest + environment: aur + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Derive checksum + id: meta + shell: bash + run: | + set -euo pipefail + BIN_URL="https://github.com/dexoron/dcr/releases/download/${{ needs.setup.outputs.tag }}/dcr-x86_64-unknown-linux-musl-${{ needs.setup.outputs.version }}" + SHA256="$(curl -fsSL "$BIN_URL" | sha256sum | awk '{print $1}')" + echo "bin_url=$BIN_URL" >> "$GITHUB_OUTPUT" + echo "sha256=$SHA256" >> "$GITHUB_OUTPUT" + + - name: Render AUR Metadata + shell: bash + run: | + set -euo pipefail + PKGVER_ORIG='${{ needs.setup.outputs.version }}' + PKGVER_CLEAN='${{ needs.setup.outputs.clean_version }}' + BIN_URL='${{ steps.meta.outputs.bin_url }}' + SHA256='${{ steps.meta.outputs.sha256 }}' + + mkdir -p packages/aur/dcr-dev-bin + cat > packages/aur/dcr-dev-bin/PKGBUILD < packages/aur/dcr-dev-bin/.SRCINFO < ~/.ssh/aur + chmod 600 ~/.ssh/aur + ssh-keyscan aur.archlinux.org >> ~/.ssh/known_hosts + + export GIT_SSH_COMMAND='ssh -i ~/.ssh/aur -o IdentitiesOnly=yes' + + mkdir -p aur-repo + cd aur-repo + git init + git remote add origin "ssh://aur@aur.archlinux.org/${AUR_PACKAGE}.git" + + git fetch origin master || true + git checkout master || git checkout -b master + + cp ../packages/aur/dcr-dev-bin/PKGBUILD . + cp ../packages/aur/dcr-dev-bin/.SRCINFO . + + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" + + if git rev-parse --verify HEAD >/dev/null 2>&1; then + if git diff --quiet; then + echo "No AUR changes" + exit 0 + fi + fi + + git add PKGBUILD .SRCINFO + git commit -m "dcr-dev-bin ${{ needs.setup.outputs.version }}" + git push -u origin master + # ── crates.io ────────────────────────────────────────────────────────────── publish-crates: if: | diff --git a/packaging/aur/dcr-dev-git b/packaging/aur/dcr-dev-git new file mode 160000 index 0000000..93bdce8 --- /dev/null +++ b/packaging/aur/dcr-dev-git @@ -0,0 +1 @@ +Subproject commit 93bdce858b9ae6643efe473d09a01e41bc369c85