Bump go to v1.20 #220
Workflow file for this run
This file contains 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
# | |
# This GitHub action runs Packer go tests across | |
# multiple runners. | |
# | |
name: "Go Test Multi-Platform" | |
on: | |
push: | |
branches: | |
- 'main' | |
- 'dev' | |
pull_request: | |
permissions: | |
contents: read | |
env: | |
REPORT_FILENAME: | |
jobs: | |
get-go-version: | |
runs-on: ubuntu-latest | |
outputs: | |
go-version: ${{ steps.get-go-version.outputs.go-version }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: 'Determine Go version' | |
id: get-go-version | |
run: | | |
echo "Found Go $(cat .go-version)" | |
echo "go-version=$(cat .go-version)" >> $GITHUB_OUTPUT | |
darwin-go-tests: | |
needs: | |
- get-go-version | |
runs-on: macos-latest | |
name: Darwin Go tests | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-go@v4 | |
with: | |
go-version: ${{ needs.get-go-version.outputs.go-version }} | |
- run: | | |
echo "Testing with Go ${{ needs.get-go-version.outputs.go-version }}" | |
go test -race -count 1 ./... -timeout=3m | |
windows-go-tests: | |
needs: | |
- get-go-version | |
runs-on: windows-latest | |
name: Windows Go tests | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-go@v4 | |
with: | |
go-version: ${{ needs.get-go-version.outputs.go-version }} | |
- run: | | |
echo "Testing with Go ${{ needs.get-go-version.outputs.go-version }}" | |
go test -race -count 1 ./... -timeout=3m | |
linux-go-tests: | |
needs: | |
- get-go-version | |
runs-on: ubuntu-latest | |
env: | |
EXIT_STATUS: 0 | |
name: Linux Go tests | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-go@v4 | |
with: | |
go-version: ${{ needs.get-go-version.outputs.go-version }} | |
- name: Install go-junit-report | |
run: go install github.com/jstemmer/go-junit-report/v2@latest | |
- name: Set report filename | |
id: set-report-filename | |
run: | | |
report_filename=$(date +'%Y%m%d%H%M')_packer_test_report.xml | |
echo "REPORT_FILENAME=$report_filename" >> $GITHUB_ENV | |
- name: Run integration tests | |
run: | | |
echo "Testing with Go ${{ needs.get-go-version.outputs.go-version }}" | |
if ! go test -race -count 1 ./... -timeout=3m | go-junit-report -set-exit-code > "$REPORT_FILENAME"; then | |
echo "EXIT_STATUS=1" >> $GITHUB_ENV | |
fi | |
cat "$REPORT_FILENAME" | |
- name: Upload test report | |
uses: actions/upload-artifact@v3 | |
with: | |
name: test-report-file | |
path: "${{ env.REPORT_FILENAME }}" | |
- name: Test Execution Status Handler | |
run: | | |
if [[ "$EXIT_STATUS" != 0 ]]; then | |
echo "Test execution contains failure(s), check Run Integration tests step above" | |
exit $EXIT_STATUS | |
else | |
echo "Tests passed!" | |
fi | |
process-upload-report: | |
needs: linux-go-tests | |
runs-on: ubuntu-latest | |
if: github.event_name == 'push' && (github.event.ref == 'refs/heads/main' || github.event.ref == 'refs/heads/dev') | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
# Download the artifact generated by the 'linux-go-tests' job | |
- name: Download test report | |
uses: actions/download-artifact@v3 | |
with: | |
name: test-report-file | |
- name: Setup Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.x' | |
- name: Install Python deps | |
run: pip3 install requests wheel boto3 | |
- name: Set release version env | |
run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV | |
# Add additional information to XML report | |
- name: Add additional information to XML report | |
run: | | |
filename=$(ls | grep -E '^[0-9]{12}_packer_test_report\.xml$') | |
python scripts/add_to_xml_test_report.py \ | |
--branch_name "${{ env.RELEASE_VERSION }}" \ | |
--gha_run_id "$GITHUB_RUN_ID" \ | |
--gha_run_number "$GITHUB_RUN_NUMBER" \ | |
--xmlfile "${filename}" | |
# Upload test results to the bucket | |
- name: Upload test results to bucket | |
run: | | |
filename=$(ls | grep -E '^[0-9]{12}_packer_test_report\.xml$') | |
python3 scripts/test_report_upload_script.py "${filename}" | |
env: | |
LINODE_CLI_OBJ_ACCESS_KEY: ${{ secrets.LINODE_CLI_OBJ_ACCESS_KEY }} | |
LINODE_CLI_OBJ_SECRET_KEY: ${{ secrets.LINODE_CLI_OBJ_SECRET_KEY }} | |