-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Signed-off-by: Josua Mayer <josua@solid-run.com>
- Loading branch information
Showing
3 changed files
with
284 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,204 @@ | ||
name: build | ||
|
||
on: | ||
push: | ||
branches: [ "kirkstone" ] | ||
pull_request: | ||
branches: [ "kirkstone" ] | ||
# Allows you to run this workflow manually from the Actions tab | ||
workflow_dispatch: | ||
|
||
jobs: | ||
prepare_container: | ||
runs-on: self-hosted | ||
outputs: | ||
uid: ${{ steps.uid_step.outputs.userid }} | ||
gid: ${{ steps.uid_step.outputs.groupid }} | ||
steps: | ||
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it | ||
- uses: actions/checkout@v4 | ||
|
||
- name: Get user id/group | ||
id: uid_step | ||
run: | | ||
echo "userid=$(id -u)" >> "$GITHUB_OUTPUT" | ||
echo "groupid=$(id -g)" >> "$GITHUB_OUTPUT" | ||
- name: Set up Docker Buildx | ||
uses: docker/setup-buildx-action@v3 | ||
with: | ||
buildkitd-config: /etc/docker/cibuilder.toml | ||
|
||
- name: Login to Docker Registry | ||
uses: docker/login-action@v3 | ||
with: | ||
registry: ciserver.ci:5000 | ||
username: ${{ secrets.CI_CACHE_REGISTRY_LOGIN }} | ||
password: ${{ secrets.CI_CACHE_REGISTRY_PASSWORD }} | ||
|
||
- name: Build and push | ||
uses: docker/build-push-action@v5 | ||
with: | ||
context: . | ||
push: true | ||
tags: ciserver.ci:5000/${{ github.repository_id }}:latest | ||
cache-from: type=registry,ref=ciserver.ci:5000/${{ github.repository_id }}:cache | ||
cache-to: type=registry,ref=ciserver.ci:5000/${{ github.repository_id }}:cache,mode=max | ||
file: conf/docker/Dockerfile | ||
build-args: | | ||
USER_ID=${{ steps.uid_step.outputs.userid }} | ||
GROUP_ID=${{ steps.uid_step.outputs.groupid }} | ||
build_images: | ||
needs: prepare_container | ||
runs-on: self-hosted | ||
timeout-minutes: 1080 | ||
container: | ||
image: ciserver.ci:5000/${{ github.repository_id }}:latest | ||
credentials: | ||
username: ${{ secrets.CI_CACHE_REGISTRY_LOGIN }} | ||
password: ${{ secrets.CI_CACHE_REGISTRY_PASSWORD }} | ||
options: --user "${{ needs.prepare_container.outputs.uid }}:${{ needs.prepare_container.outputs.gid }}" | ||
outputs: | ||
build_tag: ${{ steps.tag_step.outputs.build_tag }} | ||
steps: | ||
- name: Checkout dependency layers | ||
shell: bash {0} | ||
run: | | ||
repo init -u https://github.com/nxp-qoriq/yocto-sdk.git -b kirkstone -m ls-5.15.71-2.2.0.xml | ||
repo sync | ||
- name: Checkout pull-request version of meta-solidrun-arm-lx2xxx | ||
uses: actions/checkout@v4 | ||
with: | ||
path: sources/meta-solidrun-arm-lx2xxx | ||
|
||
- name: Get build tag | ||
shell: bash {0} | ||
id: tag_step | ||
run: | | ||
build_tag=$(date +%Y-%m-%d)_$(cd sources/meta-solidrun-arm-lx2xxx; git rev-parse --short HEAD) | ||
echo "build_tag=$build_tag" >> "$GITHUB_OUTPUT" | ||
- name: Create cache dir | ||
run: mkdir -p buildcache | ||
|
||
- name: Fetch cache from server | ||
uses: tespkg/actions-cache/restore@v1 | ||
with: | ||
endpoint: ciserver.ci | ||
port: 9000 | ||
insecure: true | ||
accessKey: ${{ secrets.CI_CACHE_MINIO_ACCESS }} | ||
secretKey: ${{ secrets.CI_CACHE_MINIO_SECRET }} | ||
bucket: cicache | ||
use-fallback: false | ||
key: ${{ github.repository }} | ||
path: | | ||
buildcache | ||
- name: Configure | ||
shell: bash {0} | ||
run: | | ||
EULA=1 | ||
. ./setup-env -m lx2160ardb-rev2 -b build_lx2160acex7-rev2 | ||
printf 'BBLAYERS += "%s"\n' $GITHUB_WORKSPACE/sources/meta-solidrun-arm-lx2xxx >> conf/bblayers.conf | ||
echo "require conf/includes/ci.conf" >> conf/local.conf | ||
- name: Download Sources (ignore errors) | ||
shell: bash {0} | ||
run: | | ||
cd build_lx2160acex7-rev2 | ||
source ./SOURCE_THIS | ||
export CACHE_DIR="$GITHUB_WORKSPACE/buildcache" | ||
export BB_ENV_PASSTHROUGH_ADDITIONS="$BB_ENV_PASSTHROUGH_ADDITIONS CACHE_DIR" | ||
MACHINE=lx2160acex7-rev2 bitbake -k fsl-image-networking --runall=fetch | ||
continue-on-error: true | ||
|
||
- name: Build (ignore errors) | ||
id: build_step | ||
shell: bash {0} | ||
run: | | ||
cd build_lx2160acex7-rev2 | ||
source ./SOURCE_THIS | ||
export CACHE_DIR="$GITHUB_WORKSPACE/buildcache" | ||
export BB_ENV_PASSTHROUGH_ADDITIONS="$BB_ENV_PASSTHROUGH_ADDITIONS CACHE_DIR" | ||
export MACHINE=lx2160acex7-rev2 | ||
bitbake -k fsl-image-networking | ||
wic create lx2160a-bootimg-sd -e fsl-image-networking | ||
continue-on-error: true | ||
|
||
- name: Update cache on the server (build may have failed) | ||
# if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' | ||
uses: tespkg/actions-cache/save@v1 | ||
with: | ||
endpoint: ciserver.ci | ||
port: 9000 | ||
insecure: true | ||
accessKey: ${{ secrets.CI_CACHE_MINIO_ACCESS }} | ||
secretKey: ${{ secrets.CI_CACHE_MINIO_SECRET }} | ||
bucket: cicache | ||
use-fallback: false | ||
key: ${{ github.repository }} | ||
path: | | ||
buildcache | ||
- name: Fail Late | ||
if: failure() && steps.build_step.outcome == 'failure' | ||
shell: bash {0} | ||
run: | | ||
false | ||
- name: Select artifacts for publishing | ||
shell: bash -e {0} | ||
run: | | ||
mkdir deploy | ||
DEPLOY_PATH=build_lx2160acex7-rev2/tmp/deploy/images/lx2160acex7-rev2 | ||
cp -L $DEPLOY_PATH/fsl-image-networking-lx2160acex7-rev2.ext2.gz deploy/ | ||
cp -L $DEPLOY_PATH/fsl-image-networking-lx2160acex7-rev2.manifest deploy/ | ||
pushd $DEPLOY_PATH; tar -cpzf device-tree.tgz freescale/*.dtb; popd | ||
mv $DEPLOY_PATH/device-tree.tgz deploy/ | ||
cp -L $DEPLOY_PATH/Image deploy/ | ||
cp -L $DEPLOY_PATH/modules-lx2160acex7-rev2.tgz deploy/ | ||
cp build_lx2160acex7-rev2/lx2160a-bootimg-sd.wks*.direct deploy/lx2160a-bootimg-sd.img | ||
xz -9 deploy/lx2160a-bootimg-sd.img | ||
ls -lh deploy/ | ||
- name: Deploy to the local minio storage | ||
uses: yakubique/minio-upload@v1.1.3 | ||
with: | ||
endpoint: http://ciserver.ci:9000 | ||
insecure: true | ||
access_key: ${{ secrets.CI_CACHE_MINIO_ACCESS }} | ||
secret_key: ${{ secrets.CI_CACHE_MINIO_SECRET }} | ||
bucket: cipublish | ||
source: ./deploy | ||
target: "/${{ github.repository_id }}/${{ steps.tag_step.outputs.build_tag }}" | ||
recursive: true | ||
|
||
publish_images: | ||
needs: build_images | ||
runs-on: self-hosted | ||
if: github.event_name == 'push' | ||
steps: | ||
- name: Download an artifacts from MinIO | ||
uses: yakubique/minio-download@v1.1.1 | ||
with: | ||
endpoint: http://ciserver.ci:9000 | ||
insecure: true | ||
access_key: ${{ secrets.CI_CACHE_MINIO_ACCESS }} | ||
secret_key: ${{ secrets.CI_CACHE_MINIO_SECRET }} | ||
bucket: cipublish | ||
source: "/${{ github.repository_id }}/${{ needs.build_images.outputs.build_tag }}/" | ||
target: "." | ||
recursive: true | ||
|
||
- name: Upload to S3 | ||
uses: shallwefootball/upload-s3-action@v1.3.3 | ||
with: | ||
aws_key_id: ${{ secrets.IMAGES_S3_ACCESS }} | ||
aws_secret_access_key: ${{ secrets.IMAGES_S3_SECRET }} | ||
aws_bucket: ${{ secrets.IMAGES_S3_BUCKET }} | ||
endpoint: ${{ secrets.IMAGES_S3_HOST }} | ||
source_dir: deploy | ||
destination_dir: LX2k/meta-solidrun-arm-lx2xxx/${{ needs.build_images.outputs.build_tag }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
FROM ubuntu:22.04 | ||
|
||
# Set the default shell to bash | ||
SHELL ["/bin/bash", "-c"] | ||
|
||
# Create and set the working directory | ||
WORKDIR /workspace | ||
|
||
# Install necessary packages and dependencies for Yocto Project builds. | ||
# This includes all the recommended packages listed in the Yocto Project Quick Start | ||
# guide for a Ubuntu-based host, as of my last update. | ||
|
||
ENV DEBIAN_FRONTEND noninteractive | ||
|
||
# Build tools | ||
RUN apt-get update && apt-get install -y apt-transport-https \ | ||
gawk wget git diffstat \ | ||
unzip texinfo gcc build-essential chrpath \ | ||
socat cpio python3 python3-pip python3-pexpect \ | ||
xz-utils debianutils iputils-ping python3-git \ | ||
python3-jinja2 libegl1-mesa libsdl1.2-dev \ | ||
python3-subunit mesa-common-dev patchelf \ | ||
zstd liblz4-tool file locales libacl1 \ | ||
tree sudo locales ca-certificates \ | ||
bash icecc | ||
|
||
# Install extra non-yocto build tools | ||
RUN apt-get update && apt-get install -y repo | ||
|
||
RUN locale-gen en_US.UTF-8 | ||
|
||
RUN update-ca-certificates | ||
|
||
# Set environment variables | ||
ENV LANG=en_US.UTF-8 \ | ||
LANGUAGE=en_US:en \ | ||
LC_ALL=en_US.UTF-8 | ||
|
||
# Arguments to pass host user's UID and GID | ||
ARG USER_ID=1000 | ||
ARG GROUP_ID=1000 | ||
|
||
# Create a user 'developer' with the same UID/GID as the host user | ||
RUN groupadd -g ${GROUP_ID} developer | ||
RUN useradd -m -u ${USER_ID} -g developer -d /home/developer developer | ||
RUN mkdir -p /workspace | ||
RUN chown -R developer:developer /workspace | ||
RUN mkdir -p /home/developer/.ssh | ||
RUN touch /home/developer/.ssh/known_hosts | ||
RUN chmod 700 /home/developer/.ssh | ||
RUN chmod 600 /home/developer/.ssh/known_hosts | ||
RUN chown -R developer:developer /home/developer/.ssh | ||
|
||
|
||
RUN git config --add --system user.email "developer@example.com" | ||
RUN git config --add --system user.name "Build Container" | ||
RUN git config --add --system http.version HTTP/1.1 | ||
|
||
# The entry point is set to bash. This means that when the container starts, it will drop the user into bash | ||
ENTRYPOINT ["/bin/bash"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
CACHE_DIR ??= "${TOPDIR}" | ||
|
||
BB_GENERATE_MIRROR_TARBALLS = "1" | ||
BB_GIT_SHALLOW ?= "1" | ||
BB_GIT_SHALLOW_DEPTH ?= "1" | ||
|
||
DL_DIR = "${CACHE_DIR}/downloads" | ||
SSTATE_DIR = "${CACHE_DIR}/sstate-cache" | ||
CCACHE_TOP_DIR = "${CACHE_DIR}/ccache" | ||
|
||
INHERIT += "ccache" | ||
|
||
# dont inherit work to prevent wic error below: | ||
# INFO: Build artifacts not found, exiting. | ||
# INFO: (Please check that the build artifacts for the machine | ||
# INFO: selected in local.conf actually exist and that they | ||
# INFO: are the correct artifacts for the image (.wks file)). | ||
# ERROR: The artifact that couldn't be found was rootfs-dir: | ||
# /__w/meta-solidrun-arm-lx2xxx/meta-solidrun-arm-lx2xxx/build_lx2160acex7-rev2/tmp/work/lx2160acex7_rev2-fsl-linux/fsl-image-networking/1.0-r0/rootfs | ||
# INHERIT += "rm_work" |