mirror of
https://github.com/flatcar/scripts.git
synced 2025-12-24 10:41:51 +01:00
152 lines
5.0 KiB
YAML
152 lines
5.0 KiB
YAML
name: "Build updated SDK container"
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
source_sdk_version:
|
|
type: string
|
|
required: false
|
|
description: |
|
|
Source SDK container to use. Defaults to version defined in version.txt.
|
|
custom_sdk_version:
|
|
type: string
|
|
required: false
|
|
description: |
|
|
Custom SDK container version to build. Defaults to source SDK w/ "-github-[DATE]" appended.
|
|
|
|
workflow_call:
|
|
outputs:
|
|
sdk_version:
|
|
description: "The version of the SDK container that was built"
|
|
value: ${{ jobs.update_sdk.outputs.sdk_version }}
|
|
inputs:
|
|
source_sdk_version:
|
|
type: string
|
|
required: false
|
|
description: |
|
|
Source SDK container to use. Defaults to version defined in version.txt.
|
|
custom_sdk_version:
|
|
type: string
|
|
required: false
|
|
description: |
|
|
Custom SDK container version to build. Defaults to source SDK w/ "-github-[DATE]" appended, or
|
|
'-github-pr-[PRNUM]-[DATE]' if the build was triggered from a PR.
|
|
|
|
permissions:
|
|
pull-requests: write
|
|
|
|
jobs:
|
|
update_sdk:
|
|
name: "Build an updated SDK container image"
|
|
runs-on:
|
|
- self-hosted
|
|
- ubuntu
|
|
- build
|
|
- x64
|
|
strategy:
|
|
fail-fast: false
|
|
outputs:
|
|
sdk_version: ${{ steps.step4.outputs.sdk_version }}
|
|
defaults:
|
|
run:
|
|
working-directory: scripts
|
|
|
|
steps:
|
|
- name: Prepare machine
|
|
id: step1
|
|
shell: bash
|
|
working-directory: ${{ github.workspace }}
|
|
run: |
|
|
sudo rm /bin/sh
|
|
sudo ln -s /bin/bash /bin/sh
|
|
sudo apt-get install -y ca-certificates curl gnupg lsb-release qemu-user-static git jq openssh-client rsync zstd
|
|
|
|
- name: Set up Docker
|
|
uses: docker/setup-docker-action@v4
|
|
|
|
- uses: actions/checkout@v4
|
|
id: step2
|
|
with:
|
|
path: scripts
|
|
fetch-depth: 0
|
|
|
|
- name: Set environment
|
|
id: step3
|
|
shell: bash
|
|
run: |
|
|
if [ -n "${{ github.event.inputs.source_sdk_version }}" ] ; then
|
|
echo "SOURCE_SDK_VERSION=${{ github.event.inputs.source_sdk_version }}" >> $GITHUB_ENV
|
|
fi
|
|
if [ -n "${{ github.event.inputs.custom_sdk_version }}" ] ; then
|
|
echo "CUSTOM_SDK_VERSION=${{ github.event.inputs.custom_sdk_version }}" >> $GITHUB_ENV
|
|
fi
|
|
|
|
- name: Build an updated SDK container
|
|
id: step4
|
|
shell: bash
|
|
run: |
|
|
exec 2>&1
|
|
set -x
|
|
set -euo pipefail
|
|
|
|
source ci-automation/ci_automation_common.sh
|
|
source sdk_container/.repo/manifests/version.txt
|
|
|
|
version="alpha-$FLATCAR_VERSION_ID"
|
|
sdk_version="${SOURCE_SDK_VERSION:-$FLATCAR_SDK_VERSION}"
|
|
|
|
sdk_name="flatcar-sdk-all"
|
|
docker_sdk_vernum="$(vernum_to_docker_image_version "${sdk_version}")"
|
|
|
|
docker_image_from_registry_or_buildcache "${sdk_name}" "${docker_sdk_vernum}"
|
|
|
|
sdk_image="$(docker_image_fullname "${sdk_name}" "${docker_sdk_vernum}")"
|
|
|
|
# Create version file
|
|
(
|
|
source sdk_lib/sdk_container_common.sh
|
|
create_versionfile "$sdk_version" "$version"
|
|
)
|
|
|
|
if [ -z "${CUSTOM_SDK_VERSION:-}" ] ; then
|
|
if [ -n "${{ github.event.issue.pull_request }}" ] ; then
|
|
target_version="${sdk_version}-github-PR-${{ github.event.issue.number }}-$(date '+%Y_%m_%d__%H_%M_%S')"
|
|
else
|
|
target_version="${sdk_version}-github-$(date '+%Y_%m_%d__%H_%M_%S')"
|
|
fi
|
|
else
|
|
target_version="${CUSTOM_SDK_VERSION}"
|
|
fi
|
|
|
|
echo "setting sdk_version=${target_version} as a github output"
|
|
echo "sdk_version=${target_version}" >> "$GITHUB_OUTPUT"
|
|
|
|
# This also updates sdk_container/.repo/manifests/version.txt with the new SDK version.
|
|
./update_sdk_container_image "${target_version}"
|
|
|
|
- name: Upload the SDK container and binary packages to bincache
|
|
id: step5
|
|
shell: bash
|
|
run: |
|
|
set -euo pipefail
|
|
|
|
source ci-automation/ci_automation_common.sh
|
|
|
|
mkdir -p ~/.ssh
|
|
trap 'rm -f ~/.ssh/bincache' EXIT
|
|
echo "${{ secrets.BINCACHESSH }}" > ~/.ssh/bincache
|
|
chmod 600 ~/.ssh/bincache
|
|
|
|
echo "Host ${BUILDCACHE_SERVER}" >> ~/.ssh/config
|
|
echo " User ${BUILDCACHE_USER}" >> ~/.ssh/config
|
|
echo " IdentityFile ~/.ssh/bincache" >> ~/.ssh/config
|
|
|
|
source sdk_container/.repo/manifests/version.txt
|
|
vernum="${FLATCAR_SDK_VERSION}"
|
|
docker_vernum="$(vernum_to_docker_image_version "${vernum}")"
|
|
|
|
docker_image_to_buildcache "${CONTAINER_REGISTRY}/flatcar-sdk-all" "${docker_vernum}"
|
|
docker_image_to_buildcache "${CONTAINER_REGISTRY}/flatcar-sdk-amd64" "${docker_vernum}"
|
|
docker_image_to_buildcache "${CONTAINER_REGISTRY}/flatcar-sdk-arm64" "${docker_vernum}"
|
|
|
|
rm -f ~/.ssh/bincache
|