Nightly Release #238
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' | |
permissions: | |
contents: write | |
pull-requests: write | |
jobs: | |
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 }} | |
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-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-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 | |
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 | |
- 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 | |
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 "[email protected]" | |
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 }} |