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