TON: Add optional Port field option in CTF Provider #2949
Workflow file for this run
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 # [email protected] | |
| with: | |
| only-new-issues: "false" | |
| golangci-lint-version: v2.5.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 # [email protected] | |
| 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 # [email protected] | |
| 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 # [email protected] | |
| 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 # [email protected] | |
| 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 # [email protected] | |
| 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 # [email protected] | |
| with: | |
| sonar-token: ${{ secrets.SONAR_TOKEN }} | |
| sonar-host-url: ${{ secrets.SONAR_HOST_URL }} |