name: Continuous Testing and Publication on: [ push ] concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true jobs: run-py-linter: runs-on: ubuntu-24.04 strategy: matrix: python-version: [ 3.10.13 ] steps: - name: Checkout this repository uses: actions/checkout@v4 with: lfs: true - name: Checkout actions repository uses: actions/checkout@v4 with: repository: Exabyte-io/actions token: ${{ secrets.BOT_GITHUB_TOKEN }} path: actions - name: Run ruff linter uses: ./actions/py/lint with: python-version: ${{ matrix.python-version }} run-py-tests: needs: run-py-linter runs-on: ubuntu-24.04 strategy: matrix: python-version: - 3.10.x - 3.11.x - 3.12.x - 3.13.x steps: - name: Checkout this repository uses: actions/checkout@v4 with: lfs: true - name: Checkout actions repository uses: actions/checkout@v4 with: repository: Exabyte-io/actions token: ${{ secrets.BOT_GITHUB_TOKEN }} path: actions - name: Run python unit tests uses: ./actions/py/pytest with: python-version: ${{ matrix.python-version }} unit-test-directory: tests/py bot-ssh-key: ${{ secrets.BOT_GITHUB_KEY }} run-js-tests: runs-on: ubuntu-latest strategy: matrix: node-version: - 20.x steps: - name: Checkout this repository uses: actions/checkout@v4 with: lfs: true - name: Checkout actions repository uses: actions/checkout@v4 with: repository: Exabyte-io/actions token: ${{ secrets.BOT_GITHUB_TOKEN }} path: actions - name: Run JS validate uses: ./actions/js/validate with: node-version: '20.x' skip-eslint: 'true' - name: Run JS tests uses: ./actions/js/test with: node-version: ${{ matrix.node-version }} publish-js-package: needs: - run-js-tests - run-py-tests - run-py-linter runs-on: ubuntu-latest if: github.ref_name == 'main' steps: - name: Checkout this repository uses: actions/checkout@v4 - name: Checkout actions repository uses: actions/checkout@v4 with: repository: Exabyte-io/actions token: ${{ secrets.BOT_GITHUB_TOKEN }} path: actions - name: Publish JS release uses: ./actions/js/publish with: node-version: 20.x npm-token: ${{ secrets.NPM_TOKEN }} github-token: ${{ secrets.BOT_GITHUB_TOKEN }} verify-tests: 'false' publish-py-package: needs: - run-js-tests - run-py-tests - run-py-linter # Wait for JS publish step to publish the new tag - publish-js-package runs-on: ubuntu-latest if: github.ref_name == 'main' steps: - name: Checkout this repository uses: actions/checkout@v4 with: lfs: true - name: Checkout actions repository uses: actions/checkout@v4 with: repository: Exabyte-io/actions token: ${{ secrets.BOT_GITHUB_TOKEN }} path: actions - name: Publish python release uses: ./actions/py/publish with: python-version: 3.10.13 github-token: ${{ secrets.BOT_GITHUB_TOKEN }} pypi-api-token: ${{ secrets.PYPI_API_TOKEN }} publish-tag: 'false'