# Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/test-go-integration-task.md name: Test Integration # See: https://docs.github.com/actions/writing-workflows/choosing-when-your-workflow-runs/events-that-trigger-workflows on: create: push: paths: - ".github/workflows/test-go-integration-task.ya?ml" - "Taskfile.ya?ml" - "**.go" - "go.mod" - "go.sum" - "poetry.lock" - "pyproject.toml" - "tests/**" pull_request: paths: - ".github/workflows/test-go-integration-task.ya?ml" - "Taskfile.ya?ml" - "**.go" - "go.mod" - "go.sum" - "poetry.lock" - "pyproject.toml" - "tests/**" schedule: # Run periodically to catch breakage caused by external changes. - cron: "0 10 * * WED" workflow_dispatch: repository_dispatch: jobs: run-determination: runs-on: ubuntu-latest outputs: result: ${{ steps.determination.outputs.result }} permissions: {} 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 test: needs: run-determination if: needs.run-determination.outputs.result == 'true' permissions: contents: read strategy: matrix: operating-system: - ubuntu-latest - windows-latest - macos-latest runs-on: ${{ matrix.operating-system }} steps: - name: Checkout repository uses: actions/checkout@v4 - name: Install Go uses: actions/setup-go@v5 with: go-version-file: go.mod - name: Install Python uses: actions/setup-python@v5 with: python-version-file: pyproject.toml - name: Install Poetry run: pip install poetry - name: Install Task uses: arduino/setup-task@v2 with: repo-token: ${{ secrets.GITHUB_TOKEN }} version: 3.x - name: Run integration tests run: task go:test-integration