Add GitHub workflow for building the OSTree repository

Also add a script to download and unpack the artifact on my server's
`public_html/`.
This commit is contained in:
Martin Pitt 2020-12-12 19:41:13 +01:00
parent cb9799f779
commit e014da3b3d
2 changed files with 52 additions and 0 deletions

32
.github/workflows/build.yml vendored Normal file
View file

@ -0,0 +1,32 @@
name: build
on:
schedule:
- cron: 0 2 * * 6
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
container:
image: docker.io/fedora:latest
# Fix SELinux for the built OSTree: https://github.com/coreos/rpm-ostree/issues/1943
options: --privileged --security-opt label:disable
steps:
- name: Install dependencies
run: dnf install -y rpm-ostree selinux-policy selinux-policy-targeted policycoreutils
- name: Clone repository
uses: actions/checkout@v2
- name: Build OSTree
run: ./compose.sh
# upload-artifact@v2 has trouble with tens of thousands of files
- name: Create repo tarball
run: tar -czf /var/tmp/repo.tar.gz -C /var/tmp/repo .
- name: Create repository artifact
uses: actions/upload-artifact@v2
with:
name: repository
path: /var/tmp/repo.tar.gz
retention-days: 5

20
github-fetch.sh Executable file
View file

@ -0,0 +1,20 @@
#!/bin/sh
# Download built GitHub OSTree repository artifact and unpack it into a plain directory
set -eux
# download latest repo build
REPO_FINAL="$(dirname $0)/pitti-workstation"
REPO="${REPO_FINAL}.new"
CURL="curl -u token:$(cat ~/.config/github-token) --show-error --fail"
RESPONSE=$($CURL --silent https://api.github.com/repos/martinpitt/ostree-pitti-workstation/actions/artifacts)
ZIP=$(echo "$RESPONSE" | jq --raw-output '.artifacts | map(select(.name == "repository"))[0].archive_download_url')
echo "INFO: Downloading $ZIP ..."
[ -e /tmp/repository.zip ] || $CURL -L -o /tmp/repository.zip "$ZIP"
rm -rf "$REPO"
mkdir -p "$REPO"
unzip -p /tmp/repository.zip | tar -xzC "$REPO"
rm /tmp/repository.zip
[ ! -e "$REPO_FINAL" ] || mv "${REPO_FINAL}" "${REPO_FINAL}.old"
mv "$REPO" "$REPO_FINAL"
rm -rf "${REPO_FINAL}.old"