Compare commits
29 Commits
Author | SHA1 | Date |
---|---|---|
|
93fe71a1ed | |
|
6cc1e0748f | |
|
10d765d795 | |
|
947484cdc6 | |
|
356f7902bc | |
|
43544bc4c8 | |
|
4fd151c68e | |
|
8136b69e89 | |
|
1ae65df20a | |
|
7632e575d2 | |
|
e5009d88dc | |
|
2f9e713276 | |
|
8c91ee0b22 | |
|
6617f1cfe3 | |
|
8aa397b796 | |
|
159fa9f4fe | |
|
ed3b85289a | |
|
ce2d244067 | |
|
e23ba68fa9 | |
|
bc91bb292e | |
|
d191affdec | |
|
2098898629 | |
|
b9b3c25495 | |
|
ea403782ba | |
|
84f7d97e0f | |
|
d6a2a115dc | |
|
de8f765a93 | |
|
f3cd864872 | |
|
dbb49dac3b |
57
.cirrus.yml
57
.cirrus.yml
|
@ -1,25 +1,27 @@
|
|||
env:
|
||||
IMAGE_TAG: 36
|
||||
IMAGE_TAG: 39
|
||||
GITHUB_SERVER_URL: "https://github.com"
|
||||
CIRRUS_SHELL: bash
|
||||
GH_TOKEN: ENCRYPTED[558ab3342d6dc01817f2cd5c808c1c84f084f8bc991125b8b309e78db686cdbf16e3784200f025ac8b7e8801222e6114]
|
||||
IMAGE_SUFFIX: "c20240227t125812z-f39f38d13"
|
||||
FEDORA_AARCH64_AMI: "fedora-podman-aws-arm64-${IMAGE_SUFFIX}"
|
||||
|
||||
aws_credentials: ENCRYPTED[fe4aa704cf722afa328adce659449b222a8a34d7126a1ff70bb94ef7f5de403d9bf7fc592140dadb5201d26d1fb82fac]
|
||||
|
||||
build_task:
|
||||
alias: 'build'
|
||||
only_if: $CIRRUS_BRANCH == 'main' || $CIRRUS_CRON == 'hourly'
|
||||
only_if: $CIRRUS_BRANCH == 'main' && $CIRRUS_PR == "" && $CIRRUS_TAG == ""
|
||||
execution_lock: podman-wsl-fedora-arm-serial
|
||||
auto_cancellation: true
|
||||
compute_engine_instance:
|
||||
image_project: rocky-linux-cloud
|
||||
image: family/rocky-linux-9-arm64
|
||||
platform: linux
|
||||
architecture: arm64
|
||||
cpu: 2
|
||||
memory: 4G
|
||||
disk: 100
|
||||
ec2_instance: &standard_build_ec2_aarch64
|
||||
image: ${FEDORA_AARCH64_AMI}
|
||||
type: "t4g.xlarge"
|
||||
region: us-east-1
|
||||
architecture: arm64
|
||||
setup_script: |
|
||||
dnf install 'dnf-command(config-manager)'
|
||||
dnf config-manager --add-repo https://cli.github.com/packages/rpm/gh-cli.repo
|
||||
dnf -y install gh git podman
|
||||
dnf -y install gh git podman golang
|
||||
get_script: |
|
||||
set +o verbose
|
||||
date >> changes
|
||||
|
@ -27,7 +29,7 @@ build_task:
|
|||
imageDigest=`podman image inspect docker.io/library/fedora:$IMAGE_TAG --format {{.Digest}}`
|
||||
echo $imageDigest > lastimage
|
||||
echo "Fetching $GITHUB_SERVER_URL/$CIRRUS_REPO_FULL_NAME/releases/latest/download/lastimage"
|
||||
lastImage=`curl -L "$GITHUB_SERVER_URL/$CIRRUS_REPO_FULL_NAME/releases/latest/download/lastimage"`
|
||||
lastImage=`curl --retry 5 --retry-delay 8 --retry-all-errors -L "$GITHUB_SERVER_URL/$CIRRUS_REPO_FULL_NAME/releases/latest/download/lastimage"`
|
||||
echo "Digest: $imageDigest"
|
||||
echo "Last: $lastImage"
|
||||
if [ "$lastImage" != "$imageDigest" ]; then
|
||||
|
@ -42,7 +44,8 @@ build_task:
|
|||
exit
|
||||
fi
|
||||
echo "Reusing cached image"
|
||||
curl -L $GITHUB_SERVER_URL/$CIRRUS_REPO_FULL_NAME/releases/latest/download/rootfs.tar.xz --output rootfs.tar.xz
|
||||
curl --retry 5 --retry-delay 8 --retry-all-errors -L $GITHUB_SERVER_URL/$CIRRUS_REPO_FULL_NAME/releases/latest/download/rootfs.tar.xz --output rootfs.tar.xz
|
||||
echo "Extracting rootfs.."
|
||||
unxz rootfs.tar.xz
|
||||
podman import rootfs.tar fedora-update
|
||||
podman create --name fedora-update fedora-update sleep 7200
|
||||
|
@ -58,7 +61,7 @@ build_task:
|
|||
set +o verbose
|
||||
podman start fedora-update
|
||||
podman exec fedora-update sh -c 'rpm -qa --qf "%-30{name} %{version}-%{release}\n" | sort' > pre-update
|
||||
podman exec fedora-update sh -c 'dnf update -y && dnf -y install podman podman-docker procps-ng openssh-server net-tools && dnf clean all && rm -rf /var/cache/yum'
|
||||
podman exec -it fedora-update sh -c 'dnf update -y && dnf -y install podman podman-docker procps-ng openssh-server net-tools iproute dhcp-client crun-wasm wasmedge-rt && dnf clean all && rm -rf /var/cache/yum'
|
||||
podman exec fedora-update sh -c 'rpm -qa --qf "%-30{name} %{version}-%{release}\n" | sort' > post-update
|
||||
|
||||
diff -u pre-update post-update > delta || delta=1
|
||||
|
@ -69,22 +72,39 @@ build_task:
|
|||
echo "\`\`\`" >> changes
|
||||
echo "PACKAGE_CHANGED=1" >> $CIRRUS_ENV
|
||||
fi
|
||||
gvproxy_vm_script: |
|
||||
set +o verbose
|
||||
if [ "$IMAGE_CHANGED" != "1" ] && [ "$PACKAGE_CHANGED" != "1" ]; then
|
||||
echo "Skipping gvproxy vm, no updates required"
|
||||
exit
|
||||
fi
|
||||
git clone https://github.com/containers/gvisor-tap-vsock
|
||||
cd gvisor-tap-vsock
|
||||
git checkout v0.7.3
|
||||
HOME=/root make vm
|
||||
podman cp bin/gvforwarder fedora-update:/usr/local/bin/vm
|
||||
cd ..
|
||||
archive_script: |
|
||||
set +o verbose
|
||||
if [ "$IMAGE_CHANGED" != "1" ] && [ "$PACKAGE_CHANGED" != "1" ]; then
|
||||
echo "Skipping archive, no updates required"
|
||||
exit
|
||||
fi
|
||||
|
||||
echo "Creating rootfs.tar from container..."
|
||||
podman export --output rootfs.tar fedora-update
|
||||
# GNu tar has a corruption bugs with --delete, so use bsdtar to filter instead
|
||||
echo "Filtering rootfs.tar using container..."
|
||||
podman run -v .:/mnt --security-opt label=disable fedora sh -c 'dnf -y install bsdtar && bsdtar -cf /mnt/new.tar --exclude etc/resolv.conf @/mnt/rootfs.tar'
|
||||
mv new.tar rootfs.tar
|
||||
mkdir -p etc; touch etc/resolv.conf
|
||||
tar rf rootfs.tar --mode=644 --group=root --owner=root etc/resolv.conf
|
||||
xz rootfs.tar
|
||||
echo "Compressing rootfs.tar.."
|
||||
xz --verbose rootfs.tar
|
||||
sha256sum rootfs.tar.xz > shasums
|
||||
echo "Done"
|
||||
ls -l rootfs.tar.xz
|
||||
release_script: |
|
||||
set +o verbose
|
||||
if [ "$IMAGE_CHANGED" != "1" ] && [ "$PACKAGE_CHANGED" != "1" ]; then
|
||||
echo "Skipping release, no updates required"
|
||||
exit
|
||||
|
@ -98,7 +118,8 @@ build_task:
|
|||
fi
|
||||
NEXT_RELEASE="v${IMAGE_TAG}.0.$((NEXT_RELEASE+1))"
|
||||
echo $NEXT_RELEASE > version
|
||||
echo "Releasing $NEXT_RELEASE"
|
||||
set -o verbose
|
||||
gh release create $NEXT_RELEASE -d -F changes
|
||||
gh release upload $NEXT_RELEASE lastimage rootfs.tar.xz version
|
||||
gh release create $NEXT_RELEASE -t $NEXT_RELEASE -d -F changes
|
||||
gh release upload $NEXT_RELEASE lastimage rootfs.tar.xz shasums version
|
||||
gh release edit $NEXT_RELEASE --draft=false
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
on:
|
||||
check_suite:
|
||||
type: ['completed']
|
||||
|
||||
name: Email about Cirrus CI failures
|
||||
jobs:
|
||||
continue:
|
||||
name: After Cirrus CI Failure
|
||||
if: >-
|
||||
github.event.check_suite.app.name == 'Cirrus CI'
|
||||
&& github.event.check_suite.conclusion != 'success'
|
||||
&& github.event.check_suite.conclusion != 'cancelled'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: octokit/request-action@v2.x
|
||||
id: get_failed_check_run
|
||||
with:
|
||||
route: GET /repos/${{ github.repository }}/check-suites/${{ github.event.check_suite.id }}/check-runs?status=completed
|
||||
mediaType: '{"previews": ["antiope"]}'
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- run: |
|
||||
echo "Cirrus CI ${{ github.event.check_suite.conclusion }} on ${{ github.event.check_suite.head_branch }} branch!"
|
||||
echo "SHA ${{ github.event.check_suite.head_sha }}"
|
||||
echo $MESSAGE
|
||||
echo "##[error]See $CHECK_RUN_URL for details" && false
|
||||
env:
|
||||
CHECK_RUN_URL: ${{ fromJson(steps.get_failed_check_run.outputs.data).check_runs[0].html_url }}
|
Loading…
Reference in New Issue