diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 35875bfe..bd868a4b 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -141,147 +141,148 @@ jobs: source .venv/bin/activate servo version - integration: - name: Run Integration Tests - runs-on: ubuntu-20.04 - needs: - - pre_job - - setup_build - if: | - needs.pre_job.outputs.should_skip != 'true' && - github.actor != 'dependabot[bot]' && - (github.ref == 'refs/heads/main' || - startsWith(github.ref, 'refs/heads/release/') || - startsWith(github.ref, 'refs/heads/bugfix/') || - startsWith(github.ref, 'refs/tags/') || - github.event_name == 'pull_request' || - contains(github.event.head_commit.message, '#test:integration')) - steps: - - uses: actions/checkout@master - - uses: actions/setup-python@v2.1.3 - id: setup-python - with: - python-version: ${{ needs.setup_build.outputs.python-version }} - architecture: x64 - - name: Install Vegeta - run: | - wget https://github.com/tsenart/vegeta/releases/download/v12.8.4/vegeta_12.8.4_linux_amd64.tar.gz - tar xfz vegeta_12.8.4_linux_amd64.tar.gz - sudo mv vegeta /usr/local/bin/vegeta - - name: Install Kubectl - run: | - KUBECTL_RELEASE="https://dl.k8s.io/release/v${{ needs.setup_build.outputs.kubectl-version }}/bin/linux/amd64/kubectl" - mkdir -p ${{ github.workspace }}/bin - curl -o ${{ github.workspace }}/bin/kubectl -fLO $KUBECTL_RELEASE - echo "${{ github.workspace }}/bin" >> $GITHUB_PATH - chmod +x ${{ github.workspace }}/bin/kubectl - - name: Set up root + dependencies cache - uses: actions/cache@v2 - id: cached-project - with: - path: .venv - key: ".venv-${{ runner.os }}-\ - python-${{ steps.setup-python.outputs.python-version }}-\ - ${{ hashFiles('**/poetry.lock', 'servo/**/*.py') }}" - - name: Configure AWS credentials - uses: aws-actions/configure-aws-credentials@v1 - with: - aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} - aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - aws-region: us-west-2 - - name: Create tests/kubeconfig - run: | - mkdir ~/.kube - echo "$KUBE_CONFIG_DATA" | base64 --decode > $HOME/.kube/config - kubectl config view --minify --flatten > tests/kubeconfig - shell: bash - env: - KUBE_CONFIG_DATA: ${{ secrets.KUBE_CONFIG_DATA }} - - name: Install aws-iam-authenticator - run: | - AWS_AUTH_RELEASE="https://github.com/kubernetes-sigs/aws-iam-authenticator/releases/download/v${{ needs.setup_build.outputs.aws-iam-auth-version }}/aws-iam-authenticator_${{ needs.setup_build.outputs.aws-iam-auth-version }}_linux_amd64" - curl -o ${{ github.workspace }}/bin/aws-iam-authenticator -fLO $AWS_AUTH_RELEASE - chmod 0755 ${{ github.workspace }}/bin/aws-iam-authenticator - - name: Export coverage file - run: | - echo "COVERAGE_FILE=${{ github.workspace }}/.coverage-integration-temp" >> $GITHUB_ENV - - name: Run integration tests - run: | - source .venv/bin/activate - pytest -n 8 \ - -T integration --verbose --durations=0 --durations-min=5 \ - --cov=servo --cov-config=setup.cfg --doctest-modules \ - --cov-report=term-missing:skip-covered --cov-report=xml:artifacts/integration-test-coverage.xml \ - --cov-report=html:artifacts/integration-test-coverage-html --junitxml=artifacts/integration-test-report.xml \ - --html=artifacts/integration-test-report.html --self-contained-html - - name: Upload coverage file - uses: actions/upload-artifact@v3 - with: - name: coverage-integration-temp - path: ${{ github.workspace }}/.coverage-integration-temp - - uses: actions/upload-artifact@v2 - with: - name: integration-test-reports - path: artifacts/ - - uses: actions/upload-artifact@v2 - with: - name: integration-test-logs - path: logs/ + # migrated to Teamcity + # integration: + # name: Run Integration Tests + # runs-on: ubuntu-20.04 + # needs: + # - pre_job + # - setup_build + # if: | + # needs.pre_job.outputs.should_skip != 'true' && + # github.actor != 'dependabot[bot]' && + # (github.ref == 'refs/heads/main' || + # startsWith(github.ref, 'refs/heads/release/') || + # startsWith(github.ref, 'refs/heads/bugfix/') || + # startsWith(github.ref, 'refs/tags/') || + # github.event_name == 'pull_request' || + # contains(github.event.head_commit.message, '#test:integration')) + # steps: + # - uses: actions/checkout@master + # - uses: actions/setup-python@v2.1.3 + # id: setup-python + # with: + # python-version: ${{ needs.setup_build.outputs.python-version }} + # architecture: x64 + # - name: Install Vegeta + # run: | + # wget https://github.com/tsenart/vegeta/releases/download/v12.8.4/vegeta_12.8.4_linux_amd64.tar.gz + # tar xfz vegeta_12.8.4_linux_amd64.tar.gz + # sudo mv vegeta /usr/local/bin/vegeta + # - name: Install Kubectl + # run: | + # KUBECTL_RELEASE="https://dl.k8s.io/release/v${{ needs.setup_build.outputs.kubectl-version }}/bin/linux/amd64/kubectl" + # mkdir -p ${{ github.workspace }}/bin + # curl -o ${{ github.workspace }}/bin/kubectl -fLO $KUBECTL_RELEASE + # echo "${{ github.workspace }}/bin" >> $GITHUB_PATH + # chmod +x ${{ github.workspace }}/bin/kubectl + # - name: Set up root + dependencies cache + # uses: actions/cache@v2 + # id: cached-project + # with: + # path: .venv + # key: ".venv-${{ runner.os }}-\ + # python-${{ steps.setup-python.outputs.python-version }}-\ + # ${{ hashFiles('**/poetry.lock', 'servo/**/*.py') }}" + # - name: Configure AWS credentials + # uses: aws-actions/configure-aws-credentials@v1 + # with: + # aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + # aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + # aws-region: us-west-2 + # - name: Create tests/kubeconfig + # run: | + # mkdir ~/.kube + # echo "$KUBE_CONFIG_DATA" | base64 --decode > $HOME/.kube/config + # kubectl config view --minify --flatten > tests/kubeconfig + # shell: bash + # env: + # KUBE_CONFIG_DATA: ${{ secrets.KUBE_CONFIG_DATA }} + # - name: Install aws-iam-authenticator + # run: | + # AWS_AUTH_RELEASE="https://github.com/kubernetes-sigs/aws-iam-authenticator/releases/download/v${{ needs.setup_build.outputs.aws-iam-auth-version }}/aws-iam-authenticator_${{ needs.setup_build.outputs.aws-iam-auth-version }}_linux_amd64" + # curl -o ${{ github.workspace }}/bin/aws-iam-authenticator -fLO $AWS_AUTH_RELEASE + # chmod 0755 ${{ github.workspace }}/bin/aws-iam-authenticator + # - name: Export coverage file + # run: | + # echo "COVERAGE_FILE=${{ github.workspace }}/.coverage-integration-temp" >> $GITHUB_ENV + # - name: Run integration tests + # run: | + # source .venv/bin/activate + # pytest -n 8 \ + # -T integration --verbose --durations=0 --durations-min=5 \ + # --cov=servo --cov-config=setup.cfg --doctest-modules \ + # --cov-report=term-missing:skip-covered --cov-report=xml:artifacts/integration-test-coverage.xml \ + # --cov-report=html:artifacts/integration-test-coverage-html --junitxml=artifacts/integration-test-report.xml \ + # --html=artifacts/integration-test-report.html --self-contained-html + # - name: Upload coverage file + # uses: actions/upload-artifact@v3 + # with: + # name: coverage-integration-temp + # path: ${{ github.workspace }}/.coverage-integration-temp + # - uses: actions/upload-artifact@v2 + # with: + # name: integration-test-reports + # path: artifacts/ + # - uses: actions/upload-artifact@v2 + # with: + # name: integration-test-logs + # path: logs/ - combined_coverage: - name: Combine coverage reports - runs-on: ubuntu-20.04 - needs: - - pre_job - - setup_build - - unit - - integration - if: | - needs.pre_job.outputs.should_skip != 'true' && - github.actor != 'dependabot[bot]' && - (github.ref == 'refs/heads/main' || - startsWith(github.ref, 'refs/heads/release/') || - startsWith(github.ref, 'refs/heads/bugfix/') || - startsWith(github.ref, 'refs/tags/') || - github.event_name == 'pull_request' || - contains(github.event.head_commit.message, '#test:integration')) - steps: - - uses: actions/checkout@master - - uses: actions/setup-python@v2.1.3 - id: setup-python - with: - python-version: ${{ needs.setup_build.outputs.python-version }} - architecture: x64 - - name: Set up root + dependencies cache - uses: actions/cache@v2 - id: cached-project - with: - path: .venv - key: ".venv-${{ runner.os }}-\ - python-${{ steps.setup-python.outputs.python-version }}-\ - ${{ hashFiles('**/poetry.lock', 'servo/**/*.py') }}" - - name: Download unit coverage - uses: actions/download-artifact@v3 - with: - name: coverage-unit-temp - - name: Download integration coverage - uses: actions/download-artifact@v3 - with: - name: coverage-integration-temp - - name: Combine coverage reports - run: | - source .venv/bin/activate - coverage combine --append .coverage-unit-temp .coverage-integration-temp - coverage html -d artifacts/combined_coverage --skip-covered - - uses: actions/upload-artifact@v2 - with: - name: combined-coverage-report - path: artifacts/ - - uses: geekyeggo/delete-artifact@v1 - with: - name: | - coverage-unit-temp - coverage-integration-temp + # combined_coverage: + # name: Combine coverage reports + # runs-on: ubuntu-20.04 + # needs: + # - pre_job + # - setup_build + # - unit + # - integration + # if: | + # needs.pre_job.outputs.should_skip != 'true' && + # github.actor != 'dependabot[bot]' && + # (github.ref == 'refs/heads/main' || + # startsWith(github.ref, 'refs/heads/release/') || + # startsWith(github.ref, 'refs/heads/bugfix/') || + # startsWith(github.ref, 'refs/tags/') || + # github.event_name == 'pull_request' || + # contains(github.event.head_commit.message, '#test:integration')) + # steps: + # - uses: actions/checkout@master + # - uses: actions/setup-python@v2.1.3 + # id: setup-python + # with: + # python-version: ${{ needs.setup_build.outputs.python-version }} + # architecture: x64 + # - name: Set up root + dependencies cache + # uses: actions/cache@v2 + # id: cached-project + # with: + # path: .venv + # key: ".venv-${{ runner.os }}-\ + # python-${{ steps.setup-python.outputs.python-version }}-\ + # ${{ hashFiles('**/poetry.lock', 'servo/**/*.py') }}" + # - name: Download unit coverage + # uses: actions/download-artifact@v3 + # with: + # name: coverage-unit-temp + # - name: Download integration coverage + # uses: actions/download-artifact@v3 + # with: + # name: coverage-integration-temp + # - name: Combine coverage reports + # run: | + # source .venv/bin/activate + # coverage combine --append .coverage-unit-temp .coverage-integration-temp + # coverage html -d artifacts/combined_coverage --skip-covered + # - uses: actions/upload-artifact@v2 + # with: + # name: combined-coverage-report + # path: artifacts/ + # - uses: geekyeggo/delete-artifact@v1 + # with: + # name: | + # coverage-unit-temp + # coverage-integration-temp system: name: Run System Tests diff --git a/.python-version b/.python-version index 92536a9e..171a6a93 100644 --- a/.python-version +++ b/.python-version @@ -1 +1 @@ -3.12.0 +3.12.1 diff --git a/CHANGELOG.md b/CHANGELOG.md index a4edbf7f..4a3759ec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,16 @@ based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). Releases are versioned in accordance with [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [24.1.0] "speedwagon" - 2024-01-18 + +### Changed + +- Update to python 3.12.1 + +### Fixed + +- Servo reentrant run invocation occuring after shutdown [562](https://github.com/opsani/servox/pull/562) + ## [23.12.1] "speedwagon" - 2023-11-28 ### Changed diff --git a/Dockerfile b/Dockerfile index 299528e4..2d215970 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -ARG PYTHON_VERSION=3.12.0 +ARG PYTHON_VERSION=3.12.1 FROM peterevans/vegeta AS vegeta FROM python:${PYTHON_VERSION}-slim diff --git a/helm/Chart.yaml b/helm/Chart.yaml index ad46d6f4..136d8d82 100644 --- a/helm/Chart.yaml +++ b/helm/Chart.yaml @@ -20,10 +20,10 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 23.12.1 +version: 24.1.0 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. # It is recommended to use it with quotes. -appVersion: "23.12.1" +appVersion: "24.1.0" diff --git a/pyproject.toml b/pyproject.toml index 8fa2099c..3dc0a2b6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "servox" -version = "23.12.1" +version = "24.1.0" description = "Opsani Servo: The Next Generation" homepage = "https://opsani.com/" repository = "https://github.com/opsani/servox"