# Creates nightly deployment builds for main targets. Note this does not cover package distribution channels, # such as choco. name: nightly on: schedule: - cron: "0 0 * * *" workflow_dispatch: inputs: isMock: description: "Mock run" default: true required: false type: boolean env: CARGO_INCREMENTAL: 0 CARGO_PROFILE_DEV_DEBUG: 0 CARGO_HUSKY_DONT_INSTALL_HOOKS: true jobs: # Check if things should be skipped, or if this is a mock job. initialize-job: name: initialize-job runs-on: ubuntu-latest outputs: should_skip: ${{ steps.skip_check.outputs.should_skip }} steps: - name: Check if this action should be skipped id: skip_check uses: fkirc/skip-duplicate-actions@f75f66ce1886f00957d99748a42c724f4330bdcf # v5.3.1 with: skip_after_successful_duplicate: "true" do_not_skip: '["workflow_dispatch"]' - name: Check if mock run: | if [[ -z "${{ github.event.inputs.isMock }}" ]]; then echo "This is a scheduled nightly run." elif [[ "${{ github.event.inputs.isMock }}" == "true" ]]; then echo "This is a mock run." else echo "This is NOT a mock run. Watch for the generated files!" fi build-release: needs: initialize-job if: ${{ needs.initialize-job.outputs.should_skip != 'true' }} uses: ./.github/workflows/build_releases.yml with: caller: "nightly" secrets: inherit upload-release: name: upload-release needs: build-release runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 with: fetch-depth: 1 - name: Get release artifacts uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 with: pattern: release-* path: release merge-multiple: true - name: Print out all release files run: | echo "Generated $(ls ./release | wc -l) files:" du -h -d 0 ./release/* - name: Delete tag and release if not mock if: github.event.inputs.isMock != 'true' run: gh release delete nightly --cleanup-tag env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Sleep for a few seconds to prevent timing issues between the deletion and creation of the release run: sleep 10 if: github.event.inputs.isMock != 'true' - name: Add all release files and create nightly release if not mock uses: softprops/action-gh-release@c062e08bd532815e2082a85e87e3ef29c3e6d191 # 2.0.8 if: github.event.inputs.isMock != 'true' with: token: ${{ secrets.GITHUB_TOKEN }} prerelease: true tag_name: "nightly" draft: false fail_on_unmatched_files: true files: | ./release/*