diff --git a/.github/workflows/fpga.yml b/.github/workflows/fpga.yml index 7705023bf2..70ae077377 100644 --- a/.github/workflows/fpga.yml +++ b/.github/workflows/fpga.yml @@ -4,8 +4,19 @@ name: FPGA Build on: push: branches: ["main"] - pull_request: +# pull_request: workflow_call: + inputs: + artifact-suffix: + type: string + required: false + trng: + default: external + type: string + rom-logging: + default: true + type: boolean + workflow_dispatch: @@ -28,6 +39,7 @@ jobs: uses: actions/checkout@v3 with: submodules: 'true' + - name: Compute cache-keys id: cache_key @@ -56,7 +68,7 @@ jobs: if: steps.restore_rtl_cache.outputs.cache-hit uses: actions/upload-artifact@v3 with: - name: caliptra-fpga-bitstream + name: caliptra-fpga-bitstream${{ inputs.artifact-suffix }} path: /tmp/caliptra-fpga-bitstream/caliptra_fpga.bin retention-days: 7 @@ -64,13 +76,10 @@ jobs: if: steps.restore_kmod_cache.outputs.cache-hit uses: actions/upload-artifact@v3 with: - name: caliptra-fpga-kmod + name: caliptra-fpga-kmod${{ inputs.artifact-suffix }} path: /tmp/caliptra-fpga-kmod/ retention-days: 1 - - - build_test_binaries: runs-on: [e2-standard-32] timeout-minutes: 60 @@ -148,7 +157,7 @@ jobs: - name: 'Upload test binaries artifact' uses: actions/upload-artifact@v3 with: - name: caliptra-test-binaries + name: caliptra-test-binaries${{ inputs.artifact-suffix }} path: /tmp/caliptra-test-binaries.sqsh retention-days: 1 @@ -160,7 +169,7 @@ jobs: - name: 'Upload test firmware artifact' uses: actions/upload-artifact@v3 with: - name: caliptra-test-firmware + name: caliptra-test-firmware${{ inputs.artifact-suffix }} path: /tmp/caliptra-test-firmware retention-days: 1 @@ -223,7 +232,7 @@ jobs: - name: 'Upload kernel module artifacts' uses: actions/upload-artifact@v3 with: - name: caliptra-fpga-kmod + name: caliptra-fpga-kmod${{ inputs.artifact-suffix }} path: /tmp/caliptra-fpga-kmod/ retention-days: 1 @@ -258,7 +267,7 @@ jobs: - name: 'Upload FPGA bitstream artifact' uses: actions/upload-artifact@v3 with: - name: caliptra-fpga-bitstream + name: caliptra-fpga-bitstream${{ inputs.artifact-suffix }} path: hw-latest/fpga/caliptra_build/caliptra_fpga.bin cache_fpga_bitstream_artifact: @@ -274,7 +283,7 @@ jobs: - name: 'Download FPGA Bitstream Artifact' uses: actions/download-artifact@v3 with: - name: caliptra-fpga-bitstream + name: caliptra-fpga-bitstream${{ inputs.artifact-suffix }} path: /tmp/caliptra-fpga-bitstream - name: Save FPGA bitstream to cache @@ -304,25 +313,25 @@ jobs: - name: 'Download FPGA Bitstream Artifact' uses: actions/download-artifact@v3 with: - name: caliptra-fpga-bitstream + name: caliptra-fpga-bitstream${{ inputs.artifact-suffix }} path: /tmp/caliptra-fpga-bitstream - name: 'Download kernel driver artifacts' uses: actions/download-artifact@v3 with: - name: caliptra-fpga-kmod + name: caliptra-fpga-kmod${{ inputs.artifact-suffix }} path: /tmp/caliptra-fpga-kmod/ - name: 'Download Test Binaries Artifact' uses: actions/download-artifact@v3 with: - name: caliptra-test-binaries + name: caliptra-test-binaries${{ inputs.artifact-suffix }} path: /tmp/caliptra-test-binaries.sqsh - name: 'Download Test Firmware Artifact' uses: actions/download-artifact@v3 with: - name: caliptra-test-firmware + name: caliptra-test-firmware${{ inputs.artifact-suffix }} path: /tmp/caliptra-test-firmware - name: Mount binaries @@ -372,6 +381,22 @@ jobs: TEST_BIN=/tmp/caliptra-test-binaries VARS="CPTRA_UIO_NUM=4 CALIPTRA_PREBUILT_FW_DIR=/tmp/caliptra-test-firmware CALIPTRA_IMAGE_NO_GIT_REVISION=1" + if [ "${{ inputs.trng }}" == "external" ] || [ -z "${{ inputs.trng }}" ]; then + echo Using external TRNG + else + echo "Unexpected inputs.trng: ${{ inputs.rom-logging }}" + fi + + if [ "${{ inputs.rom-logging }}" == "true" ] || [ -z "${{ inputs.rom-logging }}" ]; then + export CPTRA_ROM_TYPE=ROM_WITH_UART + elif [ "${{ inputs.rom-logging }}" == false ]; then + export CPTRA_ROM_TYPE=ROM_WITHOUT_UART + else + echo "Unexpected inputs.rom-logging: ${{ inputs.rom-logging }}" + exit 1 + fi + echo CPTRA_ROM_TYPE=${CPTRA_ROM_TYPE} + COMMON_ARGS=( --cargo-metadata="${TEST_BIN}/target/nextest/cargo-metadata.json" --binaries-metadata="${TEST_BIN}/target/nextest/binaries-metadata.json" @@ -397,7 +422,7 @@ jobs: - name: 'Upload test results' uses: actions/upload-artifact@v3 with: - name: caliptra-test-results + name: caliptra-test-results${{ inputs.artifact-suffix }} path: | /tmp/junit.xml - /tmp/nextest-list.json \ No newline at end of file + /tmp/nextest-list.json diff --git a/.github/workflows/nightly-release.yml b/.github/workflows/nightly-release.yml index eb16d369e6..8e35c5891f 100644 --- a/.github/workflows/nightly-release.yml +++ b/.github/workflows/nightly-release.yml @@ -5,92 +5,109 @@ on: schedule: # 2:11 AM PST tuesday-saturday - cron: '11 10 * * 2-6' -permissions: - contents: write - pull-requests: write + pull_request: +#permissions: +# contents: write +# pull-requests: write jobs: - rtl-repo-sync: - name: RTL Repo Sync - uses: ./.github/workflows/rtl-repo-sync.yml +# rtl-repo-sync: +# name: RTL Repo Sync +# uses: ./.github/workflows/rtl-repo-sync.yml - find-latest-release: - name: Find Latest Release - needs: rtl-repo-sync - runs-on: ubuntu-22.04 - outputs: - create_release: ${{ steps.find.outputs.create_release }} - new_release_tag: ${{ steps.find.outputs.new_release_tag }} - release_ref: ${{ steps.find.outputs.release_ref }} +# find-latest-release: +# name: Find Latest Release +# needs: rtl-repo-sync +# runs-on: ubuntu-22.04 +# outputs: +# create_release: ${{ steps.find.outputs.create_release }} +# new_release_tag: ${{ steps.find.outputs.new_release_tag }} +# release_ref: ${{ steps.find.outputs.release_ref }} +# +# steps: +# - uses: actions/checkout@v3 +# with: +# submodules: 'true' +# ref: 'main' +# fetch-depth: 0 +# +# - name: Find latest release +# id: find +# run: | +# DATE="$(date +'%Y%m%d')" +# TAG_PREFIX="release_v" +# TAG_BASE="${TAG_PREFIX}${DATE}_" +# INDEX=0 +# while git tag | grep ${TAG_BASE}${INDEX}; do +# ((INDEX+=1)) +# done +# git submodule update --remote hw-latest/caliptra-rtl +# CHECK_RELEASE_SYNC=$(git status --porcelain | head -1) +# MOST_RECENT_RELEASE=None +# if git tag | grep ${TAG_PREFIX} > /dev/null; then +# MOST_RECENT_RELEASE=$(git tag | grep ${TAG_PREFIX} | sort -r | head -1) +# fi +# if [ "$MOST_RECENT_RELEASE" == "None" ] && [ !"$CHECK_RELEASE_SYNC" ]; then +# echo "create_release=true" >> $GITHUB_OUTPUT +# else +# COMMITS_AFTER_LAST_RELEASE=$(git rev-list --count $MOST_RECENT_RELEASE..HEAD) +# if [[ $COMMITS_AFTER_LAST_RELEASE -gt 0 ]]; then +# echo "create_release=true" >> $GITHUB_OUTPUT +# else +# echo "create_release=false" >> $GITHUB_OUTPUT +# fi +# fi +# echo "new_release_tag=${TAG_BASE}${INDEX}" >> $GITHUB_OUTPUT +# echo "release_ref=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT +# echo "Current ref $(git rev-parse HEAD) will receive tag ${TAG_BASE}${INDEX} after tests" - steps: - - uses: actions/checkout@v3 - with: - submodules: 'true' - ref: 'main' - fetch-depth: 0 - - - name: Find latest release - id: find - run: | - DATE="$(date +'%Y%m%d')" - TAG_PREFIX="release_v" - TAG_BASE="${TAG_PREFIX}${DATE}_" - INDEX=0 - while git tag | grep ${TAG_BASE}${INDEX}; do - ((INDEX+=1)) - done - git submodule update --remote hw-latest/caliptra-rtl - CHECK_RELEASE_SYNC=$(git status --porcelain | head -1) - MOST_RECENT_RELEASE=None - if git tag | grep ${TAG_PREFIX} > /dev/null; then - MOST_RECENT_RELEASE=$(git tag | grep ${TAG_PREFIX} | sort -r | head -1) - fi - if [ "$MOST_RECENT_RELEASE" == "None" ] && [ !"$CHECK_RELEASE_SYNC" ]; then - echo "create_release=true" >> $GITHUB_OUTPUT - else - COMMITS_AFTER_LAST_RELEASE=$(git rev-list --count $MOST_RECENT_RELEASE..HEAD) - if [[ $COMMITS_AFTER_LAST_RELEASE -gt 0 ]]; then - echo "create_release=true" >> $GITHUB_OUTPUT - else - echo "create_release=false" >> $GITHUB_OUTPUT - fi - fi - echo "new_release_tag=${TAG_BASE}${INDEX}" >> $GITHUB_OUTPUT - echo "release_ref=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT - echo "Current ref $(git rev-parse HEAD) will receive tag ${TAG_BASE}${INDEX} after tests" - - fpga-full-suite: - name: FPGA Suite - needs: find-latest-release - if: needs.find-latest-release.outputs.create_release + fpga-full-suite-etrng-log: + name: FPGA Suite (etrng, log) +# needs: find-latest-release +# if: needs.find-latest-release.outputs.create_release uses: ./.github/workflows/fpga.yml + with: + artifact-suffix: -fpga-realtime-etrng-log + trng: external + rom-logging: true - create-release: - name: Create New Release - needs: [find-latest-release, fpga-full-suite] - runs-on: ubuntu-22.04 - - steps: - - uses: actions/checkout@v3 - with: - submodules: 'true' - ref: ${{ needs.find-latest-release.outputs.release_ref }} - - - name: Generate release zip - run: | - ./ci-tools/release/build_release.sh ${{ needs.find-latest-release.outputs.new_release_tag }} - mv ./release/release.zip ./release/caliptra_${{ needs.find-latest-release.outputs.new_release_tag }}.zip + fpga-full-suite-etrng-nolog: + name: FPGA Suite (etrng, nolog) +# needs: find-latest-release +# if: needs.find-latest-release.outputs.create_release + uses: ./.github/workflows/fpga.yml + with: + artifact-suffix: -fpga-realtime-etrng-nolog + trng: external + rom-logging: false + - - name: Tag repo with new release number - run: | - git config --global user.name "GitHub CI" - git config --global user.email "username@users.noreply.github.com" - git tag ${{ needs.find-latest-release.outputs.new_release_tag }} - git push origin ${{ needs.find-latest-release.outputs.new_release_tag }} - - name: Upload release - uses: softprops/action-gh-release@v1 - with: - files: ./release/caliptra_${{ needs.find-latest-release.outputs.new_release_tag }}.zip - tag_name: ${{ needs.find-latest-release.outputs.new_release_tag }} +# create-release: +# name: Create New Release +# needs: [find-latest-release, fpga-full-suite] +# runs-on: ubuntu-22.04 +# +# steps: +# - uses: actions/checkout@v3 +# with: +# submodules: 'true' +# ref: ${{ needs.find-latest-release.outputs.release_ref }} +# +# - name: Generate release zip +# run: | +# ./ci-tools/release/build_release.sh ${{ needs.find-latest-release.outputs.new_release_tag }} +# mv ./release/release.zip ./release/caliptra_${{ needs.find-latest-release.outputs.new_release_tag }}.zip +# +# - name: Tag repo with new release number +# run: | +# git config --global user.name "GitHub CI" +# git config --global user.email "username@users.noreply.github.com" +# git tag ${{ needs.find-latest-release.outputs.new_release_tag }} +# git push origin ${{ needs.find-latest-release.outputs.new_release_tag }} +# +# - name: Upload release +# uses: softprops/action-gh-release@v1 +# with: +# files: ./release/caliptra_${{ needs.find-latest-release.outputs.new_release_tag }}.zip +# tag_name: ${{ needs.find-latest-release.outputs.new_release_tag }}