mirror of
https://github.com/nosqlbench/nosqlbench.git
synced 2024-12-27 01:01:08 -06:00
322 lines
10 KiB
YAML
322 lines
10 KiB
YAML
name: preview
|
|
|
|
# This workflow should run for any push which is a preview build.
|
|
# Preview builds are indicated with a tag that ends in -preview
|
|
# In order to effect this, you can do the following:
|
|
# scripts/tag-preview-build
|
|
# If you want to replace a build, you can use -f and then
|
|
# push the update to the tag like push -f origin <tag>,
|
|
# although this should never be done!
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- "[0-9]+.[0-9]+.[0-9]+-preview"
|
|
|
|
jobs:
|
|
preview-build:
|
|
runs-on: ubuntu-20.04
|
|
outputs:
|
|
preview_version: ${{ steps.versions.outputs.PREVIEW_VERSION }}
|
|
docker_tags: ${{ steps.versions.outputs.DOCKER_TAGS }}
|
|
steps:
|
|
|
|
- name: checkout repo
|
|
uses: actions/checkout@v3
|
|
|
|
- name: setup java
|
|
uses: actions/setup-java@v3
|
|
with:
|
|
distribution: 'temurin'
|
|
java-version: '17'
|
|
java-package: jdk
|
|
architecture: x64
|
|
|
|
- name: set git username
|
|
run: git config --global user.email "${{ secrets.NBDROID_EMAIL }}"
|
|
|
|
- name: set git email
|
|
run: git config --global user.name "${{ secrets.NBDROID_NAME }}"
|
|
|
|
- name: free disk space
|
|
run: |
|
|
sudo swapoff -a
|
|
sudo rm -f /swapfile
|
|
sudo apt clean
|
|
docker rmi $(docker image ls -aq)
|
|
df -h
|
|
|
|
- name: Cache Maven packages
|
|
uses: actions/cache@v3.2.3
|
|
with:
|
|
path: ~/.m2
|
|
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
|
|
restore-keys: ${{ runner.os }}-m2
|
|
|
|
- name: read versions
|
|
id: versions
|
|
run: |
|
|
set -x
|
|
PREVIEW_VERSION=$(scripts/get-preview-version.sh)
|
|
echo "PREVIEW_VERSION=${PREVIEW_VERSION}" >> $GITHUB_ENV
|
|
echo "PREVIEW_VERSION=${PREVIEW_VERSION}" >> $GITHUB_OUTPUT
|
|
echo "DOCKER_TAGS=nosqlbench/nosqlbench:${PREVIEW_VERSION},nosqlbench/nosqlbench:preview" >> $GITHUB_ENV
|
|
echo "DOCKER_TAGS=nosqlbench/nosqlbench:${PREVIEW_VERSION},nosqlbench/nosqlbench:preview" >> $GITHUB_OUTPUT
|
|
|
|
- name: build preview revision
|
|
run: |
|
|
mvn clean package -Drevision="${{ env.PREVIEW_VERSION }}"
|
|
|
|
- name: Setup docker buildx
|
|
uses: docker/setup-buildx-action@v2.2.1
|
|
|
|
- name: docker hub login
|
|
uses: docker/login-action@v2.1.0
|
|
with:
|
|
username: ${{ secrets.DOCKER_USERNAME }}
|
|
password: ${{ secrets.DOCKER_PASSWORD }}
|
|
|
|
- name: docker test build
|
|
uses: docker/build-push-action@v3.3.0
|
|
with:
|
|
context: .
|
|
file: Dockerfile
|
|
pull: true
|
|
push: false
|
|
load: true
|
|
tags: ${{ env.DOCKER_TAGS }}
|
|
|
|
- name: sanity check docker image
|
|
run: |
|
|
docker run --rm nosqlbench/nosqlbench:${{ env.PREVIEW_VERSION }} --version
|
|
|
|
- name: bundle artifacts
|
|
run: |
|
|
pwd
|
|
ls -l
|
|
mkdir staging
|
|
cp nb5/target/nb5.jar nb5/target/nb5 staging
|
|
|
|
- name: upload artifacts
|
|
uses: actions/upload-artifact@v1
|
|
with:
|
|
name: binaries
|
|
path: staging
|
|
|
|
# - name: generate javadoc
|
|
# run: mvn javadoc:aggregate-jar
|
|
# continue-on-error: false
|
|
#
|
|
# - name: upload javadoc
|
|
# uses: actions/upload-artifact@v3
|
|
# with:
|
|
# name: javadoc
|
|
# path: target/nosqlbench-*-javadoc.jar
|
|
|
|
- name: prepare release summary
|
|
id: prepare_summary
|
|
run: |
|
|
#summary=$(scripts/release-notes.sh)
|
|
summary=$(cat PREVIEW_NOTES.md)
|
|
summary="${summary//'%'/'%25'}"
|
|
summary="${summary//$'\n'/'%0A'}"
|
|
summary="${summary//$'\r'/'%0D'}"
|
|
echo "release_summary=$summary" >> $GITHUB_STATE
|
|
|
|
- name: bump minor version
|
|
run: |
|
|
scripts/bump-minor-version
|
|
|
|
- name: docker push to hub
|
|
uses: docker/build-push-action@v2
|
|
with:
|
|
context: .
|
|
platforms: linux/amd64,linux/arm64
|
|
file: Dockerfile
|
|
pull: true
|
|
push: true
|
|
tags: ${{ env.DOCKER_TAGS }}
|
|
|
|
# https://github.com/softprops/action-gh-release
|
|
- name: create github release
|
|
uses: softprops/action-gh-release@v0.1.15
|
|
if: startsWith(github.ref, 'refs/tags/')
|
|
with:
|
|
# body: ${{ steps.prepare_summary.outputs.release_summary }}
|
|
# body_path: PREVIEW_NOTES.md
|
|
draft: false
|
|
prerelease: true
|
|
generate_release_notes: true
|
|
name: Preview ${{ env.PREVIEW_VERSION }}
|
|
fail_on_unmatched_files: true
|
|
tag_name: ${{ env.PREVIEW_VERSION }}
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
files: |
|
|
nb5/target/nb5
|
|
nb5/target/nb5.jar
|
|
|
|
# - name: create github release
|
|
# id: create_github_release
|
|
# uses: actions/create-release@v1
|
|
# env:
|
|
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
# with:
|
|
# tag_name: ${{ env.PREVIEW_VERSION }}
|
|
# release_name: Release ${{ env.PREVIEW_VERSION }}
|
|
# draft: false
|
|
# prerelease: true
|
|
# body: ${{ steps.prepare_summary.outputs.release_summary }}
|
|
#
|
|
# - name: upload nb.jar to github release
|
|
# id: upload-nb-jar
|
|
# uses: actions/upload-release-asset@v1
|
|
# env:
|
|
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
# with:
|
|
# upload_url: ${{ steps.create_github_release.outputs.upload_url }}
|
|
# asset_path: nb5/target/nb5.jar
|
|
# asset_name: nb5.jar
|
|
# asset_content_type: application/octet-stream
|
|
#
|
|
# - name: upload nb binary to github release
|
|
# id: upload-nb-binary
|
|
# uses: actions/upload-release-asset@v1
|
|
# env:
|
|
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
# with:
|
|
# upload_url: ${{ steps.create_github_release.outputs.upload_url }}
|
|
# asset_path: nb5/target/nb5
|
|
# asset_name: nb5
|
|
# asset_content_type: application/octet-stream
|
|
|
|
- name: Archive Test Results
|
|
if: always()
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: test-results
|
|
path: |
|
|
[a-zA-Z]**/logs/*
|
|
|
|
# This triggers a preview build by cascading the tag to the builddocs repo.
|
|
# The builddocs repo then pushes to preview or release depending on the tag.
|
|
|
|
preview-docs:
|
|
needs: preview-build
|
|
runs-on: ubuntu-20.04
|
|
steps:
|
|
- name: import env vars
|
|
run: |
|
|
echo "PREVIEW_VERSION=${{ needs.preview-build.outputs.preview_version }}" >> $GITHUB_ENV
|
|
echo "DOCKER_TAGS=${{ needs.preview-build.outputs.docker_tags }}" >> $GITHUB_ENV
|
|
- name: clone nosqlbench-build-docs
|
|
run: |
|
|
git clone https://${{secrets.NBDROID_NAME}}:${{secrets.NBDROID_TOKEN}}@github.com/nosqlbench/nosqlbench-build-docs.git nosqlbench-build-docs
|
|
cd nosqlbench-build-docs
|
|
echo "files listing"
|
|
find .
|
|
git remote set-url origin https://${{secrets.NBDROID_NAME}}:${{secrets.NBDROID_TOKEN}}@github.com/nosqlbench/nosqlbench-build-docs.git
|
|
git remote -v
|
|
|
|
- name: set CNAME
|
|
run: |
|
|
echo "builddocs.nosqlbench.io" > nosqlbench-build-docs/site/static/CNAME
|
|
|
|
- name: commit changes
|
|
run: |
|
|
cd nosqlbench-build-docs
|
|
git add exported_docs.zip
|
|
|
|
- name: tag-preview-build
|
|
run: |
|
|
cd nosqlbench-build-docs
|
|
git tag -f ${{ env.PREVIEW_VERSION }}
|
|
|
|
- name: push changes
|
|
env:
|
|
NBDROID_NAME: ${{ secrets.NBDROID_NAME }}
|
|
NBDROID_TOKEN: ${{ secrets.NBDROID_TOKEN }}
|
|
run: |
|
|
set -x
|
|
cd nosqlbench-build-docs
|
|
CHANGES=$(git status --porcelain 2>/dev/null| wc -l)
|
|
git push --tags
|
|
echo "push completed"
|
|
|
|
|
|
# javadocs:
|
|
# needs: release
|
|
# runs-on: ubuntu-20.04
|
|
# steps:
|
|
# - name: set git username
|
|
# run: git config --global user.email "${{ secrets.NBDROID_EMAIL }}"
|
|
# - name: set git email
|
|
# run: git config --global user.name "${{ secrets.NBDROID_NAME }}"
|
|
# - name: download javadocs
|
|
# uses: actions/download-artifact@v3
|
|
# with:
|
|
# name: javadoc
|
|
# - run: ls -la
|
|
# - name: unpackage javadoc
|
|
# run: unzip nosqlbench-*-javadoc.jar
|
|
# - run: ls -la
|
|
# - name: Push javadocs
|
|
# uses: ad-m/github-push-action@master
|
|
# with:
|
|
# repository: nosqlbench/nosqlbench-javadoc
|
|
# github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
# branch: main
|
|
#
|
|
#
|
|
# docs:
|
|
# needs: release
|
|
# runs-on: ubuntu-20.04
|
|
# steps:
|
|
#
|
|
# - name: set git username
|
|
# run: git config --global user.email "${{ secrets.NBDROID_EMAIL }}"
|
|
#
|
|
# - name: set git email
|
|
# run: git config --global user.name "${{ secrets.NBDROID_NAME }}"
|
|
#
|
|
# - name: download guidebook
|
|
# uses: actions/download-artifact@v1
|
|
# with:
|
|
# name: guidebook
|
|
# path: guidebook
|
|
#
|
|
# - run: ls -la
|
|
#
|
|
# - name: clone nosqlbench-docs
|
|
# env:
|
|
# NBDROID_NAME: ${{ secrets.NBDROID_NAME }}
|
|
# NBDROID_TOKEN: ${{ secrets.NBDROID_TOKEN }}
|
|
# run: |
|
|
# git clone https://${{secrets.NBDROID_NAME}}:${{secrets.NBDROID_TOKEN}}@github.com/nosqlbench/nosqlbench-docs.git nosqlbench-docs
|
|
# cd nosqlbench-docs
|
|
# echo "files listing"
|
|
# find .
|
|
# git remote set-url origin https://${{secrets.NBDROID_NAME}}:${{secrets.NBDROID_TOKEN}}@github.com/nosqlbench/nosqlbench-docs.git
|
|
# git remote -v
|
|
#
|
|
# Disabling this because it will be replaced soon.
|
|
# - name: push changes
|
|
# env:
|
|
# NBDROID_NAME: ${{ secrets.NBDROID_NAME }}
|
|
# NBDROID_TOKEN: ${{ secrets.NBDROID_TOKEN }}
|
|
# run: |
|
|
# rsync -av --delete guidebook/guidebook/ nosqlbench-docs/docs/
|
|
# echo "docs.nosqlbench.io" > nosqlbench-docs/docs/CNAME
|
|
# cd nosqlbench-docs
|
|
# git add docs
|
|
# git add -u
|
|
# CHANGES=$(git status --porcelain 2>/dev/null| wc -l)
|
|
# echo "found $CHANGES to push for doc updates"
|
|
# if (( $CHANGES > 0 ))
|
|
# then
|
|
# git commit -m"docs update for $GITHUB_REF"
|
|
# git push
|
|
# fi
|
|
|
|
|
|
|