From 3036348f7278ea8104c059717869162d9fc04e50 Mon Sep 17 00:00:00 2001 From: MicroDev <70126934+MicroDev1@users.noreply.github.com> Date: Thu, 16 Feb 2023 08:53:18 +0530 Subject: [PATCH 1/2] couple ci fixes - upload stubs as `.tar.gz` instead of `.zip` - append recursive flag only when the source ends with a backslash --- .github/actions/upload_aws/action.yml | 3 ++- .github/workflows/build.yml | 7 +------ 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/.github/actions/upload_aws/action.yml b/.github/actions/upload_aws/action.yml index 7aee8c7e78..643dd00342 100644 --- a/.github/actions/upload_aws/action.yml +++ b/.github/actions/upload_aws/action.yml @@ -24,7 +24,8 @@ runs: (github.event_name == 'release' && (github.event.action == 'published' || github.event.action == 'rerequested')) run: >- [ -z "$AWS_ACCESS_KEY_ID" ] || - aws s3 cp ${{ inputs.source }} s3://adafruit-circuit-python/bin/${{ inputs.destination }} --recursive --no-progress --region us-east-1 + aws s3 cp ${{ inputs.source }} s3://adafruit-circuit-python/bin/${{ inputs.destination }} + ${{ endsWith(inputs.source, '/') && '--recursive' || '' }} --no-progress --region us-east-1 env: AWS_PAGER: '' AWS_ACCESS_KEY_ID: ${{ inputs.AWS_ACCESS_KEY_ID }} diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6159f7291e..e9146c39b0 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -200,16 +200,11 @@ jobs: with: name: docs path: _build/latex - - name: Zip stubs - if: >- - (github.event_name == 'push' && github.ref == 'refs/heads/main' && github.repository_owner == 'adafruit') || - (github.event_name == 'release' && (github.event.action == 'published' || github.event.action == 'rerequested')) - run: zip -9r circuitpython-stubs.zip circuitpython-stubs - name: Upload to S3 uses: ./.github/actions/upload_aws with: source: circuitpython-stubs/dist/*.tar.gz - destination: stubs/circuitpython-stubs-${{ env.CP_VERSION }}.zip + destination: stubs/circuitpython-stubs-${{ env.CP_VERSION }}.tar.gz AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - name: Upload stubs to PyPi From 729fc97668175b5e7af1eafc2a95da4f0c597f09 Mon Sep 17 00:00:00 2001 From: MicroDev <70126934+MicroDev1@users.noreply.github.com> Date: Thu, 16 Feb 2023 09:18:01 +0530 Subject: [PATCH 2/2] custom board build --- .github/actions/deps/external/action.yml | 10 ++- .github/workflows/build-boards-custom.yml | 104 ++++++++++++++++++++++ .github/workflows/build.yml | 2 + 3 files changed, 115 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/build-boards-custom.yml diff --git a/.github/actions/deps/external/action.yml b/.github/actions/deps/external/action.yml index 3503e5b194..5db7c04686 100644 --- a/.github/actions/deps/external/action.yml +++ b/.github/actions/deps/external/action.yml @@ -1,6 +1,14 @@ name: Fetch external deps inputs: + action: + required: false + default: restore + type: choice + options: + - cache + - restore + platform: required: false default: none @@ -78,7 +86,7 @@ runs: if: inputs.platform != 'esp' uses: ./.github/actions/deps/python with: - action: ${{ fromJSON('["restore", "cache"]')[github.job == 'scheduler'] }} + action: ${{ inputs.action }} - name: Install python dependencies run: pip install -r requirements-dev.txt shell: bash diff --git a/.github/workflows/build-boards-custom.yml b/.github/workflows/build-boards-custom.yml new file mode 100644 index 0000000000..22ba0f62f4 --- /dev/null +++ b/.github/workflows/build-boards-custom.yml @@ -0,0 +1,104 @@ +name: Custom board build + +on: + workflow_dispatch: + inputs: + board: + description: 'Board: Found in ports/*/boards/[board_id]' + required: true + type: string + version: + description: 'Version: Can be a tag or a commit (>=8.1.0)' + required: false + default: latest + type: string + language: + description: 'Language: Found in locale/[language].po' + required: false + default: en_US + type: string + flags: + description: 'Flags: Build flags (e.g. CIRCUITPY_WIFI=1)' + required: false + type: string + debug: + description: 'Make a debug build' + required: false + default: false + type: boolean + +run-name: ${{ inputs.board }}-${{ inputs.language }}-${{ inputs.version }}${{ inputs.flags != '' && '-custom' || '' }}${{ inputs.debug && '-debug' || '' }} + +jobs: + build: + runs-on: ubuntu-22.04 + env: + PLATFORM_atmel-samd: arm + PLATFORM_broadcom: aarch + PLATFORM_cxd56: arm + PLATFORM_espressif: esp + PLATFORM_litex: riscv + PLATFORM_mimxrt10xx: arm + PLATFORM_nrf: arm + PLATFORM_raspberrypi: arm + PLATFORM_stm: arm + steps: + - name: Set up repository + run: | + git clone --filter=tree:0 https://github.com/adafruit/circuitpython.git $GITHUB_WORKSPACE + git checkout ${{ inputs.version == 'latest' && 'HEAD' || inputs.version }} + - name: Set up identifier + if: inputs.debug || inputs.flags != '' + run: | + > custom-build && git add custom-build + - name: Get port + id: get-port + run: | + PORT=$(find ports/*/boards/ -type d -name ${{ inputs.board }} | sed 's/^ports\///g;s/\/boards.*//g') + if [ -z $PORT ]; then (exit 1); else echo >> $GITHUB_OUTPUT "port=$PORT"; fi + - name: Port to platform + run: echo >> $GITHUB_ENV "PLATFORM=${{ env[format('PLATFORM_{0}', steps.get-port.outputs.port)] }}" + - name: Set up python + uses: actions/setup-python@v4 + with: + python-version: 3.x + - name: Set up port + if: env.PLATFORM == 'esp' + uses: ./.github/actions/deps/ports/espressif + - name: Set up submodules + id: set-up-submodules + uses: ./.github/actions/deps/submodules + with: + action: cache + target: ${{ inputs.board }} + - name: Set up external + uses: ./.github/actions/deps/external + with: + action: cache + platform: ${{ env.PLATFORM }} + - name: Set up mpy-cross + if: steps.set-up-submodules.outputs.frozen == 'True' + uses: ./.github/actions/mpy_cross + with: + download: false + - name: Versions + run: | + tools/describe + gcc --version + python3 --version + cmake --version || true + ninja --version || true + aarch64-none-elf-gcc --version || true + arm-none-eabi-gcc --version || true + xtensa-esp32-elf-gcc --version || true + riscv32-esp-elf-gcc --version || true + riscv64-unknown-elf-gcc --version || true + mkfs.fat --version || true + - name: Build board + run: make -j2 ${{ inputs.flags }} BOARD=${{ inputs.board }} DEBUG=${{ inputs.debug && '1' || '0' }} TRANSLATION=${{ inputs.language }} + working-directory: ports/${{ steps.get-port.outputs.port }} + - name: Upload artifact + uses: actions/upload-artifact@v3 + with: + name: ${{ inputs.board }}-${{ inputs.language }}-${{ inputs.version }}${{ inputs.flags != '' && '-custom' || '' }}${{ inputs.debug && '-debug' || '' }} + path: ports/${{ steps.get-port.outputs.port }}/build-${{ inputs.board }}/firmware.* diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e9146c39b0..00c7f8749f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -52,6 +52,8 @@ jobs: version: true - name: Set up external uses: ./.github/actions/deps/external + with: + action: cache # Disabled: Needs to be updated # - name: Get last commit with checks # id: get-last-commit-with-checks