TPT-3909: Integration tests for IAM volumes io_ready #2224
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: Continuous Integration | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| test_report_upload: | |
| description: 'Indicates whether to upload the test report to object storage. Defaults to "false"' | |
| type: choice | |
| required: false | |
| default: 'false' | |
| options: | |
| - 'true' | |
| - 'false' | |
| push: | |
| branches: | |
| - main | |
| pull_request: null | |
| jobs: | |
| lint-tidy: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| pull-requests: read | |
| steps: | |
| # Enforce TPT-1234: prefix on PR titles, with the following exemptions: | |
| # - PRs labeled 'dependencies' (e.g. Dependabot PRs) | |
| # - PRs labeled 'hotfix' (urgent fixes that may not have a ticket) | |
| # - PRs labeled 'community-contribution' (external contributors without TPT tickets) | |
| # - PRs labeled 'ignore-for-release' (release PRs that don't need a ticket prefix) | |
| - name: Validate PR Title | |
| if: github.event_name == 'pull_request' | |
| uses: amannn/action-semantic-pull-request@v6 | |
| with: | |
| types: | | |
| TPT-\d+ | |
| requireScope: false | |
| # Override the default header pattern to allow hyphens and digits in the type | |
| # (e.g. "TPT-4298: Description"). The default pattern only matches word | |
| # characters (\w) which excludes hyphens. | |
| headerPattern: '^([\w-]+):\s?(.*)$' | |
| headerPatternCorrespondence: type, subject | |
| ignoreLabels: | | |
| dependencies | |
| hotfix | |
| community-contribution | |
| ignore-for-release | |
| env: | |
| GITHUB_TOKEN: ${{ github.token }} | |
| - uses: actions/checkout@v6 | |
| - uses: actions/setup-go@v6 | |
| with: | |
| go-version: stable | |
| - name: golangci-lint | |
| uses: golangci/golangci-lint-action@v9 | |
| with: | |
| version: latest | |
| - name: Run tidy | |
| run: make tidy | |
| - name: Run formatter | |
| run: | | |
| go install mvdan.cc/gofumpt@86bffd62437a3c437c0b84d5d5ab244824e762fc | |
| gofumpt -l -w . | |
| - name: Fail if changes | |
| run: git diff-index --exit-code HEAD | |
| test: | |
| runs-on: ubuntu-latest | |
| env: | |
| EXIT_STATUS: 0 | |
| steps: | |
| - name: Clone Repository | |
| uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| submodules: 'recursive' | |
| - name: Set up Go | |
| uses: actions/setup-go@v6 | |
| with: | |
| go-version: 'stable' | |
| - run: go version | |
| - name: Setup Python | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: '3.x' | |
| - name: Install Python deps | |
| run: pip3 install requests wheel boto3==1.35.99 | |
| - name: Install go-junit-report | |
| run: go install github.com/jstemmer/go-junit-report/v2@latest | |
| - name: Set report filename | |
| run: echo "REPORT_FILENAME=$(date +'%Y%m%d%H%M')_linodego_test_report.xml" >> $GITHUB_ENV | |
| - name: Run tests and save test report | |
| run: | | |
| make test | go-junit-report -set-exit-code -iocopy -out $REPORT_FILENAME | |
| env: | |
| SKIP_LINT: 1 | |
| - name: Upload test results to bucket | |
| if: always() && github.repository == 'linode/linodego' && github.ref == 'refs/heads/main' && (github.event_name == 'push' || github.event_name == 'pull_request' || (github.event_name == 'workflow_dispatch' && inputs.test_report_upload == 'true')) | |
| run: | | |
| python3 e2e_scripts/tod_scripts/xml_to_obj_storage/scripts/add_gha_info_to_xml.py \ | |
| --branch_name "${GITHUB_REF#refs/*/}" \ | |
| --gha_run_id "$GITHUB_RUN_ID" \ | |
| --gha_run_number "$GITHUB_RUN_NUMBER" \ | |
| --xmlfile "$REPORT_FILENAME" | |
| sync | |
| python3 e2e_scripts/tod_scripts/xml_to_obj_storage/scripts/xml_to_obj.py "$REPORT_FILENAME" | |
| env: | |
| LINODE_CLI_OBJ_ACCESS_KEY: ${{ secrets.LINODE_CLI_OBJ_ACCESS_KEY }} | |
| LINODE_CLI_OBJ_SECRET_KEY: ${{ secrets.LINODE_CLI_OBJ_SECRET_KEY }} | |
| notify-slack: | |
| runs-on: ubuntu-latest | |
| needs: [ test ] | |
| if: ${{ (success() || failure()) && github.ref == 'refs/heads/main' && github.event_name == 'push' && github.repository == 'linode/linodego' }} | |
| steps: | |
| - name: Notify Slack | |
| uses: slackapi/slack-github-action@v3 | |
| with: | |
| method: chat.postMessage | |
| token: ${{ secrets.SLACK_BOT_TOKEN }} | |
| payload: | | |
| channel: ${{ secrets.SLACK_CHANNEL_ID }} | |
| blocks: | |
| - type: section | |
| text: | |
| type: mrkdwn | |
| text: ":rocket: *${{ github.workflow }} Completed in: ${{ github.repository }}* :white_check_mark:" | |
| - type: divider | |
| - type: section | |
| fields: | |
| - type: mrkdwn | |
| text: "*Build Result:*\n${{ needs.test.result == 'success' && ':large_green_circle: Build Passed' || ':red_circle: Build Failed' }}" | |
| - type: mrkdwn | |
| text: "*Branch:*\n`${{ github.ref_name }}`" | |
| - type: section | |
| fields: | |
| - type: mrkdwn | |
| text: "*Commit Hash:*\n<${{ github.server_url }}/${{ github.repository }}/commit/${{ github.sha }}|${{ github.sha }}>" | |
| - type: mrkdwn | |
| text: "*Run URL:*\n<${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}|View Run Details>" | |
| - type: divider | |
| - type: context | |
| elements: | |
| - type: mrkdwn | |
| text: "Triggered by: :bust_in_silhouette: `${{ github.actor }}`" |