name: Nightly release on: schedule: - cron: "0 8 * * 1-5" workflow_dispatch: pull_request: paths: - ".github/workflows/nightly.yml" - ".github/workflows/build_clio_docker_image.yml" jobs: build: name: Build clio strategy: fail-fast: false matrix: include: - os: macos15 build_type: Release static: false - os: heavy build_type: Release static: true container: '{ "image": "rippleci/clio_ci:latest" }' - os: heavy build_type: Debug static: true container: '{ "image": "rippleci/clio_ci:latest" }' uses: ./.github/workflows/build_impl.yml with: runs_on: ${{ matrix.os }} container: ${{ matrix.container }} conan_profile: gcc build_type: ${{ matrix.build_type }} code_coverage: false static: ${{ matrix.static }} unit_tests: true integration_tests: true clio_server: true disable_cache: true run_tests: needs: build strategy: fail-fast: false matrix: include: - os: macos15 conan_profile: apple_clang_16 build_type: Release integration_tests: false - os: heavy conan_profile: gcc build_type: Release container: image: rippleci/clio_ci:latest integration_tests: true - os: heavy conan_profile: gcc build_type: Debug container: image: rippleci/clio_ci:latest integration_tests: true runs-on: [self-hosted, "${{ matrix.os }}"] container: ${{ matrix.container }} services: scylladb: image: ${{ (matrix.integration_tests) && 'scylladb/scylla' || '' }} options: >- --health-cmd "cqlsh -e 'describe cluster'" --health-interval 10s --health-timeout 5s --health-retries 5 steps: - name: Clean workdir if: ${{ runner.os == 'macOS' }} uses: kuznetsss/workspace-cleanup@80b9863b45562c148927c3d53621ef354e5ae7ce #v1.0 - uses: actions/download-artifact@v4 with: name: clio_tests_${{ runner.os }}_${{ matrix.build_type }}_${{ matrix.conan_profile }} - name: Run clio_tests run: | chmod +x ./clio_tests ./clio_tests - uses: actions/download-artifact@v4 with: name: clio_integration_tests_${{ runner.os }}_${{ matrix.build_type }}_${{ matrix.conan_profile }} # To be enabled back once docker in mac runner arrives # https://github.com/XRPLF/clio/issues/1400 - name: Run clio_integration_tests if: matrix.integration_tests run: | chmod +x ./clio_integration_tests ./clio_integration_tests --backend_host=scylladb nightly_release: if: ${{ github.event_name != 'pull_request' }} needs: run_tests runs-on: ubuntu-latest 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 pattern: clio_server_* - name: Prepare files shell: bash run: | cp ${{ github.workspace }}/.github/workflows/nightly_notes.md "${RUNNER_TEMP}/nightly_notes.md" cd nightly_release echo '' >> "${RUNNER_TEMP}/nightly_notes.md" echo '```' >> "${RUNNER_TEMP}/nightly_notes.md" 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* build_and_publish_docker_image: uses: ./.github/workflows/build_clio_docker_image.yml needs: run_tests secrets: inherit with: tags: | type=raw,value=nightly type=raw,value=${{ github.sha }} artifact_name: clio_server_Linux_Release_gcc strip_binary: true publish_image: ${{ github.event_name != 'pull_request' }} create_issue_on_failure: needs: [build, run_tests, nightly_release, build_and_publish_docker_image] if: ${{ always() && contains(needs.*.result, 'failure') && github.event_name != 'pull_request' }} runs-on: ubuntu-latest 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 }}/