on: push: pull_request: branches: - master name: CI jobs: build: name: Tox test runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 with: fetch-depth: 0 - uses: fedora-python/tox-github-action@v37.0 with: tox_env: ${{ matrix.tox_env }} dnf_install: ${{ matrix.dnf_install }} - uses: codecov/codecov-action@v3.1.1 if: ${{ endswith(matrix.tox_env, '-cover') }} with: files: ${{ github.workspace }}/cover/coverage.xml strategy: fail-fast: false matrix: tox_env: - py38 - py39 - py310 - py311 - py312-cover include: - tox_env: docs dnf_install: graphviz pypi: needs: build if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') && github.repository_owner == 'Telecominfraproject' }} name: PyPI packaging runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 with: fetch-depth: 0 - uses: actions/setup-python@v4 name: Install Python with: python-version: '3.12' - uses: casperdcl/deploy-pypi@bb869aafd89f657ceaafe9561d3b5584766c0f95 with: password: ${{ secrets.PYPI_API_TOKEN }} pip: wheel -w dist/ --no-deps . upload: true docker: needs: build if: ${{ github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/v')) && github.repository_owner == 'Telecominfraproject' }} name: Docker image runs-on: ubuntu-latest steps: - name: Log in to Docker Hub uses: docker/login-action@v1 with: username: jktjkt password: ${{ secrets.DOCKERHUB_TOKEN }} - uses: actions/checkout@v3 with: fetch-depth: 0 - name: Extract tag name if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }} id: extract_pretty_git run: echo ::set-output name=GIT_DESC::$(git describe --tags) - name: Build and push a container uses: docker/build-push-action@v2 if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }} with: context: . push: true tags: | telecominfraproject/oopt-gnpy:${{ steps.extract_pretty_git.outputs.GIT_DESC }} telecominfraproject/oopt-gnpy:master - name: Extract tag name if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') }} id: extract_tag_name run: echo ::set-output name=GIT_DESC::${GITHUB_REF/refs\/tags\//} - name: Build and push a container uses: docker/build-push-action@v2 if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') }} with: context: . push: true tags: | telecominfraproject/oopt-gnpy:${{ steps.extract_tag_name.outputs.GIT_DESC }} telecominfraproject/oopt-gnpy:latest other-platforms: name: Tests on other platforms runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v3 with: fetch-depth: 0 - uses: actions/setup-python@v4 with: python-version: ${{ matrix.python_version }} - run: | pip install --editable .[tests] pytest -vv strategy: fail-fast: false matrix: include: - os: windows-2022 python_version: "3.11" - os: windows-2022 python_version: "3.12" - os: windows-2025 python_version: "3.11" - os: windows-2025 python_version: "3.12" - os: macos-14 python_version: "3.12" - os: macos-15 python_version: "3.12" paywalled-platforms: name: Tests on paywalled platforms if: github.repository_owner == 'Telecominfraproject' runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v3 with: fetch-depth: 0 - uses: actions/setup-python@v4 with: python-version: ${{ matrix.python_version }} - run: | pip install --editable .[tests] pytest -vv strategy: fail-fast: false matrix: include: - os: macos-14-xlarge # Apple M-series CPU python_version: "3.12"