name: CI on: [push, pull_request] env: TZ: Asia/Shanghai jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Use Node.js uses: actions/setup-node@v1 - uses: actions/cache@v2 id: cache with: path: node_modules key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} - run: yarn install --frozen-lockfile if: steps.cache.outputs.cache-hit != 'true' - run: yarn run lint --no-fix --max-warnings 0 - run: yarn run test:unit build: needs: [test] runs-on: ubuntu-latest if: github.event_name == 'push' && github.ref == 'refs/heads/release' steps: - uses: actions/checkout@v2 - name: Use Node.js uses: actions/setup-node@v1 - uses: actions/cache@v2 id: cache with: path: node_modules key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} - run: yarn install --frozen-lockfile if: steps.cache.outputs.cache-hit != 'true' - run: echo ::set-env name=RELEASE_DATE::$(date +'%Y%m%d') - run: echo ::set-env name=GIT_TAG::nightly-$RELEASE_DATE - run: echo ::set-env name=RELEASE_FILE::qb-web-$GIT_TAG.zip - name: Pack Release run: | yarn run build # see https://github.com/qbittorrent/qBittorrent/pull/10485, fixed in qb v4.2.0 cp dist/public/{index,login}.html cp INSTALL.md dist zip -r $RELEASE_FILE dist - name: Publish run: | cd dist/public git init git config user.name ${{ github.actor }} git config user.email ${{ github.actor }}@users.noreply.github.com git remote add origin https://x-access-token:${{ github.token }}@github.com/${{ github.repository }}.git git checkout -b gh-pages git add --all git commit -m "Publish" git push origin gh-pages -f - name: Add tag run: | git tag $GIT_TAG git push origin $GIT_TAG - id: create_release uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: ${{ env.GIT_TAG }} release_name: ${{ env.GIT_TAG }} prerelease: true - uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} asset_path: ${{ env.RELEASE_FILE }} asset_name: ${{ env.RELEASE_FILE }} asset_content_type: application/zip