Skip to content

Commit

Permalink
ci: update base os image during update dependencies workflow
Browse files Browse the repository at this point in the history
This change adds update base os image to the update dependencies
workflow.

Signed-off-by: Austin Vazquez <[email protected]>
  • Loading branch information
austinvazquez committed Jul 15, 2024
1 parent 3ac2aff commit c339a84
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 5 deletions.
13 changes: 8 additions & 5 deletions .github/workflows/update-dependencies.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,14 @@ jobs:
role-session-name: dependency-upload-session
aws-region: ${{ secrets.REGION }}

# This step fetches the latest set of released dependencies from s3 and updates the Makefile to use the same.
- name: update dependencies url
run: |
./bin/update-deps.sh -d ${{ secrets.DEPENDENCY_BUCKET_NAME }}
./bin/update-rootfs.sh -d ${{ secrets.DEPENDENCY_BUCKET_NAME }}
- name: Update Lima dependencies archive for Finch on macOS
run: bash bin/update-deps.sh -d ${{ secrets.DEPENDENCY_BUCKET_NAME }}

- name: Update base OS for Finch on macOS
run: bash bin/update-os-image.sh -d ${{ secrets.DEPENDENCY_BUCKET_NAME }}

- name: Update rootfs for Finch on Windows
run: bash bin/update-rootfs.sh -d ${{ secrets.DEPENDENCY_BUCKET_NAME }}

- name: create PR
uses: peter-evans/create-pull-request@c5a7806660adbe173f04e3e038b0ccdcd758773c # v6.1.0
Expand Down
58 changes: 58 additions & 0 deletions bin/update-os-image.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
#!/usr/bin/env bash

# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0

# A script to update the base os image used for Finch on macOS.
#
# Usage: bash update-os-image.sh -d <S3 bucket>

set -euxo pipefail

CURRENT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd -- "${CURRENT_DIR}/.." && pwd)"

# shellcheck source=/dev/null
source "${PROJECT_ROOT}/bin/utility.sh"

DEPENDENCY_CLOUDFRONT_URL="https://deps.runfinch.com"
AARCH64_FILENAME_PATTERN="Fedora-Cloud-Base-.*\.aarch64-[0-9]+\.qcow2$"
AMD64_FILENAME_PATTERN="Fedora-Cloud-Base-.*\.x86_64-[0-9]+\.qcow2$"

while getopts d: flag
do
case "${flag}" in
d) dependency_bucket=${OPTARG};;
*) echo "Error: unknown flag" && exit 1;;
esac
done

[[ -z "$dependency_bucket" ]] && { echo "Error: dependency bucket not set"; exit 1; }

aarch64_deps=$(find_latest_object_match_from_s3 "${AARCH64_FILENAME_PATTERN}" "${dependency_bucket}")
[[ -z "$aarch64_deps" ]] && { echo "Error: aarch64 dependency not found"; exit 1; }

# Need to pull the shasum of the artifact to store for later verification.
aarch64_deps_shasum_url="${DEPENDENCY_CLOUDFRONT_URL}/${aarch64_deps}.sha512sum"
aarch64_deps_shasum=$(curl -L --fail "${aarch64_deps_shasum_url}")

amd64_deps=$(find_latest_object_match_from_s3 "${AMD64_FILENAME_PATTERN}" "${dependency_bucket}")
[[ -z "$amd64_deps" ]] && { echo "Error: x86_64 dependency not found"; exit 1; }

amd64_deps_shasum_url="${DEPENDENCY_CLOUDFRONT_URL}/${amd64_deps}.sha512sum"
amd64_deps_shasum=$(curl -L --fail "${amd64_deps_shasum_url}")

# Update base os file with latest artifacts and digests
OS_FILE="${PROJECT_ROOT}/deps/full-os.conf"
truncate -s 0 "${OS_FILE}"
{
echo "ARTIFACT_BASE_URL=${DEPENDENCY_CLOUDFRONT_URL}"
echo ""
echo "# From https://dl.fedoraproject.org/pub/fedora/linux/releases/40/Cloud/aarch64/images/"
echo "AARCH64_ARTIFACT=${aarch64_deps}"
echo "AARCH64_512_DIGEST=${aarch64_deps_shasum}"
echo ""
echo "# From https://dl.fedoraproject.org/pub/fedora/linux/releases/40/Cloud/x86_64/images/"
echo "X86_64_ARTIFACT=${amd64_deps}"
echo "X86_64_512_DIGEST=${amd64_deps_shasum}"
} >> "${OS_FILE}"

0 comments on commit c339a84

Please sign in to comment.