diff --git a/.github/workflows/iot-gate-imx8-sb.yml b/.github/workflows/iot-gate-imx8-sb.yml new file mode 100644 index 00000000..b1c4be57 --- /dev/null +++ b/.github/workflows/iot-gate-imx8-sb.yml @@ -0,0 +1,67 @@ +name: Compulab IOT-GATE-iMX8-SB + +on: + # https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions#onpushbranchestagsbranches-ignoretags-ignore + # https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions#filter-pattern-cheat-sheet + pull_request: + branches: + - main + - master + # ESR branches glob pattern + #- 20[0-9][0-9].[0-1]?[1470].x + pull_request_target: + branches: + - main + - master + push: + tags: + # Semver tags glob pattern (includes ESR in format v20YY.MM.PATCH) + - v[0-9]+.[0-9]+.[0-9]+\+?r?e?v?* + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + inputs: + force-finalize: + description: Force finalize of the build (implicitly enables hostapp and S3 deployments) + required: false + type: boolean + default: false + deploy-environment: + description: Environment to use for build and deploy + required: false + type: string + default: balena-staging.com+sign-api-key + +permissions: + id-token: write # This is required for requesting the JWT #https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services#requesting-the-access-token + actions: read # We are fetching workflow run results of a merge commit when workflow is triggered by new tag, to see if tests pass + pull-requests: write # Read is required to fetch the PR that merged, in order to get the test results. Write is required to create PR comments for workflow approvals. + packages: read + contents: read + +jobs: + yocto: + name: Yocto + uses: balena-os/balena-yocto-scripts/.github/workflows/yocto-build-deploy.yml@3a78c259d96823f6d31477f802cfde2b72bc3b5a + # Prevent duplicate workflow executions for pull_request (PR) and pull_request_target (PRT) events. + # Both PR and PRT will be triggered for the same pull request, whether it is internal or from a fork. + # This condition will prevent the workflow from running twice for the same pull request while + # still allowing it to run for all other event types. + if: (github.event.pull_request.head.repo.full_name == github.repository) == (github.event_name == 'pull_request') + secrets: inherit + with: + machine: iot-gate-imx8 + build-args: '--templates-path layers/meta-balena-hab' + # worker_type defaults to testbot + # worker_fleets defaults to balena/testbot-rig,balena/testbot-rig-partners,balena/testbot-rig-x86,balena/testbot-rig-partners-x86 + test_matrix: > + { + "test_suite": ["os","cloud","hup"], + "environment": ["bm.balena-dev.com"], + "runs_on": [["ubuntu-latest"]], + "secure_boot": ["sb",""] + } + # Allow manual workflow runs to force finalize without checking previous test runs + force-finalize: ${{ inputs.force-finalize || false }} + # Default to balena-staging.com for workflow dispatch, but balena-cloud.com+sign-api-key for other events + deploy-environment: ${{ inputs.deploy-environment || 'balena-cloud.com+sign-api-key' }} + sign-image: true diff --git a/.github/workflows/iot-gate-imx8.yml b/.github/workflows/iot-gate-imx8.yml index 4b7d3ef1..90e3ec75 100644 --- a/.github/workflows/iot-gate-imx8.yml +++ b/.github/workflows/iot-gate-imx8.yml @@ -50,6 +50,7 @@ jobs: secrets: inherit with: machine: iot-gate-imx8 + build-args: '--templates-path layers/meta-balena-imx8mm' # worker_type defaults to testbot # worker_fleets defaults to balena/testbot-rig,balena/testbot-rig-partners,balena/testbot-rig-x86,balena/testbot-rig-partners-x86 test_matrix: > diff --git a/.gitmodules b/.gitmodules index 0b27580e..19b44a94 100644 --- a/.gitmodules +++ b/.gitmodules @@ -45,3 +45,6 @@ branch = honister [submodule "layers/meta-compulab-bsp"] branch = honister +[submodule "layers/meta-balena-hab"] + path = layers/meta-balena-hab + url = git@github.com:balena-os/meta-balena-hab.git diff --git a/iot-gate-imx8-sb.coffee b/iot-gate-imx8-sb.coffee new file mode 100644 index 00000000..642d8b8a --- /dev/null +++ b/iot-gate-imx8-sb.coffee @@ -0,0 +1,52 @@ +deviceTypesCommon = require '@resin.io/device-types/common' +{ networkOptions, commonImg, instructions } = deviceTypesCommon + +IOT_GATE_IMX8_FLASH = 'Insert USB STICK. Device will automatically boot from USB' + +postProvisioningInstructions = [ + instructions.BOARD_SHUTDOWN + instructions.REMOVE_INSTALL_MEDIA + instructions.BOARD_REPOWER +] + +module.exports = + version: 1 + slug: 'iot-gate-imx8-sb' + name: 'Compulab IOT-GATE-iMX8 secure boot variant' + arch: 'aarch64' + state: 'released' + + stateInstructions: + postProvisioning: postProvisioningInstructions + + instructions: [ + instructions.ETCHER_USB + instructions.EJECT_USB + instructions.FLASHER_WARNING + IOT_GATE_IMX8_FLASH + ].concat(postProvisioningInstructions) + + gettingStartedLink: + windows: 'http://docs.balena.io/iot-gate-imx8-sb/nodejs/getting-started/#adding-your-first-device' + osx: 'http://docs.balena.io/iot-gate-imx8-sb/getting-started/#adding-your-first-device' + linux: 'http://docs.balena.io/iot-gate-imx8-sb/getting-started/#adding-your-first-device' + + supportsBlink: false + + yocto: + machine: 'iot-gate-imx8' + image: 'balena-image-flasher' + fstype: 'balenaos-img' + version: 'yocto-kirkstone' + deployArtifact: 'balena-image-flasher-iot-gate-imx8.balenaos-img' + compressed: true + + options: [ networkOptions.group ] + + configuration: + config: + partition: + primary: 1 + path: '/config.json' + + initialization: commonImg.initialization diff --git a/iot-gate-imx8-sb.svg b/iot-gate-imx8-sb.svg new file mode 100644 index 00000000..529a7096 --- /dev/null +++ b/iot-gate-imx8-sb.svg @@ -0,0 +1,169 @@ + + + + + +IOT-GATE iMX8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/layers/meta-balena-hab b/layers/meta-balena-hab new file mode 160000 index 00000000..b9e59daa --- /dev/null +++ b/layers/meta-balena-hab @@ -0,0 +1 @@ +Subproject commit b9e59daac7ab94715ed64f321a00b2da0ef7314e