Skip to content

Avoid signature expired error on index update, if the clock time is not set correctly. #4861

Avoid signature expired error on index update, if the clock time is not set correctly.

Avoid signature expired error on index update, if the clock time is not set correctly. #4861

Workflow file for this run

# Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/test-go-task.md
name: Test Go
env:
# See: https://github.com/actions/setup-go/tree/main#supported-version-syntax
GO_VERSION: "1.22"
COVERAGE_ARTIFACT: coverage-data
# See: https://docs.github.com/en/free-pro-team@latest/actions/reference/events-that-trigger-workflows
on:
create:
push:
paths:
- ".github/workflows/test-go-task.ya?ml"
- ".github/.?codecov.ya?ml"
- "dev/.?codecov.ya?ml"
- ".?codecov.ya?ml"
- "go.mod"
- "go.sum"
- "Taskfile.ya?ml"
- "**.go"
- "**/testdata/**"
pull_request:
paths:
- ".github/workflows/test-go-task.ya?ml"
- ".github/.?codecov.ya?ml"
- "dev/.?codecov.ya?ml"
- ".?codecov.ya?ml"
- "go.mod"
- "go.sum"
- "Taskfile.ya?ml"
- "**.go"
- "**/testdata/**"
workflow_dispatch:
repository_dispatch:
jobs:
run-determination:
runs-on: ubuntu-latest
outputs:
result: ${{ steps.determination.outputs.result }}
steps:
- name: Determine if the rest of the workflow should run
id: determination
run: |
RELEASE_BRANCH_REGEX="refs/heads/[0-9]+.[0-9]+.x"
# The `create` event trigger doesn't support `branches` filters, so it's necessary to use Bash instead.
if [[ \
"${{ github.event_name }}" != "create" || \
"${{ github.ref }}" =~ $RELEASE_BRANCH_REGEX \
]]; then
# Run the other jobs.
RESULT="true"
else
# There is no need to run the other jobs.
RESULT="false"
fi
echo "result=$RESULT" >> $GITHUB_OUTPUT
tests-collector:
runs-on: ubuntu-latest
needs: run-determination
if: needs.run-determination.outputs.result == 'true'
outputs:
tests-data: ${{ steps.collection.outputs.tests-data }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Collect tests
id: collection
# jq flags must be "-cRn" see: https://stackoverflow.com/a/68859958/1655275
run: |
echo "tests-data=$(go list ./internal/integrationtest/... | grep integrationtest/ | tr "/" " " | cut -d " " -f 6 | jq -cRn '[inputs]')" >> $GITHUB_OUTPUT
test-integration:
needs: tests-collector
strategy:
fail-fast: false
matrix:
operating-system:
- windows-latest
- macos-latest
- ubuntu-latest
tests: ${{ fromJSON(needs.tests-collector.outputs.tests-data) }}
runs-on: ${{ matrix.operating-system }}
steps:
# By default, actions/checkout converts the repo's LF line endings to CRLF on the Windows runner.
- name: Disable EOL conversions
run: git config --global core.autocrlf false
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Go
uses: actions/setup-go@v5
with:
go-version: ${{ env.GO_VERSION }}
- name: Install Task
uses: arduino/setup-task@v2
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
version: 3.x
- name: Run tests
shell: bash
run: |
export GO_TEST_PACKAGE="github.com/arduino/arduino-cli/internal/integrationtest/${{ matrix.tests }}"
task go:integration-test
mv coverage_integration.txt coverage_integration_${{ matrix.operating-system }}_${{ matrix.tests }}.txt
- name: Upload coverage data to workflow artifact
uses: actions/upload-artifact@v4
with:
if-no-files-found: error
name: ${{ env.COVERAGE_ARTIFACT }}-test-integration-${{ matrix.operating-system }}-${{ matrix.tests }}
path: |
./coverage_integration_*.txt
test:
needs: run-determination
strategy:
fail-fast: false
matrix:
operating-system:
- windows-latest
- macos-latest
- ubuntu-latest
runs-on: ${{ matrix.operating-system }}
steps:
# By default, actions/checkout converts the repo's LF line endings to CRLF on the Windows runner.
- name: Disable EOL conversions
run: git config --global core.autocrlf false
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Go
uses: actions/setup-go@v5
with:
go-version: ${{ env.GO_VERSION }}
- name: Install Task
uses: arduino/setup-task@v2
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
version: 3.x
- name: Run tests
run: task go:test
- name: Upload coverage data to workflow artifact
if: runner.os == 'Linux'
uses: actions/upload-artifact@v4
with:
if-no-files-found: error
name: ${{ env.COVERAGE_ARTIFACT }}-test-${{ matrix.operating-system }}
path: |
./coverage_unit.txt
coverage-upload:
runs-on: ubuntu-latest
needs:
- test
- test-integration
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Go
uses: actions/setup-go@v5
with:
go-version: ${{ env.GO_VERSION }}
- name: Install gocovmerge
run: go install github.com/wadey/gocovmerge@b5bfa59
- name: Download coverage data artifact
uses: actions/download-artifact@v4
with:
pattern: ${{ env.COVERAGE_ARTIFACT }}-*
merge-multiple: true
- name: Merge all code coverage artifacts
run: gocovmerge coverage*.txt > coverage.txt
# A token is used to avoid intermittent spurious job failures caused by rate limiting.
- name: Set up Codecov upload token
run: |
if [[ "${{ github.repository }}" == "arduino/arduino-cli" ]]; then
# In order to avoid uploads of data from forks, only use the token for runs in the arduino/arduino-ide repo.
# Token is intentionally exposed.
# See: https://community.codecov.com/t/upload-issues-unable-to-locate-build-via-github-actions-api/3954
CODECOV_TOKEN="18b9885b-cbf2-4166-bfbb-39617323daf0"
else
# codecov/codecov-action does unauthenticated upload if empty string is passed via the `token` input.
CODECOV_TOKEN=""
fi
echo "CODECOV_TOKEN=$CODECOV_TOKEN" >> "$GITHUB_ENV"
- name: Send unit tests coverage to Codecov
uses: codecov/codecov-action@v3
with:
token: ${{ env.CODECOV_TOKEN }}
files: ./coverage.txt
flags: unit
fail_ci_if_error: ${{ github.repository == 'arduino/arduino-cli' }}