name: Nightly release on: schedule: - cron: '0 5 * * 1-5' workflow_dispatch: jobs: build: name: Build clio strategy: fail-fast: false matrix: include: - os: macos14 build_type: Release - os: heavy build_type: Release container: image: rippleci/clio_ci:latest - os: heavy build_type: Debug container: image: rippleci/clio_ci:latest runs-on: [self-hosted, "${{ matrix.os }}"] container: ${{ matrix.container }} steps: - name: Clean workdir if: ${{ runner.os == 'macOS' }} uses: kuznetsss/workspace-cleanup@1.0 - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Prepare runner uses: ./.github/actions/prepare_runner with: disable_ccache: true - name: Setup conan uses: ./.github/actions/setup_conan id: conan with: conan_profile: gcc - name: Run conan and cmake uses: ./.github/actions/generate with: conan_profile: ${{ steps.conan.outputs.conan_profile }} conan_cache_hit: ${{ steps.restore_cache.outputs.conan_cache_hit }} build_type: ${{ matrix.build_type }} - name: Build Clio uses: ./.github/actions/build_clio - name: Strip tests run: strip build/clio_tests - name: Upload clio_tests uses: actions/upload-artifact@v4 with: name: clio_tests_${{ runner.os }}_${{ matrix.build_type }} path: build/clio_tests - name: Compress clio_server shell: bash run: | cd build tar czf ./clio_server_${{ runner.os }}_${{ matrix.build_type }}.tar.gz ./clio_server - name: Upload clio_server uses: actions/upload-artifact@v4 with: name: clio_server_${{ runner.os }}_${{ matrix.build_type }} path: build/clio_server_${{ runner.os }}_${{ matrix.build_type }}.tar.gz run_tests: needs: build strategy: fail-fast: false matrix: include: - os: macos14 build_type: Release - os: heavy build_type: Release container: image: rippleci/clio_ci:latest - os: heavy build_type: Debug container: image: rippleci/clio_ci:latest runs-on: [self-hosted, "${{ matrix.os }}"] container: ${{ matrix.container }} steps: - name: Clean workdir if: ${{ runner.os == 'macOS' }} uses: kuznetsss/workspace-cleanup@1.0 - uses: actions/download-artifact@v4 with: name: clio_tests_${{ runner.os }}_${{ matrix.build_type }} - name: Run clio_tests run: | chmod +x ./clio_tests ./clio_tests --gtest_filter="-BackendCassandraBaseTest*:BackendCassandraTest*:BackendCassandraFactoryTestWithDB*" nightly_release: needs: run_tests runs-on: ubuntu-20.04 env: GH_REPO: ${{ github.repository }} GH_TOKEN: ${{ github.token }} permissions: contents: write steps: - uses: actions/checkout@v4 - uses: actions/download-artifact@v4 with: path: nightly_release - name: Prepare files shell: bash run: | cp ${{ github.workspace }}/.github/workflows/nightly_notes.md "${RUNNER_TEMP}/nightly_notes.md" cd nightly_release rm -r clio_tests* for d in $(ls); do archive_name=$(ls $d) mv ${d}/${archive_name} ./ rm -r $d sha256sum ./$archive_name > ./${archive_name}.sha256sum cat ./$archive_name.sha256sum >> "${RUNNER_TEMP}/nightly_notes.md" done echo '```' >> "${RUNNER_TEMP}/nightly_notes.md" - name: Remove current nightly release and nightly tag shell: bash run: | gh release delete nightly --yes || true git push origin :nightly || true - name: Publish nightly release shell: bash run: | gh release create nightly --prerelease --title "Clio development (nightly) build" \ --target $GITHUB_SHA --notes-file "${RUNNER_TEMP}/nightly_notes.md" \ ./nightly_release/clio_server* create_issue_on_failure: needs: [build, run_tests, nightly_release] if: ${{ always() && contains(needs.*.result, 'failure') }} runs-on: ubuntu-20.04 permissions: contents: write issues: write steps: - uses: actions/checkout@v4 - name: Create an issue uses: ./.github/actions/create_issue env: GH_TOKEN: ${{ github.token }} with: title: 'Nightly release failed 🌙' body: > Nightly release failed: Workflow: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}/