From 94071c130edb318b49bb67b68bba1ec48e2357a1 Mon Sep 17 00:00:00 2001 From: Chris Evich Date: Wed, 9 Aug 2023 13:30:43 -0400 Subject: [PATCH] Migrate cross-compile task to github-actions As of Sept. 1st 2023 Cirrus-CI will start charging for hosted compute time. At the time of this commit, according to the containers-org billing page, github provides 200 "free" minutes per month of MacOS time. However, the same page shows 0 minutes used across-the-board, so perhaps they're not counting minutes at all. Signed-off-by: Chris Evich --- .cirrus.yml | 24 --------- .github/workflows/test_macos_build.yml | 68 ++++++++++++++++++++++++++ 2 files changed, 68 insertions(+), 24 deletions(-) create mode 100644 .github/workflows/test_macos_build.yml diff --git a/.cirrus.yml b/.cirrus.yml index 3a101d4ecbe..10f161e642d 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -132,29 +132,6 @@ vendor_task: - './hack/tree_status.sh' -# Confirm cross-compile ALL architectures on a Mac OS-X VM. -cross_build_task: - name: "Cross Compile" - alias: cross_build - only_if: >- - $CIRRUS_CHANGE_TITLE !=~ '.*CI:DOCS.*' && - $CIRRUS_CRON != 'multiarch' - - osx_instance: - image: ghcr.io/cirruslabs/macos-ventura-base:latest - - script: - - brew update - - brew install go - - brew install go-md2man - - brew install gpgme - - go version - - make cross CGO_ENABLED=0 - - binary_artifacts: - path: ./bin/* - - unit_task: name: 'Unit tests w/ $STORAGE_DRIVER' alias: unit @@ -381,7 +358,6 @@ success_task: - unit - conformance - vendor - - cross_build - integration - in_podman - image_build diff --git a/.github/workflows/test_macos_build.yml b/.github/workflows/test_macos_build.yml new file mode 100644 index 00000000000..7eec3bcd1c8 --- /dev/null +++ b/.github/workflows/test_macos_build.yml @@ -0,0 +1,68 @@ +--- + +name: Test MacOS Build + +on: [push, pull_request] + +jobs: + # Workflows only record minimal details about the event which triggered them. + trigger_event_debug: + name: Archive workflow trigger event details + runs-on: ubuntu-latest + steps: + - name: Archive workflow trigger event details + uses: actions/upload-artifact@v3 + with: + name: workflow_trigger_event + path: ${{ github.event_path }} + process_pr_description: + name: Process PR Description + runs-on: ubuntu-latest + outputs: + ci_docs: ${{ steps.ci_docs_check.outputs.present }} + steps: + - name: "Check for '[CI:DOCS]'" + id: ci_docs_check + env: + # DANGER: Command-injection risk, bounce value through env. var. + PR_DESC: "${{ github.event.pull_request.title }}" + run: | + if [[ "$PR_DESC" =~ CI:DOCS ]]; then + echo "present=true" >> "$GITHUB_OUTPUT" + else + echo "present=false" >> "$GITHUB_OUTPUT" + fi + test_macos_build: + name: Test MacOS Build + runs-on: macos-latest + needs: process_pr_description + if: ${{ jobs.process_pr_description.outputs.ci_docs == 'false' }} + steps: + # Side-effect: Checkout action alters the execution environment. + - name: Checkout repository + uses: actions/checkout@v3 + # Workflows do not save any record of their environment. Assist future + # human debuggers by logging all values. DANGER: Some values may be + # sensitive. The github-runner will mask them _only_ on output, not any + # files/artifacts they may wind up in. + - name: Debug workflow trigger and environment + run: | + echo "::group::Workflow Trigger" + jq --color-output --indent 2 '.' "${{ github.event_path }}" + echo "::endgroup::" + echo "::group::Workflow Environment" + printenv | sort + echo "::endgroup::" + - name: Test MacOS Build + run: | + brew update + brew install --overwrite go + brew install go-md2man + brew install gpgme + go version + make cross CGO_ENABLED=0 + - name: Archive compiled binaries + uses: actions/upload-artifact@v3 + with: + name: binary + path: "./bin/*"