diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a29fe0494..8962c1070 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,46 +10,7 @@ env: PYTHON_DEFAULT_VERSION: "3.12" jobs: - lint: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - uses: codespell-project/actions-codespell@2391250ab05295bddd51e36a8c6295edb6343b0e - with: - ignore_words_list: datas re-use - - name: Set up Python ${{ env.PYTHON_DEFAULT_VERSION }} - uses: actions/setup-python@v4 - with: - python-version: ${{ env.PYTHON_DEFAULT_VERSION }} - - name: Install dependencies - run: python -m pip install --upgrade nox pip setuptools - - name: Run linters - run: nox -vs lint - - name: Validate new changelog entries - if: (contains(github.event.pull_request.labels.*.name, '-changelog') == false) && (github.event.pull_request.base.ref != '') - run: if [ -z "$(git diff --diff-filter=A --name-only origin/${{ github.event.pull_request.base.ref }} changelog.d)" ]; - then echo no changelog item added; exit 1; fi - - name: Changelog validation - run: nox -vs towncrier_check - build: - needs: lint - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - name: Set up Python ${{ env.PYTHON_DEFAULT_VERSION }} - uses: actions/setup-python@v4 - with: - python-version: ${{ env.PYTHON_DEFAULT_VERSION }} - - name: Install dependencies - run: python -m pip install --upgrade nox pip setuptools - - name: Build the distribution - run: nox -vs build >> $GITHUB_OUTPUT cleanup_buckets: - needs: lint env: B2_TEST_APPLICATION_KEY: ${{ secrets.B2_TEST_APPLICATION_KEY }} B2_TEST_APPLICATION_KEY_ID: ${{ secrets.B2_TEST_APPLICATION_KEY_ID }} @@ -71,169 +32,27 @@ jobs: - name: Find and remove old buckets if: ${{ env.B2_TEST_APPLICATION_KEY != '' && env.B2_TEST_APPLICATION_KEY_ID != '' }} # TODO: skip this whole job instead run: nox -vs cleanup_buckets - test: - needs: cleanup_buckets - env: - B2_TEST_APPLICATION_KEY: ${{ secrets.B2_TEST_APPLICATION_KEY }} - B2_TEST_APPLICATION_KEY_ID: ${{ secrets.B2_TEST_APPLICATION_KEY_ID }} - runs-on: ${{ matrix.os }} - strategy: - fail-fast: false - matrix: - os: ["ubuntu-latest", "macos-latest", "windows-latest"] - # pypy version pin was required due 7.3.13 being broken https://foss.heptapod.net/pypy/pypy/-/issues/4021 - python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "pypy-3.10-nightly"] - exclude: - - os: "macos-latest" - python-version: "pypy-3.10-nightly" - - os: "windows-latest" - python-version: "pypy-3.10-nightly" - steps: - - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v4 - with: - python-version: ${{ matrix.python-version }} - - name: Install dependencies - run: python -m pip install --upgrade nox pip setuptools - - name: Run unit tests - run: nox -vs unit - - name: Run integration tests (without secrets) - run: nox -vs integration -- -m "not require_secrets" - - name: Run integration tests (with secrets) - # Limit CI workload by running integration tests with secrets only on edge Python versions. - if: ${{ env.B2_TEST_APPLICATION_KEY != '' && env.B2_TEST_APPLICATION_KEY_ID != '' && contains(fromJSON('["3.7", "pypy-3.10-nightly", "3.12"]'), matrix.python-version) }} - run: nox -vs integration -- -m "require_secrets" --cleanup - test-docker: + test-nuitka: needs: cleanup_buckets env: B2_TEST_APPLICATION_KEY: ${{ secrets.B2_TEST_APPLICATION_KEY }} B2_TEST_APPLICATION_KEY_ID: ${{ secrets.B2_TEST_APPLICATION_KEY_ID }} - runs-on: ubuntu-latest + runs-on: macos-latest steps: - uses: actions/checkout@v3 with: fetch-depth: 0 - - name: Set up Python ${{ env.PYTHON_DEFAULT_VERSION }} + - name: Set up Python 3.11 uses: actions/setup-python@v4 with: - python-version: ${{ env.PYTHON_DEFAULT_VERSION }} - - name: setup sudo NOX_PYTHONS - run: echo NOX_PYTHONS=$(sudo python3 --version | cut -d ' ' -f 2) >> "$GITHUB_ENV" - - name: Install dependencies - run: sudo python -m pip install --upgrade nox pip setuptools - - name: Generate Dockerfile - run: nox -vs generate_dockerfile - - name: Set up QEMU - uses: docker/setup-qemu-action@v2 - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - - name: Build Docker - uses: docker/build-push-action@v5 - with: - context: . - load: true - tags: backblazeit/b2:test - platforms: linux/amd64 - - name: Run tests with docker - if: ${{ env.B2_TEST_APPLICATION_KEY != '' && env.B2_TEST_APPLICATION_KEY_ID != '' }} - run: sudo NOX_PYTHONS=$NOX_PYTHONS B2_TEST_APPLICATION_KEY=${{ env.B2_TEST_APPLICATION_KEY }} B2_TEST_APPLICATION_KEY_ID=${{ env.B2_TEST_APPLICATION_KEY_ID }} nox -vs docker_test -- backblazeit/b2:test - test-linux-bundle: - needs: cleanup_buckets - env: - B2_TEST_APPLICATION_KEY: ${{ secrets.B2_TEST_APPLICATION_KEY }} - B2_TEST_APPLICATION_KEY_ID: ${{ secrets.B2_TEST_APPLICATION_KEY_ID }} - runs-on: ubuntu-latest - container: - image: "python:3.12" # can not use ${{ env.PYTHON_DEFAULT_VERSION }} here - env: - DEBIAN_FRONTEND: noninteractive - steps: - - uses: actions/checkout@v3 - with: - fetch-depth: 0 + python-version: 3.11 - name: Install dependencies run: | - apt-get -y update - apt-get -y install patchelf - python -m pip install --upgrade nox pip setuptools - git config --global --add safe.directory '*' - - name: Bundle the distribution - id: bundle - run: nox -vs bundle >> $GITHUB_OUTPUT - - name: Generate hashes - id: hashes - run: nox -vs make_dist_digest - - name: Run integration tests (without secrets) - run: nox -vs integration -- -m "not require_secrets" - - name: Run integration tests (with secrets) - if: ${{ env.B2_TEST_APPLICATION_KEY != '' && env.B2_TEST_APPLICATION_KEY_ID != '' }} - run: nox -vs integration -- --sut=${{ steps.bundle.outputs.sut_path }} -m "require_secrets" --cleanup - - name: Upload assets - if: failure() - uses: actions/upload-artifact@v2 - with: - path: ${{ steps.bundle.outputs.asset_path }} - if-no-files-found: warn - retention-days: 7 - test-windows-bundle: - needs: cleanup_buckets - env: - B2_TEST_APPLICATION_KEY: ${{ secrets.B2_TEST_APPLICATION_KEY }} - B2_TEST_APPLICATION_KEY_ID: ${{ secrets.B2_TEST_APPLICATION_KEY_ID }} - runs-on: ${{ matrix.os }} - strategy: - fail-fast: false - matrix: - os: [windows-2019, windows-latest] - steps: - - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - name: Set up Python ${{ env.PYTHON_DEFAULT_VERSION }} - uses: actions/setup-python@v4 - with: - python-version: ${{ env.PYTHON_DEFAULT_VERSION }} - - name: Install dependencies - run: python -m pip install --upgrade nox pip setuptools - - name: Bundle the distribution + python -m pip install --upgrade nox pip setuptools nuitka + python -m pip install . + - name: Build id: bundle - shell: bash - run: nox -vs bundle >> $GITHUB_OUTPUT - - name: Generate hashes - id: hashes - run: nox -vs make_dist_digest - - name: Run integration tests (without secrets) - run: nox -vs integration -- -m "not require_secrets" + run: python -m nuitka --assume-yes-for-downloads --onefile b2_main.py - name: Run integration tests (with secrets) if: ${{ env.B2_TEST_APPLICATION_KEY != '' && env.B2_TEST_APPLICATION_KEY_ID != '' }} - run: nox -vs integration -- --sut=${{ steps.bundle.outputs.sut_path }} -m "require_secrets" --cleanup - - name: Upload assets - if: failure() - uses: actions/upload-artifact@v2 - with: - path: ${{ steps.bundle.outputs.asset_path }} - if-no-files-found: warn - retention-days: 7 - doc: - needs: build - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - name: Set up Python ${{ env.PYTHON_DEFAULT_VERSION }} - uses: actions/setup-python@v4 - with: - python-version: ${{ env.PYTHON_DEFAULT_VERSION }} - - name: Install dependencies - env: - DEBIAN_FRONTEND: noninteractive - run: | - sudo apt-get update -y - sudo apt-get install -y graphviz plantuml - python -m pip install --upgrade nox pip setuptools - - name: Build the docs - run: nox --non-interactive -vs doc + run: nox -vs integration -- --sut="$PWD"b2_main.bin -m "require_secrets" --cleanup diff --git a/b2_main.py b/b2_main.py new file mode 100644 index 000000000..b43f25ac2 --- /dev/null +++ b/b2_main.py @@ -0,0 +1,3 @@ +import b2.console_tool + +b2.console_tool.main() \ No newline at end of file