name: CI on: - push - pull_request env: CI: true YARN_ENABLE_IMMUTABLE_INSTALLS: 'false' jobs: build: runs-on: ubuntu-latest steps: - name: Check out uses: actions/checkout@v3 with: submodules: recursive fetch-depth: 2 - name: Set up Node uses: actions/setup-node@v3 with: node-version: 18.x - name: Get yarn cache directory path id: yarn-cache-dir-path run: echo "::set-output name=dir::$(yarn config get cacheFolder)" - uses: actions/cache@v3 with: path: | ${{ steps.yarn-cache-dir-path.outputs.dir }} yarn.lock .cache **/tsconfig.tsbuildinfo key: cache-${{ github.ref }}-${{ github.sha }} restore-keys: | cache-${{ github.ref }}- cache- - name: Clear Cache if: "contains(github.event.head_commit.message, 'skip-cache')" run: | rm -rf node_modules yarn.lock **/tsconfig.tsbuildinfo - name: Config And Install run: | [[ ! -z "${{secrets.NPM_TOKEN}}" ]] && echo "npmAuthToken: ${{secrets.NPM_TOKEN}}" >> .yarnrc.yml git config --global user.name undefined git config --global user.email i@undefined.moe yarn env: LICENSE_KEY: ${{ secrets.MAXMIND_KEY }} - name: Get specific changed files id: ui-changed-files uses: tj-actions/changed-files@v23.1 with: files: | /package.json .eslint* packages/ui-default/** packages/utils/** .github/workflows/** - name: Build And Lint run: | if [[ ${{ steps.ui-changed-files.outputs.any_changed }} == true ]] || [[ $(npm info @hydrooj/ui-default version) != $(node -e 'console.log(require("./packages/ui-default/package.json").version)') ]] then yarn build:ui:gulp parallel --tty -j+0 yarn ::: lint:ci lint:ui:ci build build:ui:production:webpack test else parallel --tty -j+0 yarn ::: lint:ci build test fi - name: Publish if: ${{ github.event_name == 'push' }} run: node -r @hydrooj/utils/lib/register build/publish.ts env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} # - name: Benchmark # run: yarn benchmark # - name: Benchmark result # uses: benchmark-action/github-action-benchmark@v1 # with: # name: Benchmark # tool: customBiggerIsBetter # output-file-path: benchmark.json # web: # needs: build # permissions: # packages: write # contents: read # runs-on: ubuntu-latest # if: ${{ github.event_name == 'push' }} # steps: # - name: Check out # uses: actions/checkout@v2 # with: # submodules: recursive # - name: Log in to GitHub Docker Registry # uses: docker/login-action@v1 # with: # registry: docker.pkg.github.com # username: ${{ github.actor }} # password: ${{ secrets.GITHUB_TOKEN }} # - name: Docker:Web # uses: docker/build-push-action@v2 # with: # push: true # context: ./install/docker/backend # tags: | # docker.pkg.github.com/hydro-dev/web:${{ github.sha }} # docker.pkg.github.com/hydro-dev/web:${{ github.ref }} # judge: # needs: build # if: ${{ github.event_name == 'push' }} # permissions: # packages: write # contents: read # runs-on: ubuntu-latest # steps: # - name: Check out # uses: actions/checkout@v2 # with: # submodules: recursive # - name: Log in to GitHub Docker Registry # uses: docker/login-action@v1 # with: # registry: docker.pkg.github.com # username: ${{ github.actor }} # password: ${{ secrets.GITHUB_TOKEN }} # - name: Docker:Judge # uses: docker/build-push-action@v2 # with: # push: true # context: ./install/docker/judge # tags: | # docker.pkg.github.com/hydro-dev/judge:${{ github.sha }} # docker.pkg.github.com/hydro-dev/judge:${{ github.ref }}