Skip to content

Commit

Permalink
Create workflow to build and deploy balenaOS
Browse files Browse the repository at this point in the history
Change-type: minor
Signed-off-by: Kyle Harding <[email protected]>
  • Loading branch information
klutchell committed Feb 15, 2024
1 parent 0cb57ae commit d952373
Show file tree
Hide file tree
Showing 3 changed files with 856 additions and 0 deletions.
124 changes: 124 additions & 0 deletions .github/workflows/dispatch-yocto-build-deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
name: "Dispatch Yocto"

on:
pull_request:
types: [opened, synchronize, closed]
branches:
- "main"
- "master"
pull_request_target:
types: [opened, synchronize, closed]
branches:
- "main"
- "master"

workflow_dispatch:
# you may only define up to 10 `inputs` for a `workflow_dispatch` event
inputs:
device-repo: # only required when testing from non-device repositories
description: balenaOS device repository (owner/repo)
required: true
type: string
default: balena-os/balena-generic
device-repo-ref: # only required when testing from non-device repositories
description: balenaOS device repository tag, branch, or commit to build
required: false
type: string
default: master
meta-balena-ref:
description: meta-balena ref if not the currently pinned version
required: false
type: string
yocto-scripts-ref:
description: balena-yocto-scripts ref if not the currently pinned version
required: false
type: string
machine:
description: yocto board name
required: true
type: string
default: generic-amd64
# environment:
# description: The GitHub Environment to use for the job(s) (production, staging, etc.)
# required: true
# type: choice
# options:
# - production
# - staging
environment: # TODO: remove this input once the above is enabled
description: Select deploy environment
required: false
type: choice
options:
- >
{
"environment": "balena-staging.com",
"s3-bucket": "resin-staging-img",
"s3-region": "us-east-1",
"aws-subnet": "subnet-0d73c1f0da85add17",
"aws-security-group": "sg-09dd285d11b681946"
}
- >
{
"environment": "balena-cloud.com",
"s3-bucket": "resin-production-img-cloudformation",
"s3-region": "us-east-1",
"aws-subnet": "subnet-02d18a08ea4058574",
"aws-security-group": "sg-057937f4d89d9d51c"
}
deploy-s3:
description: Whether to deploy images to S3
required: false
type: boolean
default: true
deploy-hostapp:
description: Whether to deploy a hostApp container image to a balena environment
required: false
type: boolean
default: true
deploy-ami: # TODO: can we get this from a source of truth like contracts?
description: Whether to deploy an AMI to AWS
required: false
type: boolean
default: false
sign-image: # TODO: can we get this from a source of truth like contracts?
description: Whether to sign image for secure boot
required: false
type: boolean
default: false
# os-dev:
# description: Enable OS development features
# required: false
# type: boolean
# default: false
# deploy-esr:
# description: Enable to deploy ESR
# required: false
# type: boolean
# default: false

jobs:
yocto-build-deploy:
name: Yocto
uses: ./.github/workflows/yocto-build-deploy.yml
secrets: inherit
with:
runs-on: '[ "ubuntu-latest" ]'
device-repo: ${{ inputs.device-repo || 'balena-os/balena-generic' }}
device-repo-ref: ${{ inputs.device-repo-ref || 'master' }}
meta-balena-ref: ${{ inputs.meta-balena-ref }}
yocto-scripts-ref: ${{ inputs.yocto-scripts-ref }}
machine: ${{ inputs.machine }}
# TODO: use environment to inherit balena-url, s3-region, s3-bucket, aws-subnet, aws-security-group
# environment: ${{ inputs.environment }}
balena-url: ${{ fromJSON(inputs.environment || '{}').environment || 'balena-staging.com' }} # removeme
s3-region: ${{ fromJSON(inputs.environment || '{}').s3-region || 'us-east-1' }} # removeme
s3-bucket: ${{ fromJSON(inputs.environment || '{}').s3-bucket || 'resin-staging-img' }} # removeme
aws-subnet: ${{ fromJSON(inputs.environment || '{}').aws-subnet || 'subnet-0d73c1f0da85add17' }} # removeme
aws-security-group: ${{ fromJSON(inputs.environment || '{}').aws-security-group || 'sg-09dd285d11b681946' }} # removeme
deploy-s3: ${{ inputs.deploy-s3 || false }}
deploy-hostapp: ${{ inputs.deploy-hostapp || false }}
deploy-ami: ${{ inputs.deploy-ami || false }}
sign-image: ${{ inputs.sign-image || false }}
os-dev: ${{ inputs.os-dev || false }}
deploy-esr: ${{ inputs.deploy-esr || false }}
Loading

0 comments on commit d952373

Please sign in to comment.