name: Publish dev on: workflow_dispatch: schedule: - cron: '0 */12 * * *' jobs: npm: name: npm strategy: fail-fast: false matrix: include: - package: '@discordjs/builders' folder: 'builders' - package: '@discordjs/collection' folder: 'collection' - package: 'discord.js' folder: 'discord.js' - package: '@discordjs/rest' folder: 'rest' - package: '@discordjs/voice' folder: 'voice' runs-on: ubuntu-latest if: github.repository_owner == 'discordjs' steps: - name: Checkout repository uses: actions/checkout@v2 - name: Install node.js v16 uses: actions/setup-node@v2 with: node-version: 16 registry-url: https://registry.npmjs.org/ cache: 'yarn' cache-dependency-path: yarn.lock - name: Turbo cache id: turbo-cache uses: actions/cache@v2 with: path: .turbo key: turbo-${{ github.job }}-${{ github.ref_name }}-${{ github.sha }} restore-keys: | turbo-${{ github.job }}-${{ github.ref_name }}- - name: Check previous released version id: pre-release run: | if [[ $(npm view ${{ matrix.package }}@dev version | grep -e "$(jq --raw-output '.version' packages/${{ matrix.folder }}/package.json).*.$(git rev-parse --short HEAD | cut -b1-3)") ]]; \ then echo '::set-output name=release::false'; \ else echo '::set-output name=release::true'; fi - name: Install dependencies if: steps.pre-release.outputs.release == 'true' run: yarn --immutable - name: Build dependencies if: steps.pre-release.outputs.release == 'true' run: yarn build --cache-dir=".turbo" - name: Deprecate old versions if: steps.pre-release.outputs.release == 'true' run: npm deprecate ${{ matrix.package }}@"~$(jq --raw-output '.version' packages/${{ matrix.folder }}/package.json)" "no longer supported" || true env: NODE_AUTH_TOKEN: ${{ secrets.NPM_PUBLISH_TOKEN }} - name: Publish if: steps.pre-release.outputs.release == 'true' run: | yarn workspace ${{ matrix.package }} version --no-git-tag-version --new-version $(jq --raw-output '.version' packages/${{ matrix.folder }}/package.json).$(date +%s).$(git rev-parse --short HEAD) yarn workspace ${{ matrix.package }} publish --tag dev || true env: NODE_AUTH_TOKEN: ${{ secrets.NPM_PUBLISH_TOKEN }}