Skip to content

update nimbus and lf-api-client-core #281

update nimbus and lf-api-client-core

update nimbus and lf-api-client-core #281

Workflow file for this run

name: lf-repository-api-client-java-CI
on:
push:
branches:
- v1
pull_request:
branches:
- v1
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
env:
API_VERSION: 'v1'
VERSION_PREFIX: '2.0.5'
GITHUB_PAGES_BRANCH: 'gh-pages'
jobs:
build-n-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK 8
uses: actions/setup-java@v4
with:
java-version: '8'
distribution: 'temurin'
- name: Build project
run: mvn -B package -Dmaven.test.skip=true --file pom.xml
- name: Run unit tests
run: mvn -Dtest=com.laserfiche.repository.api.unit.** test
- name: Publish unit test results
uses: EnricoMi/publish-unit-test-result-action@v2
if: always()
with:
files: target/surefire-reports/*.xml
check_name: unit-test-results
- name: Delete test reports
run: rm -rf target/surefire-reports/*.xml
- name: Run integration tests against cloud
id: integration-test-cloud
env:
ACCESS_KEY: ${{ secrets.DEV_CA_PUBLIC_USE_INTEGRATION_TEST_ACCESS_KEY }}
SERVICE_PRINCIPAL_KEY: ${{ secrets.DEV_CA_PUBLIC_USE_TESTOAUTHSERVICEPRINCIPAL_SERVICE_PRINCIPAL_KEY }}
REPOSITORY_ID: ${{ secrets.DEV_CA_PUBLIC_USE_REPOSITORY_ID_1 }}
AUTHORIZATION_TYPE: ${{ secrets.AUTHORIZATION_TYPE }}
TEST_HEADER: ${{ secrets.TEST_HEADER }}
run: mvn -Dtest=com.laserfiche.repository.api.integration.** test
- name: Publish cloud test results
uses: EnricoMi/publish-unit-test-result-action@v2
if: always()
with:
files: target/surefire-reports/*.xml
check_name: integration-test-results-cloud
- name: Delete test reports
run: rm -rf target/surefire-reports/*.xml
- name: Run integration tests against self-hosted
id: integration-test-self-hosted
if: always() && (steps.integration-test-cloud.outcome == 'success' || steps.integration-test-cloud.outcome == 'failure')
env:
REPOSITORY_ID: ${{ secrets.APISERVER_REPOSITORY_ID }}
APISERVER_USERNAME: ${{ secrets.APISERVER_USERNAME }}
APISERVER_PASSWORD: ${{ secrets.APISERVER_PASSWORD }}
APISERVER_REPOSITORY_API_BASE_URL: ${{ secrets.APISERVER_REPOSITORY_API_BASE_URL }}
AUTHORIZATION_TYPE: ${{ secrets.APISERVER_AUTHORIZATION_TYPE }}
run: mvn -Dtest=com.laserfiche.repository.api.integration.** test
- name: Publish self-hosted test results
uses: EnricoMi/publish-unit-test-result-action@v2
if: always()
with:
files: target/surefire-reports/*.xml
check_name: integration-test-results-self-hosted
build-documentation:
runs-on: ubuntu-latest
needs: [build-n-test]
steps:
- uses: actions/checkout@v4
- name: Set up JDK 8
uses: actions/setup-java@v4
with:
java-version: '8'
distribution: 'temurin'
- name: Create temporary directory
run: mkdir -p ./docs_temp/${{ github.ref_name }}
- name: Generate Javadoc
run: mvn javadoc:javadoc
- name: Move javadoc files to temporary directory
run: mv ${{ github.workspace }}/target/site/ ${{ github.workspace }}/docs_temp/${{ github.ref_name }}
- name: Upload a build artifact
uses: actions/upload-artifact@v4
with:
name: documentation-artifact
# A file, directory or wildcard pattern that describes what to upload
path: ${{ github.workspace }}/docs_temp/${{ github.ref_name }}/site/apidocs
- name: Delete temporary directory
run: rm -r ./docs_temp
publish-production-package:
runs-on: ubuntu-latest
environment: production
if: ${{ github.run_attempt != 1 }}
needs: [build-n-test, build-documentation] # wait for build to finish
steps:
- uses: actions/checkout@v4
- name: Set up Maven
uses: actions/setup-java@v4
with:
java-version: '8'
distribution: 'temurin'
server-id: central
server-username: MAVEN_USERNAME
server-password: MAVEN_PASSWORD
gpg-passphrase: MAVEN_GPG_PASSPHRASE
- name: Import GPG Key
run: |
echo "${{ secrets.MAVEN_GPG_SECRET_KEY }}" | gpg --batch --import
- name: Generate PACKAGE_VERSION
run: echo "PACKAGE_VERSION=${{ env.VERSION_PREFIX }}" >> $GITHUB_ENV
- name: Set version
run: mvn versions:set -DnewVersion=${{ env.PACKAGE_VERSION }}
- name: Publish to Sonatype
run: mvn clean deploy -Pdeploy-to-maven -Dmaven.test.skip=true -Dgpg.passphrase=${{ secrets.MAVEN_GPG_SECRET_KEY_PASSPHRASE }}
env:
MAVEN_USERNAME: ${{ secrets.MAVEN_USERTOKEN_USERNAME }}
MAVEN_PASSWORD: ${{ secrets.MAVEN_USERTOKEN_PASSWORD }}
MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_SECRET_KEY_PASSPHRASE }}
- name: Tag commit
uses: rickstaa/action-create-tag@v1
with:
tag: ${{ env.API_VERSION }}-${{ env.PACKAGE_VERSION }}
commit_sha: ${{ github.sha }}
message: Workflow run ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
publish-documentation:
runs-on: ubuntu-latest
timeout-minutes: 10
environment: github-pages
needs: [publish-production-package]
steps:
- name: Set DOCUMENTATION_VERSION environment variable
run: |
version_prefix=${{ env.VERSION_PREFIX }}
major_version=${version_prefix%%.*}
documentation_version=$major_version.x
echo $documentation_version
echo DOCUMENTATION_VERSION=$documentation_version >> $GITHUB_ENV
- name: Print DOCUMENTATION_VERSION environment variable
run: |
echo 'Publishing documentation to ${{ env.GITHUB_PAGES_BRANCH }} for ${{ env.API_VERSION }} ${{ env.DOCUMENTATION_VERSION }}.'
- uses: actions/checkout@v4
with:
ref: ${{ env.GITHUB_PAGES_BRANCH }}
- name: Delete documentation directory
run: rm -f -r ./docs/${{ env.API_VERSION }}/${{ env.DOCUMENTATION_VERSION }}
- name: Create documentation directory
run: mkdir -p ./docs/${{ env.API_VERSION }}/${{ env.DOCUMENTATION_VERSION }}
- name: Download documentation build artifact
uses: actions/download-artifact@v4
with:
name: documentation-artifact
path: ./docs/${{ env.API_VERSION }}/${{ env.DOCUMENTATION_VERSION }}
- name: Create a pull request
uses: peter-evans/create-pull-request@v4.2.3
with:
branch: ${{ env.GITHUB_PAGES_BRANCH }}-${{ env.API_VERSION }}-${{ env.DOCUMENTATION_VERSION }}-patch
delete-branch: true
title: 'Automated documentation update for ${{ env.API_VERSION }} ${{ env.DOCUMENTATION_VERSION }} by action ${{ github.run_id }}'
commit-message: 'Automated documentation update for ${{ env.API_VERSION }} ${{ env.DOCUMENTATION_VERSION }} by action ${{ github.run_id }}'
body: 'Automated documentation update for ${{ env.API_VERSION }} ${{ env.DOCUMENTATION_VERSION }} by action ${{ github.run_id }}'
assignees: ${{ github.actor }}