Unverified Commit 187918a0 authored by Russell Cohen's avatar Russell Cohen Committed by GitHub
Browse files

Add semver-checks CI job (#2518)

* Add semver-checks CI job

* Add flag to skip generation

* Make it possible to suppress semver checks with label

* fix GitHub script

* Fix but in semver-checks python script

* Cleanup debug info

* Move to ci-pr
parent 3862ca0a
Loading
Loading
Loading
Loading
+35 −0
Original line number Diff line number Diff line
@@ -107,3 +107,38 @@ jobs:
    secrets:
      SMITHY_RS_PULL_REQUEST_CDN_S3_BUCKET_NAME: ${{ secrets.SMITHY_RS_PULL_REQUEST_CDN_S3_BUCKET_NAME }}
      SMITHY_RS_PULL_REQUEST_CDN_ROLE_ARN: ${{ secrets.SMITHY_RS_PULL_REQUEST_CDN_ROLE_ARN }}

  semver-checks:
    name: check the semver status of this PR
    runs-on: smithy_ubuntu-latest_8-core
    steps:
    - uses: actions/checkout@v3
      with:
        path: smithy-rs
        ref: ${{ inputs.git_ref }}
    - name: Get PR info
      id: check-breaking-label
      uses: actions/github-script@v6
      with:
        script: |
          const response = await github.rest.pulls.get({
            pull_number: context.issue.number,
            owner: context.repo.owner,
            repo: context.repo.repo,
          });
          const labels = response.data.labels.map(l => l.name);
          const isBreaking = labels.includes("breaking-change");
          const data = {
            labels,
            isBreaking
          };
          console.log("data:", data);
          return data;
    - name: Run semver check
      uses: ./smithy-rs/.github/actions/docker-build
      with:
        action: check-semver
        action-arguments: ${{ github.event.pull_request.base.sha }} ${{ fromJSON(steps.check-breaking-label.outputs.result).isBreaking }}
    - name: print help message
      if: failure()
      run: echo "::error::This pull request contains breaking changes. Please add the `breaking-changes` label and a changelog entry"
+2 −0
Original line number Diff line number Diff line
@@ -159,6 +159,8 @@ jobs:
      with:
        action: ${{ matrix.test.action }}



  test-rust-windows:
    name: Rust Tests on Windows
    runs-on: windows-latest
+4 −0
Original line number Diff line number Diff line
@@ -120,6 +120,10 @@ generate-codegen-diff:
check-deterministic-codegen:
	$(CI_ACTION) $@ $(ARGS)

.PHONY: check-semver
check-semver:
	$(CI_ACTION) $@ $(ARGS)

.PHONY: generate-smithy-rs-release
generate-smithy-rs-release:
	$(CI_ACTION) $@ $(ARGS)
+24 −0
Original line number Diff line number Diff line
#!/bin/bash
#
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0
#

set -eux
cd smithy-rs

if [[ $# -gt 2 ]]; then
    echo "Usage: check-semver <base-revision> <warn-on-failure (true/false)>"
    exit 1
fi

# Override version commit hash to prevent unnecessary diffs
export SMITHY_RS_VERSION_COMMIT_HASH_OVERRIDE=ci
base_revision="$1"
warn_on_failure="$2"
if [[ $warn_on_failure == "true" ]]
then
  ./tools/ci-scripts/codegen-diff/semver-checks.py . "${base_revision}" || echo "allowing failure"
else
  ./tools/ci-scripts/codegen-diff/semver-checks.py . "${base_revision}"
fi
+6 −7
Original line number Diff line number Diff line
@@ -3,19 +3,18 @@
#  Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
#  SPDX-License-Identifier: Apache-2.0

import sys
import os
from diff_lib import get_cmd_output, generate_and_commit_generated_code
import sys

from diff_lib import get_cmd_output, checkout_commit_and_generate


def main():
    repository_root = sys.argv[1]
    os.chdir(repository_root)
    (_, head_commit_sha, _) = get_cmd_output("git rev-parse HEAD")
    get_cmd_output("git checkout -B once")
    generate_and_commit_generated_code(head_commit_sha, targets=['aws:sdk'])
    get_cmd_output(f"git checkout {head_commit_sha}")
    get_cmd_output("git checkout -B twice")
    generate_and_commit_generated_code(head_commit_sha, targets=['aws:sdk'])
    checkout_commit_and_generate(head_commit_sha, targets=['aws:sdk'], branch_name='once')
    checkout_commit_and_generate(head_commit_sha, targets=['aws:sdk'], branch_name='twice')
    get_cmd_output('git diff once..twice --exit-code')


Loading