Nightly Release #381
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Nightly Release | |
on: | |
workflow_dispatch: | |
schedule: | |
# 2:11 AM PST tuesday-saturday | |
- cron: '11 10 * * 2-6' | |
jobs: | |
find-latest-release: | |
name: Find Latest Release | |
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 }} | |
permissions: | |
contents: write | |
pull-requests: write | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: 'true' | |
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/1.0/rtl | |
git submodule update --remote hw/latest/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-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 | |
extra-features: slow_tests | |
rom-logging: true | |
fpga-itrng: false | |
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 | |
extra-features: slow_tests | |
rom-logging: false | |
fpga-itrng: false | |
fpga-full-suite-itrng-log: | |
name: FPGA Suite (itrng, log) | |
needs: find-latest-release | |
if: needs.find-latest-release.outputs.create_release | |
uses: ./.github/workflows/fpga.yml | |
with: | |
artifact-suffix: -fpga-realtime-itrng-log | |
extra-features: slow_tests,itrng | |
rom-logging: true | |
fpga-itrng: true | |
fpga-full-suite-itrng-nolog: | |
name: FPGA Suite (itrng, nolog) | |
needs: find-latest-release | |
if: needs.find-latest-release.outputs.create_release | |
uses: ./.github/workflows/fpga.yml | |
with: | |
artifact-suffix: -fpga-realtime-itrng-nolog | |
extra-features: slow_tests,itrng | |
rom-logging: false | |
fpga-itrng: true | |
sw-emulator-full-suite-etrng-log: | |
name: sw-emulator Suite (etrng, log) | |
needs: find-latest-release | |
if: needs.find-latest-release.outputs.create_release | |
uses: ./.github/workflows/fw-test-emu.yml | |
with: | |
artifact-suffix: -sw-emulator-realtime-etrng-log | |
extra-features: slow_tests | |
rom-logging: true | |
sw-emulator-full-suite-etrng-nolog: | |
name: sw-emulator Suite (etrng, nolog) | |
needs: find-latest-release | |
if: needs.find-latest-release.outputs.create_release | |
uses: ./.github/workflows/fw-test-emu.yml | |
with: | |
artifact-suffix: -sw-emulator-realtime-etrng-nolog | |
extra-features: slow_tests | |
rom-logging: false | |
sw-emulator-full-suite-itrng-log: | |
name: sw-emulator Suite (itrng, log) | |
needs: find-latest-release | |
if: needs.find-latest-release.outputs.create_release | |
uses: ./.github/workflows/fw-test-emu.yml | |
with: | |
artifact-suffix: -sw-emulator-realtime-itrng-log | |
extra-features: slow_tests,itrng | |
rom-logging: true | |
sw-emulator-full-suite-itrng-nolog: | |
name: sw-emulator Suite (itrng, nolog) | |
needs: find-latest-release | |
if: needs.find-latest-release.outputs.create_release | |
uses: ./.github/workflows/fw-test-emu.yml | |
with: | |
artifact-suffix: -sw-emulator-realtime-itrng-nolog | |
extra-features: slow_tests,itrng | |
rom-logging: false | |
create-release: | |
name: Create New Release | |
needs: | |
- find-latest-release | |
- fpga-full-suite-etrng-log | |
- fpga-full-suite-etrng-nolog | |
- fpga-full-suite-itrng-log | |
- fpga-full-suite-itrng-nolog | |
- sw-emulator-full-suite-etrng-log | |
- sw-emulator-full-suite-etrng-nolog | |
- sw-emulator-full-suite-itrng-log | |
- sw-emulator-full-suite-itrng-nolog | |
runs-on: ubuntu-22.04 | |
permissions: | |
contents: write | |
pull-requests: write | |
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: 'Download all artifacts' | |
uses: actions/download-artifact@v4 | |
with: | |
path: /tmp/artifacts | |
- name: Package all test artifacts for release | |
run: | | |
(cd /tmp/artifacts && zip -r - .) > ./release/test_artifacts_${{ 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 | |
./release/test_artifacts_${{ needs.find-latest-release.outputs.new_release_tag }}.zip | |
tag_name: ${{ needs.find-latest-release.outputs.new_release_tag }} | |
prerelease: true | |
- name: Write artifact to workflow with release info | |
run: | | |
mkdir /tmp/release-info | |
echo "${{ needs.find-latest-release.outputs.new_release_tag }}" > /tmp/release-info/tag-name | |
echo "caliptra_${{ needs.find-latest-release.outputs.new_release_tag }}.zip" > /tmp/release-info/zip-file-name | |
- name: Write artifact with release info | |
uses: actions/upload-artifact@v4 | |
with: | |
name: release-info | |
path: /tmp/release-info | |
# SKIP Publishing the test results when we are not on the main branch | |
# publish-website: | |
# name: Publish https://caliptra-sw.github.io/ | |
# needs: | |
# create-release | |
# uses: ./.github/workflows/publish-website.yml | |
# permissions: | |
# pages: write | |
# id-token: write |