name: Release on: pull_request: branches: - "master" - "ci" - "[0-9]+.[0-9x]+*" paths: - "immutables/_version.py" jobs: validate-release-request: runs-on: ubuntu-latest steps: - name: Validate release PR uses: edgedb/action-release/validate-pr@master id: checkver with: github_token: ${{ secrets.RELEASE_BOT_GITHUB_TOKEN }} version_file: immutables/_version.py require_team: Release Managers require_approval: no version_line_pattern: | __version__\s*=\s*(?:['"])([[:PEP440:]])(?:['"]) - name: Stop if not approved if: steps.checkver.outputs.approved != 'true' run: | echo ::error::PR is not approved yet. exit 1 - name: Store release version for later use env: VERSION: ${{ steps.checkver.outputs.version }} run: | mkdir -p dist/ echo "${VERSION}" > dist/VERSION - uses: actions/upload-artifact@v2 with: name: dist path: dist/ build-sdist: needs: validate-release-request runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 with: fetch-depth: 50 submodules: true - uses: actions/setup-python@v2 - name: Build source distribution run: | python -m pip install -U setuptools wheel pip python setup.py sdist - uses: actions/upload-artifact@v2 with: name: dist path: dist/*.tar.* build-wheels: needs: validate-release-request runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest, macos-latest, windows-latest] cibw_arch: [auto] include: - os: ubuntu-latest cibw_arch: aarch64 - os: macos-latest cibw_arch: universal2 steps: - uses: actions/checkout@v2 with: fetch-depth: 50 submodules: true - name: Set up QEMU if: matrix.os == 'ubuntu-latest' && matrix.cibw_arch == 'aarch64' uses: docker/setup-qemu-action@v1 with: platforms: arm64 - uses: pypa/cibuildwheel@v2.3.1 env: CIBW_BUILD_VERBOSITY: 1 CIBW_BUILD: "cp36-* cp37-* cp38-* cp39-* cp310-*" CIBW_ARCHS: ${{ matrix.cibw_arch }} CIBW_SKIP: "pp*" CIBW_TEST_EXTRAS: "test" CIBW_TEST_COMMAND: "cd .. && python {project}/tests/__init__.py" CIBW_TEST_COMMAND_WINDOWS: "cd .. && python {project}\\tests\\__init__.py" CIBW_TEST_SKIP: "*universal2:arm64" CIBW_ENVIRONMENT: "IMMU_SKIP_MYPY_TESTS=1" - uses: actions/upload-artifact@v2 with: name: dist path: wheelhouse/*.whl publish: needs: [build-sdist, build-wheels] runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 with: fetch-depth: 5 submodules: false - uses: actions/download-artifact@v2 with: name: dist path: dist/ - name: Extract Release Version id: relver run: | set -e echo ::set-output name=version::$(cat dist/VERSION) rm dist/VERSION - name: Merge and tag the PR uses: edgedb/action-release/merge@master with: github_token: ${{ secrets.RELEASE_BOT_GITHUB_TOKEN }} ssh_key: ${{ secrets.RELEASE_BOT_SSH_KEY }} gpg_key: ${{ secrets.RELEASE_BOT_GPG_KEY }} gpg_key_id: "5C468778062D87BF!" tag_name: v${{ steps.relver.outputs.version }} - name: Publish Github Release uses: elprans/gh-action-create-release@master env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: v${{ steps.relver.outputs.version }} release_name: v${{ steps.relver.outputs.version }} target: ${{ github.event.pull_request.base.ref }} body: ${{ github.event.pull_request.body }} draft: false - run: | ls -al dist/ - name: Upload to PyPI uses: pypa/gh-action-pypi-publish@master with: user: __token__ password: ${{ secrets.PYPI_TOKEN }} # password: ${{ secrets.TEST_PYPI_TOKEN }} # repository_url: https://test.pypi.org/legacy/