diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..ba39c23 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,127 @@ +name: Release Artifacts to Maven Central + +on: + push: + branches: [ "gh-actions" ] + +permissions: + contents: write + packages: write + pages: write + id-token: write + +jobs: + build: + + runs-on: ubuntu-latest + + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + + steps: + - uses: actions/checkout@v4 + + - name: Set up JDK 17 + uses: actions/setup-java@v3 + with: + java-version: '17' + distribution: 'temurin' + server-id: github # Value of the distributionManagement/repository/id field of the pom.xml + settings-path: ${{ github.workspace }} # location for the settings.xml file + + - name: maven-settings-xml-action + uses: whelk-io/maven-settings-xml-action@v22 + with: + servers: '[{ "id": "${repo.id}", "username": "${repo.user}", "password": "${repo.pass}" }]' + + - name: Use Node.js + uses: actions/setup-node@v3 + with: + node-version: '20.x' + - run: cd docs && npm ci + - run: cd docs && npm run build + + - name: Find and Replace + uses: jacobtomlinson/gha-find-replace@v3 + with: + find: "ollama4j-revision" + replace: ${{ github.ref_name }} + regex: false + + - name: Find and Replace + uses: jacobtomlinson/gha-find-replace@v3 + with: + find: "mvn-repo-id" + replace: central + regex: false + + - name: Import GPG key + uses: crazy-max/ghaction-import-gpg@v6 + with: + gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }} + passphrase: ${{ secrets.GPG_PASSPHRASE }} + - name: List keys + run: gpg -K + + - name: Build with Maven + run: mvn --file pom.xml -U clean package -Punit-tests && cp -r ./target/apidocs/. ./docs/build/apidocs + + - name: Doxygen Action + uses: mattnotmitt/doxygen-action@v1.1.0 + with: + doxyfile-path: "./Doxyfile" + working-directory: "." + + - name: Publish to Maven Central + run: mvn deploy -Dgpg.passphrase=${{ secrets.GPG_PASSPHRASE }} -Drepo.id=central -Drepo.user=${{ secrets.MVN_USER }} -Drepo.pass=${{ secrets.MVN_PASS }} + + - name: Upload Release Asset - JAR + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ github.event.release.upload_url }} + asset_path: target/ollama4j-${{ github.ref_name }}.jar + asset_name: ollama4j-${{ github.ref_name }}.jar + asset_content_type: application/x-jar + + - name: Upload Release Asset - Javadoc JAR + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ github.event.release.upload_url }} + asset_path: target/ollama4j-${{ github.ref_name }}-javadoc.jar + asset_name: ollama4j-${{ github.ref_name }}-javadoc.jar + asset_content_type: application/x-jar + + - name: Upload Release Asset - Sources JAR + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ github.event.release.upload_url }} + asset_path: target/ollama4j-${{ github.ref_name }}-sources.jar + asset_name: ollama4j-${{ github.ref_name }}-sources.jar + asset_content_type: application/x-jar + + - name: Publish to GitHub Packages Apache Maven + run: mvn deploy -Punit-tests -s $GITHUB_WORKSPACE/settings.xml -Dgpg.passphrase=${{ secrets.GPG_PASSPHRASE }} -Drepo.id=github -Drepo.user=${{ secrets.GH_MVN_USER }} -Drepo.pass=${{ secrets.GH_MVN_PASS }} -DaltDeploymentRepository=github::default::https://maven.pkg.github.com/ollama4j/ollama4j + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Setup Pages + uses: actions/configure-pages@v5 + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + # Upload entire repository + path: './docs/build/.' + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 + + - name: Release message + run: | + echo "### Released version: ${{ github.ref_name }} 🚀" >> $GITHUB_STEP_SUMMARY \ No newline at end of file