Skip to content

Pre-release for commit 74b8415b4960c458f786a4a6ede33d6ea6d76fcf #18

Pre-release for commit 74b8415b4960c458f786a4a6ede33d6ea6d76fcf

Pre-release for commit 74b8415b4960c458f786a4a6ede33d6ea6d76fcf #18

Workflow file for this run

# Sets up the pre-release of a deploy for staging testing with the staging tag
name: Pre-release
on:
push:
tags:
- "staging"
run-name: Pre-release for commit ${{ github.sha }}
jobs:
Create_Pre-release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
# Configure Gradle for optimal use in GiHub Actions, including caching of downloaded dependencies.
# See: https://github.com/gradle/actions/blob/main/setup-gradle/README.md
- name: Setup Gradle
uses: gradle/actions/setup-gradle@417ae3ccd767c252f5661f1ace9f835f9654f2b5 # v3.1.0
# Run and build using gradle
# Disable aggregateJavaDocs
- name: Run build
run: ./gradlew distZip testCodeCoverageReport javadoc
# Confirm the test code inside wres-external-services-tests zip compiles
- name: Compile external-services-tests
run: |
cd wres-external-services-tests
../gradlew installDist
cd build/install/wres-external-services-tests
./gradlew testClasses
# Create the system tests zip
- name: Create systests zip
run: |
cd systests
../gradlew distZip installDist
# Create the admin scripts zip
- name: Create admin scripts
run: |
cd scripts
../gradlew distZip
# Create the md5
- name: Creating md5checksum
run: |
md5sum build/distributions/wres-*.zip >> md5checksum.txt
md5sum wres-*/build/distributions/wres-*-*.zip >> md5checksum.txt
md5sum systests/build/distributions/systests-*.zip >> md5checksum.txt
md5sum scripts/build/distributions/wres-admin-scripts-*.zip >> md5checksum.txt
# Create the sha256
- name: Creating sha256checksum
run: |
sha256sum build/distributions/wres-*.zip >> sha256checksum.txt
sha256sum wres-*/build/distributions/wres-*-*.zip >> sha256checksum.txt
sha256sum systests/build/distributions/systests-*.zip >> sha256checksum.txt
sha256sum scripts/build/distributions/wres-admin-scripts-*.zip >> sha256checksum.txt
# Deletes drafts incase the staging tag was deleted to change it to a different commit
- name: Delete drafts
uses: hugo19941994/delete-draft-releases@v1.0.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# Stores relevant artifacts for the pre-release
- name: Create pre-release
uses: softprops/action-gh-release@v2
with:
prerelease: true
files: |
md5checksum.txt
sha256checksum.txt
Release.txt
build/distributions/wres-*.zip
wres-*/build/distributions/wres-*-*.zip
systests/build/distributions/systests-*.zip
scripts/build/distributions/wres-admin-scripts-*.zip
# Label of the runner job
database-migration-check:
runs-on: ubuntu-latest
needs: Create_Pre-release
services:
postgres:
image: postgres
env:
POSTGRES_PASSWORD: postgres
POSTGRES_DB: wres8
POSTGRES_USER: wres_user
ports:
- 5432:5432
# needed because the postgres container does not provide a healthcheck
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
- uses: actions/checkout@v1
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
- name: Install PostgreSQL client
run: |
sudo apt-get update
sudo apt-get install --yes postgresql-client
# Create wres schema
- name: Query database
run: |
psql -h localhost -d wres8 -U wres_user -c 'create schema wres authorization wres_user;'
env:
# postgress password is required; alternatively, you can run:
# `PGPASSWORD=postgres_password psql ...`
PGPASSWORD: postgres
- name: Create directories for downloads
run: |
mkdir upcomingRelease
mkdir pastRelease
- name: Download latest release
uses: robinraju/release-downloader@v1
with:
latest: true
# Download the attached zipball (*.zip)
tarBall: true
zipBall: true
fileName: '*.zip'
out-file-path: 'pastRelease'
- name: Download staging to be release
uses: robinraju/release-downloader@v1
with:
tag: 'staging'
# Download the attached zipball (*.zip)
tarBall: true
zipBall: true
fileName: '*.zip'
out-file-path: 'upcomingRelease'
- name: Migrate database from latest release
run: |
cd pastRelease
ls | grep -P 'wres-\d{8}-.*' | xargs chmod 777
ls | grep -P 'wres-\d{8}-.*' | xargs unzip
echo $(ls | grep -P 'wres-\d{8}-.{7}((?!zip).)*$')
cd $(ls | grep -P 'wres-\d{8}-.{7}((?!zip).)*$')
cd bin
mkdir smalldata
cp ../../../systests/smalldata/1985043012_DRRC2FAKE1_forecast.xml smalldata
cp ../../../systests/smalldata/1985043013_DRRC2FAKE1_forecast.xml smalldata
cp ../../../systests/smalldata/1985043014_DRRC2FAKE1_forecast.xml smalldata
cp ../../../systests/smalldata/DRRC2QINE_FAKE_19850430.xml smalldata
JAVA_OPTS="-Dwres.useDatabase=true -Dwres.useSSL=false -Dwres.username=wres_user -Dwres.databaseHost=localhost -Dwres.databaseName=wres8 -Dwres.password=postgres" ./wres execute ../../../systests/scenario500/evaluation.yml
- name: Run upcoming release
run: |
cd upcomingRelease
ls | grep -P 'wres-\d{8}-.*' | xargs chmod 777
ls | grep -P 'wres-\d{8}-.*' | xargs unzip
echo $(ls | grep -P 'wres-\d{8}-.{7}((?!zip).)*$')
cd $(ls | grep -P 'wres-\d{8}-.{7}((?!zip).)*$')
cd bin
mkdir smalldata
cp ../../../systests/smalldata/1985043012_DRRC2FAKE1_forecast.xml smalldata
cp ../../../systests/smalldata/1985043013_DRRC2FAKE1_forecast.xml smalldata
cp ../../../systests/smalldata/1985043014_DRRC2FAKE1_forecast.xml smalldata
cp ../../../systests/smalldata/DRRC2QINE_FAKE_19850430.xml smalldata
JAVA_OPTS="-Dwres.useDatabase=true -Dwres.useSSL=false -Dwres.username=wres_user -Dwres.databaseHost=localhost -Dwres.databaseName=wres8 -Dwres.password=postgres" ./wres execute ../../../systests/scenario500/evaluation.yml
# drops table and re-create it to test migration from fresh new release
- name: Drops table to test fresh migration from upcoming
run: |
psql -h localhost -d wres8 -U wres_user -c 'drop schema wres CASCADE;'
psql -h localhost -d postgres -U wres_user -c 'drop database wres8;'
psql -h localhost -d postgres -U wres_user -c 'create database wres8 owner wres_user;'
psql -h localhost -d wres8 -U wres_user -c 'create schema wres authorization wres_user;'
env:
# postgress password is required; alternatively, you can run:
# `PGPASSWORD=postgres_password psql ...`
PGPASSWORD: postgres
- name: Fresh migration from upcoming release
run: |
cd upcomingRelease
cd $(ls | grep -P 'wres-\d{8}-.{7}((?!zip).)*$')
cd bin
JAVA_OPTS="-Dwres.useDatabase=true -Dwres.useSSL=false -Dwres.username=wres_user -Dwres.databaseHost=localhost -Dwres.databaseName=wres8 -Dwres.password=postgres" ./wres execute ../../../systests/scenario500/evaluation.yml