Skip to content

Release

Release #48

Workflow file for this run

name: Release
on:
workflow_dispatch:
inputs:
version:
description: "Version (SemVer)"
required: true
default: 0.0.0
deployment-aur-gui:
description: "Deployment (AUR, GUI)"
type: boolean
required: true
default: true
deployment-aur-cli:
description: "Deployment (AUR, CLI)"
type: boolean
required: true
default: true
deploy-latest-version:
description: "Deploy to Latest-Version-Repo"
type: boolean
required: true
default: true
deploy-major-version:
description: "Deploy to Major-Version-Repo"
type: boolean
required: true
default: true
env:
CARGO_TERM_COLOR: always
jobs:
update-version:
name: Update version
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v5
with:
fetch-depth: 0
token: ${{ secrets.BOT_TOKEN }}
- name: Install cargo-edit
run: cargo install cargo-edit
- name: Update package version
run: cargo set-version ${{ github.event.inputs.version }}
- name: Upload working directory with current version-number
uses: actions/upload-artifact@v5
with:
name: versioned-build
include-hidden-files: true
path: .
retention-days: 1
build:
name: Build
runs-on: ubuntu-latest
needs: [update-version]
steps:
- name: Download working directory with current version-number
uses: actions/download-artifact@v6
with:
name: versioned-build
path: .
- name: Build binary
run: cargo build --release --all-features
- name: Upload build artifacts
uses: actions/upload-artifact@v5
with:
name: build-artifact
include-hidden-files: true
path: .
retention-days: 1
update-metadata:
name: Update metadata
runs-on: ubuntu-latest
needs: [update-version]
steps:
- name: Download build artifacts
uses: actions/download-artifact@v6
with:
name: versioned-build
- name: Generate tarball from current repo
run: |
VERSION=${{ github.event.inputs.version }}
git config --global user.name 'OpenFoxes Maintenance Bot'
git config --global user.email 'openfoxes@bono-fox.de'
git init
git add .
git commit -m "🔖 Set version number to ${{ github.event.inputs.version }}"
git archive --format=tar.gz -o tiny4linux-${VERSION}.tar.gz HEAD
git archive --format=zip -o tiny4linux-${VERSION}.zip HEAD
- name: Extract major version
id: vars
run: |
VERSION="${{ github.event.inputs.version }}"
echo "major=${VERSION%%.*}" >> $GITHUB_OUTPUT
- name: Update PKGBUILD & SRCINFO for the GUI (Latest-Repo) with new version and SHA
if: ${{ github.event.inputs.deployment-aur-gui == 'true' && github.event.inputs.deploy-latest-version == 'true' }}
run: |
VERSION=${{ github.event.inputs.version }}
sha=$(sha256sum tiny4linux-${VERSION}.tar.gz | cut -d' ' -f1)
cd deployment/gui/aur-major
sed -i "s/^pkgver=.*/pkgver=${VERSION}/" PKGBUILD
sed -i "s/^pkgrel=.*/pkgrel=1/" PKGBUILD
sed -i "s/^sha256sums=.*/sha256sums=('${sha}')/" PKGBUILD
# Write-Permissions for Container-User
chmod -R 777 .
docker run --rm -v $PWD:/pkg archlinux:latest bash -c "
pacman -Sy --noconfirm --needed base-devel shadow &&
useradd -m builder || true &&
chown -R builder:builder /pkg &&
cd /pkg &&
su - builder -c 'cd /pkg && makepkg --printsrcinfo > .SRCINFO'
"
- name: Update PKGBUILD & SRCINFO for the GUI (Major-Repo) with new version and SHA
if: ${{ github.event.inputs.deployment-aur-gui == 'true' && github.event.inputs.deploy-major-version == 'true' }}
run: |
VERSION=${{ github.event.inputs.version }}
MAJOR=${{ steps.vars.outputs.major }}
sha=$(sha256sum tiny4linux-${VERSION}.tar.gz | cut -d' ' -f1)
cd deployment/gui/aur
sed -i "s/^pkgname=.*/pkgname=tiny4linux-gui-v${MAJOR}/" PKGBUILD
sed -i "s/^pkgver=.*/pkgver=${VERSION}/" PKGBUILD
sed -i "s/^pkgrel=.*/pkgrel=1/" PKGBUILD
sed -i "s/^sha256sums=.*/sha256sums=('${sha}')/" PKGBUILD
# Write-Permissions for Container-User
chmod -R 777 .
docker run --rm -v $PWD:/pkg archlinux:latest bash -c "
pacman -Sy --noconfirm --needed base-devel shadow &&
useradd -m builder || true &&
chown -R builder:builder /pkg &&
cd /pkg &&
su - builder -c 'cd /pkg && makepkg --printsrcinfo > .SRCINFO'
"
- name: Update PKGBUILD & SRCINFO for the CLI (Latest-Repo) with new version and SHA
if: ${{ github.event.inputs.deployment-aur-cli == 'true' && github.event.inputs.deploy-latest-version == 'true' }}
run: |
VERSION=${{ github.event.inputs.version }}
sha=$(sha256sum tiny4linux-${VERSION}.tar.gz | cut -d' ' -f1)
cd deployment/cli/aur
sed -i "s/^pkgver=.*/pkgver=${VERSION}/" PKGBUILD
sed -i "s/^pkgrel=.*/pkgrel=1/" PKGBUILD
sed -i "s/^sha256sums=.*/sha256sums=('${sha}')/" PKGBUILD
# Write-Permissions for Container-User
chmod -R 777 .
docker run --rm -v $PWD:/pkg archlinux:latest bash -c "
pacman -Sy --noconfirm --needed base-devel shadow &&
useradd -m builder || true &&
chown -R builder:builder /pkg &&
cd /pkg &&
su - builder -c 'cd /pkg && makepkg --printsrcinfo > .SRCINFO'
"
- name: Update PKGBUILD & SRCINFO for the CLI (Major-Repo) with new version and SHA
if: ${{ github.event.inputs.deployment-aur-cli == 'true' && github.event.inputs.deploy-major-version == 'true' }}
run: |
VERSION=${{ github.event.inputs.version }}
MAJOR=${{ steps.vars.outputs.major }}
sha=$(sha256sum tiny4linux-${VERSION}.tar.gz | cut -d' ' -f1)
cd deployment/cli/aur-major
sed -i "s/^pkgname=.*/pkgname=tiny4linux-cli-v${MAJOR}/" PKGBUILD
sed -i "s/^pkgver=.*/pkgver=${VERSION}/" PKGBUILD
sed -i "s/^pkgrel=.*/pkgrel=1/" PKGBUILD
sed -i "s/^sha256sums=.*/sha256sums=('${sha}')/" PKGBUILD
# Write-Permissions for Container-User
chmod -R 777 .
docker run --rm -v $PWD:/pkg archlinux:latest bash -c "
pacman -Sy --noconfirm --needed base-devel shadow &&
useradd -m builder || true &&
chown -R builder:builder /pkg &&
cd /pkg &&
su - builder -c 'cd /pkg && makepkg --printsrcinfo > .SRCINFO'
"
- name: Upload tarballs and metadata
uses: actions/upload-artifact@v5
with:
name: tarballs
include-hidden-files: true
path: |
tiny4linux-${{ github.event.inputs.version }}.tar.gz
tiny4linux-${{ github.event.inputs.version }}.zip
deployment/gui/aur/PKGBUILD
deployment/gui/aur/.SRCINFO
deployment/gui/aur/LICENSE
deployment/cli/aur/PKGBUILD
deployment/cli/aur/.SRCINFO
deployment/cli/aur/LICENSE
retention-days: 1
add-version-commit:
name: Add version commit
runs-on: ubuntu-latest
needs: [update-version, update-metadata]
steps:
- name: Download working directory with current version-number
uses: actions/download-artifact@v6
with:
name: versioned-build
path: .
- name: Download updated metadata
uses: actions/download-artifact@v6
with:
name: tarballs
path: .
- name: Add a commit
run: |
git config --global user.name 'OpenFoxes Maintenance Bot'
git config --global user.email 'openfoxes@bono-fox.de'
git init
git add .
git commit -m "🔖 Release Tiny4Linux ${{ github.event.inputs.version }}"
git tag v${{ github.event.inputs.version }}
git push -u origin HEAD:main --tags
create-github-release:
name: "Create GitHub release"
runs-on: ubuntu-latest
needs: [build, update-metadata, add-version-commit]
steps:
- name: Download build artifacts
uses: actions/download-artifact@v6
with:
name: build-artifact
path: .
- name: Download metadata
uses: actions/download-artifact@v6
with:
name: tarballs
path: .
- uses: softprops/action-gh-release@v2
with:
token: ${{ secrets.BOT_TOKEN }}
name: Version ${{ github.event.inputs.version }}
tag_name: v${{ github.event.inputs.version }}
files: |
target/release/tiny4linux-gui
target/release/tiny4linux-cli
tiny4linux-${{ github.event.inputs.version }}.tar.gz
tiny4linux-${{ github.event.inputs.version }}.zip
deploy-aur-gui:
name: "Deploy GUI to AUR"
runs-on: ubuntu-latest
if: ${{ github.event.inputs.deployment-aur-gui == 'true' && github.event.inputs.deploy-latest-version == 'true' }}
needs: [create-github-release]
steps:
- name: Setup SSH for AUR
run: |
mkdir -p ~/.ssh
echo "${{ secrets.AUR_SSH_PRIVATE_KEY }}" > ~/.ssh/id_ed25519
chmod 600 ~/.ssh/id_ed25519
ssh-keyscan aur.archlinux.org >> ~/.ssh/known_hosts
- name: Clone AUR repository
run: |
git clone ssh://aur@aur.archlinux.org/tiny4linux-gui.git aur-repo
- name: Download packed tarballs and metadata
uses: actions/download-artifact@v6
with:
name: tarballs
path: aur-repo
- name: Commit & Push to the AUR
working-directory: aur-repo
run: |
cp -a deployment/gui/aur/. .
git config user.name "OpenFoxes Maintenance Bot"
git config user.email "openfoxes@bono-fox.de"
git add PKGBUILD .SRCINFO LICENSE
git commit -m "Update to Version ${{ github.event.inputs.version }}"
git push
deploy-aur-gui-major:
name: "Deploy GUI to AUR (Major-Version Repo)"
runs-on: ubuntu-latest
if: ${{ github.event.inputs.deployment-aur-gui == 'true' && github.event.inputs.deploy-major-version == 'true' }}
needs: [create-github-release]
steps:
- name: Extract major version
id: vars
run: |
VERSION="${{ github.event.inputs.version }}"
echo "major=${VERSION%%.*}" >> $GITHUB_OUTPUT
- name: Setup SSH for AUR
run: |
mkdir -p ~/.ssh
echo "${{ secrets.AUR_SSH_PRIVATE_KEY }}" > ~/.ssh/id_ed25519
chmod 600 ~/.ssh/id_ed25519
ssh-keyscan aur.archlinux.org >> ~/.ssh/known_hosts
- name: Clone AUR repository
run: |
git clone ssh://aur@aur.archlinux.org/tiny4linux-gui-v${{ steps.vars.outputs.major }}.git aur-repo
- name: Download packed tarballs and metadata
uses: actions/download-artifact@v6
with:
name: tarballs
path: aur-repo
- name: Commit & Push to the AUR
working-directory: aur-repo
run: |
cp -a deployment/gui/aur/. .
git config user.name "OpenFoxes Maintenance Bot"
git config user.email "openfoxes@bono-fox.de"
git add PKGBUILD .SRCINFO LICENSE
git commit -m "Update V${{ steps.vars.outputs.major }}-Repo to Version ${{ github.event.inputs.version }}"
git push
deploy-aur-cli:
name: "Deploy CLI to AUR"
runs-on: ubuntu-latest
if: ${{ github.event.inputs.deployment-aur-cli == 'true' && github.event.inputs.deploy-latest-version == 'true' }}
needs: [create-github-release]
steps:
- name: Setup SSH for AUR
run: |
mkdir -p ~/.ssh
echo "${{ secrets.AUR_SSH_PRIVATE_KEY }}" > ~/.ssh/id_ed25519
chmod 600 ~/.ssh/id_ed25519
ssh-keyscan aur.archlinux.org >> ~/.ssh/known_hosts
- name: Clone AUR repository
run: |
git clone ssh://aur@aur.archlinux.org/tiny4linux-cli.git aur-repo
- name: Download packed tarballs and metadata
uses: actions/download-artifact@v6
with:
name: tarballs
path: aur-repo
- name: Commit & Push to the AUR
working-directory: aur-repo
run: |
cp -a deployment/cli/aur/. .
git config user.name "OpenFoxes Maintenance Bot"
git config user.email "openfoxes@bono-fox.de"
git add PKGBUILD .SRCINFO LICENSE
git commit -m "Update to Version ${{ github.event.inputs.version }}"
git push
deploy-aur-cli-major:
name: "Deploy CLI to AUR (Major-Version Repo)"
runs-on: ubuntu-latest
if: ${{ github.event.inputs.deployment-aur-cli == 'true' && github.event.inputs.deploy-major-version == 'true' }}
needs: [create-github-release]
steps:
- name: Extract major version
id: vars
run: |
VERSION="${{ github.event.inputs.version }}"
echo "major=${VERSION%%.*}" >> $GITHUB_OUTPUT
- name: Setup SSH for AUR
run: |
mkdir -p ~/.ssh
echo "${{ secrets.AUR_SSH_PRIVATE_KEY }}" > ~/.ssh/id_ed25519
chmod 600 ~/.ssh/id_ed25519
ssh-keyscan aur.archlinux.org >> ~/.ssh/known_hosts
- name: Clone AUR repository
run: |
git clone ssh://aur@aur.archlinux.org/tiny4linux-cli-v${{ steps.vars.outputs.major }}.git aur-repo
- name: Download packed tarballs and metadata
uses: actions/download-artifact@v6
with:
name: tarballs
path: aur-repo
- name: Commit & Push to the AUR
working-directory: aur-repo
run: |
cp -a deployment/cli/aur/. .
git config user.name "OpenFoxes Maintenance Bot"
git config user.email "openfoxes@bono-fox.de"
git add PKGBUILD .SRCINFO LICENSE
git commit -m "Update V${{ steps.vars.outputs.major }}-Repo to Version ${{ github.event.inputs.version }}"
git push
cleanup:
name: Cleanup
runs-on: ubuntu-latest
needs:
[
deploy-aur-gui,
deploy-aur-cli,
deploy-aur-gui-major,
deploy-aur-cli-major,
]
steps:
- name: Delete artifacts
uses: geekyeggo/delete-artifact@v5
with:
name: |
versioned-build
build-artifact
tarballs