Skip to content

feat: multi-repo release #109

feat: multi-repo release

feat: multi-repo release #109

Workflow file for this run

name: Build PR
on:
pull_request:
branches:
- main
jobs:
build_kernel:
runs-on: ubuntu-latest
container:
image: debian:latest
env:
SHA: ${{ github.event.pull_request.head.sha }}
VERSION: ${{ github.event.pull_request.head.ref }}
GH_TOKEN: ${{ secrets.ROBOT_TOKEN }}
outputs:
image_hash: ${{ steps.build_package.outputs.image_hash }}
image_name: ${{ steps.build_package.outputs.image_name }}
kernel_release: ${{ steps.build_package.outputs.kernel_release }}
artifact_url: ${{ steps.upload-artifact.outputs.artifact-url }}
arrifact_id: ${{ steps.upload-artifact.outputs.artifact-id }}
kernel_version: ${{ steps.build_package.outputs.kernel_version }}
GH_TOKEN: ${{ secrets.ROBOT_TOKEN }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up okLinux environment
run: |
./deps
cd kernel
export CHROMEOS_KERNEL_FAMILY=termina
- name: Prepare kernel configuration
run: make olddefconfig
- name: Build kernel image
run: make -j$(nproc) bzImage
- name: Build Artifacts Package
id: build_package
run: |
export KERNEL_VERSION=$(cat version.txt)
export KERNEL_RELEASE="${KERNEL_VERSION}-${SHA}"
cp arch/x86_64/boot/bzImage kernel-x86_64-${KERNEL_RELEASE}.tar.gz
sha256sum kernel-x86_64-${KERNEL_RELEASE}.tar.gz >> kernel-x86_64-${KERNEL_RELEASE}.tar.gz.sha256
echo "image_name=kernel-x86_64-${KERNEL_RELEASE}.tar.gz" >> "$GITHUB_OUTPUT"
echo "image_hash=$(cat kernel-x86_64-${KERNEL_RELEASE}.tar.gz.sha256)" >> "$GITHUB_OUTPUT"
echo "kernel_release=${KERNEL_RELEASE}" >> "$GITHUB_OUTPUT"
echo "kernel_version=${KERNEL_VERSION}" >> "$GITHUB_OUTPUT"
curl -X POST \
-d @kernel-x86_64-${KERNEL_RELEASE}.tar.gz \
oknotokcomputer.sevki.workers.dev/kernel-x86_64-${KERNEL_RELEASE}.tar.gz \
-H "authorization: bearer ${GH_TOKEN}" \
-H "x-image-sha: $(cat kernel-x86_64-${KERNEL_RELEASE}.tar.gz.sha256)" \
-H "x-commit: ${SHA}"
curl -X POST \
-d @kernel-x86_64-${KERNEL_RELEASE}.tar.gz \
oknotokcomputer.sevki.workers.dev/kernel-x86_64-latest.tar.gz \
-H "authorization: bearer ${GH_TOKEN}" \
-H "x-image-sha: $(cat kernel-x86_64-${KERNEL_RELEASE}.tar.gz.sha256)" \
-H "x-commit: ${SHA}"
propose_release:
runs-on: ubuntu-latest
needs: build_kernel
steps:
- name: create pull request
env:
KERNEL_RELEASE: ${{ needs.build_kernel.outputs.kernel_release }}
KERNEL_VERSION: ${{ needs.build_kernel.outputs.kernel_version }}
IMAGE_HASH: ${{ needs.build_kernel.outputs.image_hash }}
IMAGE_NAME: ${{ needs.build_kernel.outputs.image_name }}
GH_TOKEN: ${{ secrets.ROBOT_TOKEN }}
ARTIFACT_URL: ${{ needs.build_kernel.outputs.artifact_url }}
uses: actions/github-script@v7
with:
script: |
github.rest.repos.createDeployment({
owner: context.repo.owner,
repo: context.repo.repo,
ref: context.sha,
environment: `oklinux-${process.env.KERNEL_VERSION}-staging`,
required_contexts: [],
transient_environment: true,
payload: {
kernel_release: process.env.KERNEL_RELEASE,
kernel_version: process.env.KERNEL_VERSION,
image_hash: process.env.IMAGE_HASH,
image_name: process.env.IMAGE_NAME,
artifact_url: process.env.ARTIFACT_URL
}
});
build_kernel_docs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Pages
uses: actions/configure-pages@v4
- name: Setup okLinux environment
run: |
./docdeps
/usr/bin/python3 -m venv sphinx
. sphinx/bin/activate
pip install -r ./Documentation/sphinx/requirements.txt
make htmldocs
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: "./Documentation/output"