Version Packages #2964
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: pull-request-main | |
| on: | |
| merge_group: | |
| pull_request: | |
| branches: | |
| - main | |
| jobs: | |
| ci-lint: | |
| name: Lint | |
| runs-on: ubuntu-latest | |
| permissions: | |
| id-token: write | |
| contents: read | |
| actions: read | |
| steps: | |
| - name: Linting Go | |
| uses: smartcontractkit/.github/actions/ci-lint-go@ci-lint-go/v2 # ci-lint-go@2.0.0 | |
| with: | |
| only-new-issues: "false" | |
| golangci-lint-version: v2.8.0 | |
| ci-lint-misc: | |
| name: Lint GH Actions and scripts | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| steps: | |
| - name: Linting Misc (yaml + sh files) | |
| uses: smartcontractkit/.github/actions/ci-lint-misc@eeb76b5870e3c17856d5a60fd064a053c023b5f5 # ci-lint-misc@1.0.0 | |
| ci-test: | |
| name: Tests | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 10 | |
| permissions: | |
| id-token: write | |
| contents: read | |
| actions: read | |
| steps: | |
| - name: Build and test | |
| uses: smartcontractkit/.github/actions/ci-test-go@dfcba48f05933158428bce867d790e3d5a9baa6b # ci-test-go@1.1.0 | |
| with: | |
| # disable the checkptr runtime check due a false positive in github.com/xssnick/tonutils-go | |
| # causing tests in ci to fail "fatal error: checkptr: pointer arithmetic result points to invalid allocation" | |
| # https://github.com/xssnick/tonutils-go/issues/310 | |
| # Exclude provider packages which use Docker containers and remote catalog tests | |
| go-test-cmd: go test -race -gcflags=all=-d=checkptr=0 -coverprofile=coverage.txt $(go list ./... | grep -v '/provider' | grep -v '/catalog/remote') | |
| use-go-cache: true | |
| artifact-name: unit-tests | |
| ci-test-provider: | |
| name: Provider Tests | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 10 | |
| permissions: | |
| id-token: write | |
| contents: read | |
| actions: read | |
| steps: | |
| - name: Build and test provider packages | |
| uses: smartcontractkit/.github/actions/ci-test-go@dfcba48f05933158428bce867d790e3d5a9baa6b # ci-test-go@1.1.0 | |
| with: | |
| # disable the checkptr runtime check due a false positive in github.com/xssnick/tonutils-go | |
| # causing tests in ci to fail "fatal error: checkptr: pointer arithmetic result points to invalid allocation" | |
| # https://github.com/xssnick/tonutils-go/issues/310 | |
| # -p 2 -parallel 3 = 2 packages, 3 tests max = 6 containers max | |
| # Only run provider packages which use Docker containers | |
| go-test-cmd: go test -race -gcflags=all=-d=checkptr=0 -p 2 -parallel 3 -coverprofile=coverage.txt $(go list ./... | grep '/provider') | |
| use-go-cache: true | |
| artifact-name: provider-tests | |
| ci-test-catalog-remote: | |
| name: Catalog Remote Tests | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 15 | |
| permissions: | |
| id-token: write | |
| contents: read | |
| actions: read | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v6 | |
| - name: Configure AWS credentials for ECR | |
| uses: aws-actions/configure-aws-credentials@61815dcd50bd041e203e49132bacad1fd04d2708 # v5.1.1 | |
| with: | |
| role-to-assume: ${{ secrets.ECR_READ_ROLE_ARN }} | |
| aws-region: ${{ secrets.AWS_REGION }} | |
| - name: Get latest catalog service tag from ECR | |
| id: get-catalog-tag | |
| run: | | |
| # Fetch the latest semantic version tag from ECR | |
| # Sort images by push date (latest first) and find the first semver tag | |
| LATEST_TAG=$(aws ecr describe-images \ | |
| --repository-name op-catalog-service \ | |
| --region ${{ secrets.AWS_REGION }} \ | |
| --registry-id ${{ secrets.AWS_ACCOUNT_NUMBER_PROD }} \ | |
| --query 'reverse(sort_by(imageDetails,& imagePushedAt))' \ | |
| --output json | \ | |
| jq -r ' | |
| [.[] | | |
| select(.imageTags != null) | | |
| .imageTags[] | | |
| select(test("^v[0-9]+\\.[0-9]+\\.[0-9]+$")) | |
| ] | first | |
| ') | |
| if [[ -z "${LATEST_TAG}" ]] || [[ "${LATEST_TAG}" == "null" ]]; then | |
| echo "::error::Could not find a valid semantic version tag in ECR" | |
| exit 1 | |
| fi | |
| echo "Latest catalog service tag from ECR: ${LATEST_TAG}" | |
| echo "tag=${LATEST_TAG}" >> "${GITHUB_OUTPUT}" | |
| - name: Pull Catalog Service ECR Image | |
| uses: smartcontractkit/.github/actions/pull-private-ecr-image@2f8f0baf38e46140c6a119eb551a56eaaabcc09e # pull-private-ecr-image@1.0.0 | |
| with: | |
| aws-account-number: ${{ secrets.AWS_ACCOUNT_NUMBER_PROD }} | |
| aws-region: ${{ secrets.AWS_REGION }} | |
| aws-role-arn: ${{ secrets.ECR_READ_ROLE_ARN }} | |
| ecr-repository: "op-catalog-service" | |
| image-tag: ${{ steps.get-catalog-tag.outputs.tag }} | |
| - name: Run Catalog Remote Integration Tests | |
| uses: smartcontractkit/.github/actions/ci-test-go@dfcba48f05933158428bce867d790e3d5a9baa6b # ci-test-go@1.1.0 | |
| with: | |
| # Must cd into datastore/catalog/remote because TestMain only runs from package directory | |
| go-test-cmd: cd datastore/catalog/remote && go test -v -race -timeout 10m -gcflags=all=-d=checkptr=0 -coverprofile=../../../coverage.txt | |
| use-go-cache: true | |
| artifact-name: catalog-remote-tests | |
| env: | |
| CATALOG_SERVICE_IMAGE: ${{ secrets.AWS_ACCOUNT_NUMBER_PROD }}.dkr.ecr.${{ secrets.AWS_REGION }}.amazonaws.com/op-catalog-service:${{ steps.get-catalog-tag.outputs.tag }} | |
| sonarqube: | |
| name: Sonar Scan | |
| if: github.event_name == 'pull_request' | |
| runs-on: ubuntu-24.04 | |
| needs: [ci-test, ci-test-provider, ci-test-catalog-remote, ci-lint-misc, ci-lint] | |
| permissions: | |
| contents: read | |
| actions: read | |
| steps: | |
| - name: Scan with Sonarqube | |
| uses: smartcontractkit/.github/actions/ci-sonarqube-go@01d931b0455a754d12e7143cc54a5a3521a8f6f6 # ci-sonarqube-go@0.3.1 | |
| with: | |
| sonar-token: ${{ secrets.SONAR_TOKEN }} | |
| sonar-host-url: ${{ secrets.SONAR_HOST_URL }} |