From c5d4e719a73685e43754bee20aa2ddabd4819e72 Mon Sep 17 00:00:00 2001 From: John Niang Date: Tue, 26 Mar 2024 22:11:52 +0800 Subject: [PATCH] Simplify GitHub workflow by using reusable workflow (#130) --- .github/workflows/cd.yaml | 17 ++++ .github/workflows/ci.yaml | 13 +++ .github/workflows/workflow.yaml | 138 -------------------------------- build.gradle | 4 + 4 files changed, 34 insertions(+), 138 deletions(-) create mode 100644 .github/workflows/cd.yaml create mode 100644 .github/workflows/ci.yaml delete mode 100644 .github/workflows/workflow.yaml diff --git a/.github/workflows/cd.yaml b/.github/workflows/cd.yaml new file mode 100644 index 0000000..bb8a309 --- /dev/null +++ b/.github/workflows/cd.yaml @@ -0,0 +1,17 @@ +name: CD + +on: + release: + types: + - published + +jobs: + cd: + uses: halo-sigs/reusable-workflows/.github/workflows/plugin-cd.yaml@v1 + secrets: + halo-username: ${{ secrets.HALO_USERNAME }} + halo-password: ${{ secrets.HALO_PASSWORD }} + permissions: + contents: write + with: + app-id: app-Qxhpp diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 0000000..67aaa85 --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,13 @@ +name: CI + +on: + push: + branches: + - main + pull_request: + branches: + - main + +jobs: + ci: + uses: halo-sigs/reusable-workflows/.github/workflows/plugin-ci.yaml@v1 diff --git a/.github/workflows/workflow.yaml b/.github/workflows/workflow.yaml deleted file mode 100644 index 3628221..0000000 --- a/.github/workflows/workflow.yaml +++ /dev/null @@ -1,138 +0,0 @@ -name: Build Plugin JAR File - -on: - push: - branches: - - main - paths: - - "**" - - "!**.md" - release: - types: - - published - pull_request: - branches: - - main - paths: - - "**" - - "!**.md" - -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - with: - submodules: true - - name: Set up JDK 17 - uses: actions/setup-java@v2 - with: - distribution: 'temurin' - cache: 'gradle' - java-version: 17 - - name: Set up Node.js - uses: actions/setup-node@v3 - with: - node-version: 18 - - uses: pnpm/action-setup@v2.0.1 - name: Install pnpm - id: pnpm-install - with: - version: 8 - run_install: false - - name: Get pnpm store directory - id: pnpm-cache - run: | - echo "::set-output name=pnpm_cache_dir::$(pnpm store path)" - - uses: actions/cache@v3 - name: Setup pnpm cache - with: - path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/widget/pnpm-lock.yaml') }} - restore-keys: | - ${{ runner.os }}-pnpm-store- - - name: Install Frontend Dependencies - run: | - ./gradlew pnpmInstall - - name: Build with Gradle - run: | - # Set the version with tag name when releasing - version=${{ github.event.release.tag_name }} - version=${version#v} - sed -i "s/version=.*-SNAPSHOT$/version=$version/1" gradle.properties - ./gradlew clean build -x test - - name: Archive plugin-s3 jar - uses: actions/upload-artifact@v2 - with: - name: plugin-s3 - path: | - build/libs/*.jar - retention-days: 1 - - github-release: - runs-on: ubuntu-latest - needs: build - if: github.event_name == 'release' - steps: - - name: Download plugin-s3 jar - uses: actions/download-artifact@v2 - with: - name: plugin-s3 - path: build/libs - - name: Get Name of Artifact - id: get_artifact - run: | - ARTIFACT_PATHNAME=$(ls build/libs/*.jar | head -n 1) - ARTIFACT_NAME=$(basename ${ARTIFACT_PATHNAME}) - echo "Artifact pathname: ${ARTIFACT_PATHNAME}" - echo "Artifact name: ${ARTIFACT_NAME}" - echo "ARTIFACT_PATHNAME=${ARTIFACT_PATHNAME}" >> $GITHUB_ENV - echo "ARTIFACT_NAME=${ARTIFACT_NAME}" >> $GITHUB_ENV - echo "RELEASE_ID=${{ github.event.release.id }}" >> $GITHUB_ENV - - name: Upload a Release Asset - uses: actions/github-script@v2 - if: github.event_name == 'release' - with: - github-token: ${{secrets.GITHUB_TOKEN}} - script: | - console.log('environment', process.versions); - - const fs = require('fs').promises; - - const { repo: { owner, repo }, sha } = context; - console.log({ owner, repo, sha }); - - const releaseId = process.env.RELEASE_ID - const artifactPathName = process.env.ARTIFACT_PATHNAME - const artifactName = process.env.ARTIFACT_NAME - console.log('Releasing', releaseId, artifactPathName, artifactName) - - await github.repos.uploadReleaseAsset({ - owner, repo, - release_id: releaseId, - name: artifactName, - data: await fs.readFile(artifactPathName) - }); - - app-store-release: - runs-on: ubuntu-latest - needs: build - if: github.event_name == 'release' - steps: - - uses: actions/checkout@v3 - with: - submodules: true - - name: Download plugin-s3 jar - uses: actions/download-artifact@v2 - with: - name: plugin-s3 - path: build/libs - - name: Sync to Halo App Store - uses: halo-sigs/app-store-release-action@main - with: - github-token: ${{secrets.GITHUB_TOKEN}} - app-id: ${{secrets.APP_ID}} - release-id: ${{ github.event.release.id }} - assets-dir: "build/libs" - halo-username: ${{ secrets.HALO_USERNAME }} - halo-password: ${{ secrets.HALO_PASSWORD }} diff --git a/build.gradle b/build.gradle index 4cac596..042e2c0 100644 --- a/build.gradle +++ b/build.gradle @@ -59,6 +59,10 @@ task buildFrontend(type: PnpmTask) { args = ['build'] } +tasks.named('buildFrontend') { + dependsOn 'pnpmInstall' +} + build { // build frontend before build tasks.getByName('compileJava').dependsOn('buildFrontend')