Skip to content

Continuous Integration #565

Continuous Integration

Continuous Integration #565

Workflow file for this run

name: Continuous Integration
on:
pull_request:
types:
- opened
- reopened
- synchronize
schedule:
- cron: "5 6 * * *"
repository_dispatch:
types: [ liquibase-ci ]
push:
branches:
- main
jobs:
build:
name: Build & Package
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up JDK 17
uses: actions/setup-java@v2
with:
java-version: 17
distribution: 'temurin'
cache: 'maven'
- name: Install liquibase-core 0-SNAPSHOT
env:
GITHUB_TOKEN: ${{ secrets.BOT_TOKEN }}
run: |
mvn -B versions:set-property -Dproperty=liquibase-core.version -DnewVersion=0-SNAPSHOT
mvn -B liquibase-sdk:install-snapshot \
"-Dliquibase.sdk.branchSearch=${{ steps.configure-build.outputs.liquibaseBranch }},master,main" \
"-Dliquibase.sdk.repo=liquibase/liquibase,liquibase/liquibase-pro"
- name: Build and Package
run: mvn -B dependency:go-offline clean package -DskipTests=true
- name: Save Artifacts
uses: actions/upload-artifact@v2
with:
name: liquibase-redshift-artifacts
path: |
target/*.jar
- name: Save Event File
uses: actions/upload-artifact@v3
with:
name: Event File
path: ${{ github.event_path }}
- name: Build Cache
uses: actions/[email protected]
with:
key: build-${{ github.run_number }}-${{ github.run_attempt }}
path: |
**/target/**
~/.m2/repository/org/liquibase/
unit-test:
name: Test Java ${{ matrix.java }}
runs-on: ubuntu-latest
needs: build
strategy:
fail-fast: false
matrix:
java: [ 8, 11, 17 ]
steps:
- uses: actions/checkout@v2
- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v2
with:
java-version: ${{ matrix.java }}
distribution: 'temurin'
cache: 'maven'
- name: Build Cache
uses: actions/[email protected]
with:
key: build-${{ github.run_number }}-${{ github.run_attempt }}
path: |
**/target/**
~/.m2/repository/org/liquibase/
- name: Run Tests
run: mvn -B jacoco:prepare-agent surefire:test -Dtest="RedshiftDatabaseTest" -DfailIfNoTests=true
- name: Archive Test Results
if: ${{ always() }}
uses: actions/upload-artifact@v2
with:
name: test-reports-jdk-${{ matrix.java }}
path: |
**/target/surefire-reports
**/target/jacoco.exec
prepare-database:
name: Clean and initialize database
needs: build
runs-on: ubuntu-latest
container:
image: liquibase/liquibase:latest
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v2
- name: Download Artifacts
uses: actions/download-artifact@v3
with:
name: liquibase-redshift-artifacts
- name: Download AWS Redshift driver
run: wget https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.14/redshift-jdbc42-2.1.0.14.jar
- name: Add Redshift extension and driver to liquibase classpath
run: |
cp redshift-jdbc42-2.1.0.14.jar /liquibase/lib/
cp liquibase-redshift-0-SNAPSHOT.jar /liquibase/lib/
- name: Clean AWS Redshift Database
run: liquibase --username="${{ secrets.TH_DB_ADMIN }}" --password="${{ secrets.TH_DB_PASSWD }}" --url="${{ secrets.TH_REDSHIFTURL }}" dropAll
- name: Init Database
run: liquibase --classpath="src/test/resources" --changeLogFile="harness.initScript.sql" --username="${{ secrets.TH_DB_ADMIN }}" --password="${{ secrets.TH_DB_PASSWD }}" --url="${{ secrets.TH_REDSHIFTURL }}" update
integration-test:
name: Test Harness for Redshift ${{ matrix.redshift }}
needs: prepare-database
runs-on: ubuntu-latest
env:
LIQUIBASE_PRO_LICENSE_KEY: ${{ secrets.PRO_LICENSE_KEY }}
strategy:
fail-fast: false
matrix:
redshift: [ "" ]
steps:
- uses: actions/checkout@v2
- name: Set up JDK
uses: actions/setup-java@v3
with:
java-version: 11
distribution: 'temurin'
cache: 'maven'
- name: Build Cache
uses: actions/[email protected]
with:
key: build-${{ github.run_number }}-${{ github.run_attempt }}
path: |
**/target/**
~/.m2/repository/org/liquibase/
- name: Debug
run: |
pwd
ls -l
ls -l ~/.m2/repository/org/liquibase/liquibase-commercial/
mvn dependency:tree
- name: Harness Test Run
run: mvn -Dtest="LiquibaseHarnessSuiteIT" -DdbName=redshift -DdbUsername=${{secrets.TH_DB_ADMIN}} -DdbPassword=${{secrets.TH_DB_PASSWD}} -DdbUrl=${{secrets.TH_REDSHIFTURL}} test
- name: Foundational Harness Test Run
run: mvn -Dtest="LiquibaseHarnessFoundationalSuiteTest" -DdbName=redshift -DdbUsername=${{secrets.TH_DB_ADMIN}} -DdbPassword=${{secrets.TH_DB_PASSWD}} -DdbUrl=${{secrets.TH_REDSHIFTURL}} test
- name: Advanced Harness Test Run
run: mvn -Dtest="LiquibaseHarnessAdvancedSuiteTest" -DdbName=redshift -DdbUsername=${{secrets.TH_DB_ADMIN}} -DdbPassword=${{secrets.TH_DB_PASSWD}} -DdbUrl=${{secrets.TH_REDSHIFTURL}} test
- name: Archive Redshift Test Results
if: ${{ always() }}
uses: actions/upload-artifact@v3
with:
name: redshift-test-results
path: build/spock-reports
dependabot:
name: Merge dependabot
runs-on: ubuntu-latest
needs: integration-test
permissions:
contents: write
pull-requests: write
if: ${{ github.actor == 'dependabot[bot]' }}
steps:
- name: Dependabot metadata
id: dependabot-metadata
uses: dependabot/[email protected]
- name: Approve patch and minor updates
if: ${{steps.dependabot-metadata.outputs.update-type == 'version-update:semver-patch' || steps.dependabot-metadata.outputs.update-type == 'version-update:semver-minor'}}
run: |
gh pr merge --auto --merge "$PR_URL"
gh pr review $PR_URL --approve -b "I'm **approving** this pull request because **it includes a patch or minor update**"
env:
PR_URL: ${{github.event.pull_request.html_url}}
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}