From 5185fd13b8cfa81219d293cc99626ee76eb353d3 Mon Sep 17 00:00:00 2001 From: Ludy Date: Sun, 21 Apr 2024 17:30:17 +0200 Subject: [PATCH] updating the build files (#1100) --- .github/workflows/build.yml | 28 ++-- .github/workflows/licenses-update.yml | 15 ++- .github/workflows/push-docker.yml | 172 ++++++++++++------------- .github/workflows/releaseArtifacts.yml | 84 +++++++----- .github/workflows/swagger.yml | 41 +++--- .github/workflows/test.yml | 64 ++++----- 6 files changed, 201 insertions(+), 203 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9dd64aca..f4d37599 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -2,12 +2,12 @@ name: "Build repo" on: push: - branches: [ "main" ] + branches: ["main"] paths-ignore: - ".github/**" - "**/*.md" pull_request: - branches: [ "main" ] + branches: ["main"] paths-ignore: - ".github/**" - "**/*.md" @@ -25,16 +25,18 @@ jobs: fail-fast: false steps: - - name: Checkout repository - uses: actions/checkout@v3 + - name: Checkout repository + uses: actions/checkout@v4 - - name: Set up JDK 17 - uses: actions/setup-java@v3 - with: - java-version: '17' - distribution: 'temurin' + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: "17" + distribution: "temurin" - - uses: gradle/gradle-build-action@v2.4.2 - with: - gradle-version: 7.6 - arguments: build --no-build-cache + - uses: gradle/actions/setup-gradle@v3 + with: + gradle-version: 7.6 + + - name: Build with Gradle + run: ./gradlew build --no-build-cache diff --git a/.github/workflows/licenses-update.yml b/.github/workflows/licenses-update.yml index 1fd3acfb..a3996bc6 100644 --- a/.github/workflows/licenses-update.yml +++ b/.github/workflows/licenses-update.yml @@ -5,7 +5,7 @@ on: branches: - main paths: - - 'build.gradle' + - "build.gradle" permissions: contents: write @@ -17,13 +17,15 @@ jobs: steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Set up JDK 17 - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: - java-version: '17' - distribution: 'adopt' + java-version: "17" + distribution: "adopt" + + - uses: gradle/actions/setup-gradle@v3 - name: Run Gradle Command run: ./gradlew clean generateLicenseReport @@ -44,7 +46,7 @@ jobs: - name: Create Pull Request if: env.CHANGES_DETECTED == 'true' - uses: peter-evans/create-pull-request@v3 + uses: peter-evans/create-pull-request@v6 with: token: ${{ secrets.GITHUB_TOKEN }} commit-message: "Update 3rd Party Licenses" @@ -58,4 +60,3 @@ jobs: [1]: https://github.com/peter-evans/create-pull-request draft: false delete-branch: true - diff --git a/.github/workflows/push-docker.yml b/.github/workflows/push-docker.yml index e34f17b2..f8fc4200 100644 --- a/.github/workflows/push-docker.yml +++ b/.github/workflows/push-docker.yml @@ -14,105 +14,99 @@ jobs: push: runs-on: ubuntu-latest steps: + - uses: actions/checkout@v4 - - uses: actions/checkout@v3.5.2 + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: "17" + distribution: "temurin" - - name: Set up JDK 17 - uses: actions/setup-java@v3.11.0 - with: - java-version: '17' - distribution: 'temurin' + - uses: gradle/actions/setup-gradle@v3 + with: + gradle-version: 7.6 + - name: Run Gradle Command + run: ./gradlew clean build + env: + DOCKER_ENABLE_SECURITY: false - - uses: gradle/gradle-build-action@v2.4.2 - env: - DOCKER_ENABLE_SECURITY: false - with: - gradle-version: 7.6 - arguments: clean build + - name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v3 - - name: Make Gradle wrapper executable - run: chmod +x gradlew + - name: Get version number + id: versionNumber + run: echo "versionNumber=$(./gradlew printVersion --quiet | tail -1)" >> $GITHUB_OUTPUT - - name: Get version number - id: versionNumber - run: echo "::set-output name=versionNumber::$(./gradlew printVersion --quiet | tail -1)" + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKER_HUB_USERNAME }} + password: ${{ secrets.DOCKER_HUB_API }} - - name: Login to Docker Hub - uses: docker/login-action@v2.1.0 - with: - username: ${{ secrets.DOCKER_HUB_USERNAME }} - password: ${{ secrets.DOCKER_HUB_API }} + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ github.token }} - - name: Login to GitHub Container Registry - uses: docker/login-action@v2.1.0 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ github.token }} + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 - - name: Convert repository owner to lowercase - id: repoowner - run: echo "::set-output name=lowercase::$(echo ${{ github.repository_owner }} | awk '{print tolower($0)}')" + - name: Convert repository owner to lowercase + id: repoowner + run: echo "lowercase=$(echo ${{ github.repository_owner }} | awk '{print tolower($0)}')" >> $GITHUB_OUTPUT - - name: Generate tags - id: meta - uses: docker/metadata-action@v4.4.0 - with: - images: | - ${{ secrets.DOCKER_HUB_USERNAME }}/s-pdf - ghcr.io/${{ steps.repoowner.outputs.lowercase }}/s-pdf - tags: | - type=raw,value=${{ steps.versionNumber.outputs.versionNumber }},enable=${{ github.ref == 'refs/heads/master' }} - type=raw,value=latest,enable=${{ github.ref == 'refs/heads/master' }} - type=raw,value=alpha,enable=${{ github.ref == 'refs/heads/main' }} + - name: Generate tags + id: meta + uses: docker/metadata-action@v5 + with: + images: | + ${{ secrets.DOCKER_HUB_USERNAME }}/s-pdf + ghcr.io/${{ steps.repoowner.outputs.lowercase }}/s-pdf + tags: | + type=raw,value=${{ steps.versionNumber.outputs.versionNumber }},enable=${{ github.ref == 'refs/heads/master' }} + type=raw,value=latest,enable=${{ github.ref == 'refs/heads/master' }} + type=raw,value=alpha,enable=${{ github.ref == 'refs/heads/main' }} - - name: Set up QEMU - uses: docker/setup-qemu-action@v2.1.0 + - name: Build and push main Dockerfile + uses: docker/build-push-action@v5 + with: + builder: ${{ steps.buildx.outputs.name }} + context: . + file: ./Dockerfile + push: true + cache-from: type=gha + cache-to: type=gha,mode=max + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + build-args: VERSION_TAG=${{ steps.versionNumber.outputs.versionNumber }} + platforms: linux/amd64,linux/arm64/v8 - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2.5.0 + - name: Generate tags ultra-lite + id: meta2 + uses: docker/metadata-action@v5 + if: github.ref != 'refs/heads/main' + with: + images: | + ${{ secrets.DOCKER_HUB_USERNAME }}/s-pdf + ghcr.io/${{ steps.repoowner.outputs.lowercase }}/s-pdf + tags: | + type=raw,value=${{ steps.versionNumber.outputs.versionNumber }}-ultra-lite,enable=${{ github.ref == 'refs/heads/master' }} + type=raw,value=latest-ultra-lite,enable=${{ github.ref == 'refs/heads/master' }} - - name: Build and push main Dockerfile - uses: docker/build-push-action@v4.0.0 - with: - context: . - dockerfile: ./Dockerfile - push: true - cache-from: type=gha - cache-to: type=gha,mode=max - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - build-args: - VERSION_TAG=${{ steps.versionNumber.outputs.versionNumber }} - platforms: linux/amd64,linux/arm64/v8 - - - - - name: Generate tags ultra-lite - id: meta2 - uses: docker/metadata-action@v4.4.0 - if: github.ref != 'refs/heads/main' - with: - images: | - ${{ secrets.DOCKER_HUB_USERNAME }}/s-pdf - ghcr.io/${{ steps.repoowner.outputs.lowercase }}/s-pdf - tags: | - type=raw,value=${{ steps.versionNumber.outputs.versionNumber }}-ultra-lite,enable=${{ github.ref == 'refs/heads/master' }} - type=raw,value=latest-ultra-lite,enable=${{ github.ref == 'refs/heads/master' }} - - - - name: Build and push Dockerfile-ultra-lite - uses: docker/build-push-action@v4.0.0 - if: github.ref != 'refs/heads/main' - with: - context: . - file: ./Dockerfile-ultra-lite - push: true - cache-from: type=gha - cache-to: type=gha,mode=max - tags: ${{ steps.meta2.outputs.tags }} - labels: ${{ steps.meta2.outputs.labels }} - build-args: - VERSION_TAG=${{ steps.versionNumber.outputs.versionNumber }} - platforms: linux/amd64,linux/arm64/v8 \ No newline at end of file + - name: Build and push Dockerfile-ultra-lite + uses: docker/build-push-action@v5 + if: github.ref != 'refs/heads/main' + with: + context: . + file: ./Dockerfile-ultra-lite + push: true + cache-from: type=gha + cache-to: type=gha,mode=max + tags: ${{ steps.meta2.outputs.tags }} + labels: ${{ steps.meta2.outputs.labels }} + build-args: VERSION_TAG=${{ steps.versionNumber.outputs.versionNumber }} + platforms: linux/amd64,linux/arm64/v8 diff --git a/.github/workflows/releaseArtifacts.yml b/.github/workflows/releaseArtifacts.yml index 5042141a..f9b5f2b0 100644 --- a/.github/workflows/releaseArtifacts.yml +++ b/.github/workflows/releaseArtifacts.yml @@ -1,6 +1,7 @@ name: Release Artifacts on: + workflow_dispatch: release: types: [created] permissions: @@ -14,44 +15,61 @@ jobs: enable_security: [true, false] include: - enable_security: true - file_suffix: '-with-login' + file_suffix: "-with-login" - enable_security: false - file_suffix: '' + file_suffix: "" steps: - - uses: actions/checkout@v3.5.2 + - uses: actions/checkout@v4 - - name: Set up JDK 17 - uses: actions/setup-java@v3.11.0 - with: - java-version: '17' - distribution: 'temurin' + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: "17" + distribution: "temurin" - - name: Grant execute permission for gradlew - run: chmod +x gradlew + - uses: gradle/actions/setup-gradle@v3 + with: + gradle-version: 7.6 - - name: Generate jar (With Security=${{ matrix.enable_security }}) - run: ./gradlew clean createExe - env: - DOCKER_ENABLE_SECURITY: ${{ matrix.enable_security }} + - name: Generate jar (With Security=${{ matrix.enable_security }}) + run: ./gradlew clean createExe + env: + DOCKER_ENABLE_SECURITY: ${{ matrix.enable_security }} - - name: Upload binaries to release - uses: svenstaro/upload-release-action@v2 - with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - file: ./build/launch4j/Stirling-PDF.exe - asset_name: Stirling-PDF${{ matrix.file_suffix }}.exe - tag: ${{ github.ref }} - overwrite: true + - name: Get version number + id: versionNumber + run: echo "versionNumber=$(./gradlew printVersion --quiet | tail -1)" >> $GITHUB_OUTPUT - - name: Get version number - id: versionNumber - run: echo "::set-output name=versionNumber::$(./gradlew printVersion --quiet | tail -1)" + - name: Rename binarie + if: matrix.file_suffix != '' + run: cp ./build/launch4j/Stirling-PDF.exe ./build/launch4j/Stirling-PDF${{ matrix.file_suffix }}.exe - - name: Upload jar binaries to release - uses: svenstaro/upload-release-action@v2 - with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - file: ./build/libs/Stirling-PDF-${{ steps.versionNumber.outputs.versionNumber }}.jar - asset_name: Stirling-PDF${{ matrix.file_suffix }}.jar - tag: ${{ github.ref }} - overwrite: true + - name: Upload Assets binarie + uses: actions/upload-artifact@v4 + with: + path: ./build/launch4j/Stirling-PDF${{ matrix.file_suffix }}.exe + name: Stirling-PDF${{ matrix.file_suffix }}.exe + overwrite: true + retention-days: 1 + if-no-files-found: error + - name: Upload binaries to release + uses: softprops/action-gh-release@v2 + with: + files: ./build/launch4j/Stirling-PDF${{ matrix.file_suffix }}.exe + + - name: Rename jar binaries + run: cp ./build/libs/Stirling-PDF-${{ steps.versionNumber.outputs.versionNumber }}.jar ./build/libs/Stirling-PDF${{ matrix.file_suffix }}.jar + + - name: Upload Assets jar binaries + uses: actions/upload-artifact@v4 + with: + path: ./build/libs/Stirling-PDF${{ matrix.file_suffix }}.jar + name: Stirling-PDF${{ matrix.file_suffix }}.jar + overwrite: true + retention-days: 1 + if-no-files-found: error + + - name: Upload jar binaries to release + uses: softprops/action-gh-release@v2 + with: + files: ./build/libs/Stirling-PDF${{ matrix.file_suffix }}.jar diff --git a/.github/workflows/swagger.yml b/.github/workflows/swagger.yml index f60bc15f..88e6df7e 100644 --- a/.github/workflows/swagger.yml +++ b/.github/workflows/swagger.yml @@ -8,31 +8,32 @@ on: jobs: push: - runs-on: ubuntu-latest steps: + - uses: actions/checkout@v4 - - uses: actions/checkout@v3.5.2 + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: "17" + distribution: "temurin" - - name: Set up JDK 17 - uses: actions/setup-java@v3.11.0 - with: - java-version: '17' - distribution: 'temurin' + - uses: gradle/actions/setup-gradle@v3 - - name: Grant execute permission for gradlew - run: chmod +x gradlew + - name: Generate Swagger documentation + run: ./gradlew generateOpenApiDocs - - name: Generate Swagger documentation - run: ./gradlew generateOpenApiDocs + - name: Upload Swagger Documentation to SwaggerHub + run: ./gradlew swaggerhubUpload + env: + SWAGGERHUB_API_KEY: ${{ secrets.SWAGGERHUB_API_KEY }} - - name: Upload Swagger Documentation to SwaggerHub - run: ./gradlew swaggerhubUpload - env: - SWAGGERHUB_API_KEY: ${{ secrets.SWAGGERHUB_API_KEY }} + - name: Get version number + id: versionNumber + run: echo "versionNumber=$(./gradlew printVersion --quiet | tail -1)" >> $GITHUB_OUTPUT - - name: Set API version as published and default on SwaggerHub - run: | - curl -X PUT -H "Authorization: ${SWAGGERHUB_API_KEY}" "https://api.swaggerhub.com/apis/Frooodle/Stirling-PDF/${{ steps.versionNumber.outputs.versionNumber }}/settings/lifecycle" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"published\":true,\"default\":true}" - env: - SWAGGERHUB_API_KEY: ${{ secrets.SWAGGERHUB_API_KEY }} + - name: Set API version as published and default on SwaggerHub + run: | + curl -X PUT -H "Authorization: ${SWAGGERHUB_API_KEY}" "https://api.swaggerhub.com/apis/Frooodle/Stirling-PDF/${{ steps.versionNumber.outputs.versionNumber }}/settings/lifecycle" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"published\":true,\"default\":true}" + env: + SWAGGERHUB_API_KEY: ${{ secrets.SWAGGERHUB_API_KEY }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1920a339..eef33335 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -3,54 +3,36 @@ name: Docker Compose Tests on: pull_request: paths: - - 'src/**' - - '**.gradle' - - '!src/main/java/resources/messages*' - - 'exampleYmlFiles/**' - - 'Dockerfile' - - 'Dockerfile**' + - "src/**" + - "**.gradle" + - "!src/main/java/resources/messages*" + - "exampleYmlFiles/**" + - "Dockerfile" + - "Dockerfile**" jobs: test: runs-on: ubuntu-latest steps: - - name: Checkout Repository - uses: actions/checkout@v2 + - name: Checkout Repository + uses: actions/checkout@v4 - - name: Set up Java 17 - uses: actions/setup-java@v2 - with: - java-version: '17' - distribution: 'adopt' + - name: Set up Java 17 + uses: actions/setup-java@v4 + with: + java-version: "17" + distribution: "adopt" - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v1 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 - - name: Run Docker Compose Tests - run: | - chmod +x ./gradlew + - name: Install Docker Compose + run: | + sudo curl -SL "https://github.com/docker/compose/releases/download/v2.26.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose + # sudo chmod +x /usr/local/bin/docker-compose - - name: Get version number - id: versionNumber - run: echo "::set-output name=versionNumber::$(./gradlew printVersion --quiet | tail -1)" - - - - name: Cache Docker layers - uses: actions/cache@v2 - with: - path: /tmp/.buildx-cache - key: ${{ runner.os }}-buildx-${{ steps.versionNumber.outputs.versionNumber }} - restore-keys: | - ${{ runner.os }}-buildx- - - - name: Install Docker Compose - run: | - sudo curl -L "https://github.com/docker/compose/releases/download/v2.6.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose - sudo chmod +x /usr/local/bin/docker-compose - - - - name: Run Docker Compose Tests - run: | - chmod +x ./test.sh - ./test.sh + - name: Run Docker Compose Tests + run: | + chmod +x ./test.sh + ./test.sh