mirror of
https://github.com/XRPLF/clio.git
synced 2025-11-04 11:55:51 +00:00
173 lines
4.8 KiB
YAML
173 lines
4.8 KiB
YAML
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
|
|
|
|
- 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 }}/
|