From 60e2039e56cf8f8ec405b741798cfa139cccc001 Mon Sep 17 00:00:00 2001 From: MengYX Date: Fri, 6 Nov 2020 22:40:23 +0800 Subject: [PATCH] Update CI --- .github/workflows/build.yml | 67 ++++++++++++ .github/workflows/release.yml | 199 ++++++++++++++++++---------------- 2 files changed, 174 insertions(+), 92 deletions(-) create mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..1945dc9 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,67 @@ +name: Build +on: + push: + branches: [ master ] + paths: + - "**/*.js" + - "**/*.vue" + - "public/**/*" + - "package-lock.json" + - "package.json" + pull_request: + branches: [ master ] + types: [ opened, synchronize, reopened ] + paths: + - "**/*.js" + - "**/*.vue" + - "public/**/*" + - "package-lock.json" + - "package.json" + + + +jobs: + build: + runs-on: ubuntu-latest + strategy: + matrix: + build: [ legacy, modern ] + include: + - build: legacy + BUILD_ARGS: + - build: modern + BUILD_ARGS: "-- --modern" + steps: + - uses: actions/checkout@v2 + + - name: Use Node.js 14.x + uses: actions/setup-node@v1 + with: + node-version: 14.x + + - name: Get npm cache directory + id: npm-cache + run: echo "::set-output name=dir::$(npm config get cache)" + - uses: actions/cache@v2 + with: + path: ${{ steps.npm-cache.outputs.dir }} + key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} + restore-keys: ${{ runner.os }}-node- + + - name: Install Dependencies + run: | + npm ci + npm run fix-compatibility + + - name: Build + env: + GZIP: "--best" + run: | + npm run build ${{ matrix.BUILD_ARGS }} + tar -czvf dist.tar.gz -C ./dist . + + - name: Publish artifact + uses: actions/upload-artifact@v2 + with: + name: unlock-music-${{ matrix.build }}.tar.gz + path: ./dist.tar.gz diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 35c91af..d1e4370 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -3,104 +3,119 @@ name: Release and GitHub Pages on: push: tags: - - "v*" + - "v*" jobs: build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 - runs-on: ubuntu-18.04 + - name: Use Node.js 14.x + uses: actions/setup-node@v1 + with: + node-version: 14.x - steps: - - uses: actions/checkout@v2 - - - name: Use Node.js 12.x - uses: actions/setup-node@v1 - with: - node-version: 12.x - - - name: Install Dependencies - run: | - npm ci - npm run fix-compatibility - - name: Build Legacy - run: | - npm run build - tar -czf legacy.tar.gz -C ./dist . - zip -rJ9 legacy.zip ./dist - - name: Build Modern - run: | - npm run build -- --modern - tar -czf modern.tar.gz -C ./dist . - zip -rJ9 modern.zip ./dist - - run: sha256sum *.tar.gz *.zip > sha256sum.txt - - - name: Deploy - uses: peaceiris/actions-gh-pages@v3 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: ./dist - - - name: Get current time - id: date - run: echo "::set-output name=date::$(date +'%Y/%m/%d')" - - - name: Create a Release - id: create_release - uses: actions/create-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: ${{ github.ref }} - release_name: "Build ${{ steps.date.outputs.date }}" - draft: true - - - name: Upload Release Assets - legacy.tar.gz - uses: actions/upload-release-asset@v1.0.2 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: ./legacy.tar.gz - asset_name: legacy.tar.gz - asset_content_type: application/gzip - - - name: Upload Release Assets - legacy.zip - uses: actions/upload-release-asset@v1.0.2 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: ./legacy.zip - asset_name: legacy.zip - asset_content_type: application/zip - - - name: Upload Release Assets - modern.tar.gz - uses: actions/upload-release-asset@v1.0.2 - env: + - name: Get npm cache directory + id: npm-cache + run: echo "::set-output name=dir::$(npm config get cache)" + - uses: actions/cache@v2 + with: + path: ${{ steps.npm-cache.outputs.dir }} + key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} + restore-keys: ${{ runner.os }}-node- + + - name: Install Dependencies + run: | + npm ci + npm run fix-compatibility + + - name: Build Legacy + env: + GZIP: "--best" + run: | + npm run build + tar -czf legacy.tar.gz -C ./dist . + zip -rJ9 legacy.zip ./dist + + - name: Build Modern + env: + GZIP: "--best" + run: | + npm run build -- --modern + tar -czf modern.tar.gz -C ./dist . + zip -rJ9 modern.zip ./dist + + - name: Checksum + run: sha256sum *.tar.gz *.zip > sha256sum.txt + + - name: Deploy + uses: peaceiris/actions-gh-pages@v3 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: ./dist + + - name: Get current time + id: date + run: echo "::set-output name=date::$(date +'%Y/%m/%d')" + + - name: Create a Release + id: create_release + uses: actions/create-release@v1 + env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: ./modern.tar.gz - asset_name: modern.tar.gz - asset_content_type: application/gzip - - - name: Upload Release Assets - modern.zip - uses: actions/upload-release-asset@v1.0.2 - env: + with: + tag_name: ${{ github.ref }} + release_name: "Build ${{ steps.date.outputs.date }}" + draft: true + + - name: Upload Release Assets - legacy.tar.gz + uses: actions/upload-release-asset@v1.0.2 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./legacy.tar.gz + asset_name: legacy.tar.gz + asset_content_type: application/gzip + + - name: Upload Release Assets - legacy.zip + uses: actions/upload-release-asset@v1.0.2 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./legacy.zip + asset_name: legacy.zip + asset_content_type: application/zip + + - name: Upload Release Assets - modern.tar.gz + uses: actions/upload-release-asset@v1.0.2 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./modern.tar.gz + asset_name: modern.tar.gz + asset_content_type: application/gzip + + - name: Upload Release Assets - modern.zip + uses: actions/upload-release-asset@v1.0.2 + env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: ./modern.zip - asset_name: modern.zip - asset_content_type: application/zip - - - name: Upload Release Assets - sha256sum.txt - uses: actions/upload-release-asset@v1.0.2 - env: + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./modern.zip + asset_name: modern.zip + asset_content_type: application/zip + + - name: Upload Release Assets - sha256sum.txt + uses: actions/upload-release-asset@v1.0.2 + env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: ./sha256sum.txt - asset_name: sha256sum.txt - asset_content_type: text/plain + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./sha256sum.txt + asset_name: sha256sum.txt + asset_content_type: text/plain