2023-06-23 06:12:32 -04:00
|
|
|
# Build Constellation CLI and check for reproducible builds
|
|
|
|
name: Reproducible Builds
|
|
|
|
|
|
|
|
on:
|
|
|
|
workflow_dispatch:
|
|
|
|
schedule:
|
|
|
|
- cron: "45 06 * * 1" # Every Monday at 6:45am
|
|
|
|
|
|
|
|
jobs:
|
|
|
|
build-binaries:
|
|
|
|
strategy:
|
|
|
|
fail-fast: false
|
|
|
|
matrix:
|
|
|
|
target:
|
|
|
|
- "cli_enterprise_darwin_amd64"
|
|
|
|
- "cli_enterprise_darwin_arm64"
|
|
|
|
- "cli_enterprise_linux_amd64"
|
|
|
|
- "cli_enterprise_linux_arm64"
|
|
|
|
- "cli_enterprise_windows_amd64"
|
|
|
|
runner: ["ubuntu-22.04", "macos-13"]
|
|
|
|
env:
|
|
|
|
bazel_target: "//cli:${{ matrix.target }}"
|
|
|
|
binary: "${{ matrix.target }}-${{ matrix.runner }}"
|
|
|
|
runs-on: ${{ matrix.runner }}
|
|
|
|
steps:
|
|
|
|
- name: Checkout
|
2023-07-03 02:19:10 -04:00
|
|
|
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
|
2023-06-23 06:12:32 -04:00
|
|
|
with:
|
|
|
|
ref: ${{ !github.event.pull_request.head.repo.fork && github.head_ref || '' }}
|
|
|
|
|
|
|
|
- name: Setup bazel
|
|
|
|
uses: ./.github/actions/setup_bazel
|
|
|
|
with:
|
|
|
|
useCache: "logs"
|
|
|
|
buildBuddyApiKey: ${{ secrets.BUILDBUDDY_ORG_API_KEY }}
|
|
|
|
|
|
|
|
- name: Install current Bash on macOS
|
|
|
|
if: runner.os == 'macOS'
|
|
|
|
run: brew install bash
|
|
|
|
|
|
|
|
- name: Build
|
|
|
|
shell: bash
|
|
|
|
run: bazel build "${bazel_target}"
|
|
|
|
|
|
|
|
- name: Copy
|
|
|
|
shell: bash
|
|
|
|
run: cp "$(bazel cquery --output=files "${bazel_target}")" "${binary}"
|
|
|
|
|
|
|
|
- name: Collect hash (linux)
|
|
|
|
shell: bash
|
|
|
|
if: runner.os == 'Linux'
|
|
|
|
run: sha256sum "${binary}" | tee "${binary}.sha256"
|
|
|
|
|
|
|
|
- name: Collect hash (macOS)
|
|
|
|
shell: bash
|
|
|
|
if: runner.os == 'macOS'
|
|
|
|
run: shasum -a 256 "${binary}" | tee "${binary}.sha256"
|
|
|
|
|
|
|
|
- name: Upload binary artifact
|
|
|
|
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
|
|
|
|
with:
|
|
|
|
name: "binaries-${{ matrix.target }}"
|
|
|
|
path: "${{ env.binary }}"
|
|
|
|
|
|
|
|
- name: Upload hash artifact
|
|
|
|
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
|
|
|
|
with:
|
|
|
|
name: "sha256sums"
|
|
|
|
path: "${{ env.binary }}.sha256"
|
|
|
|
|
|
|
|
compare:
|
|
|
|
needs: build-binaries
|
|
|
|
strategy:
|
|
|
|
fail-fast: false
|
|
|
|
matrix:
|
|
|
|
target:
|
|
|
|
- "cli_enterprise_darwin_amd64"
|
|
|
|
- "cli_enterprise_darwin_arm64"
|
|
|
|
- "cli_enterprise_linux_amd64"
|
|
|
|
- "cli_enterprise_linux_arm64"
|
|
|
|
- "cli_enterprise_windows_amd64"
|
|
|
|
runs-on: ubuntu-22.04
|
|
|
|
steps:
|
|
|
|
- name: Download binaries
|
|
|
|
uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
|
|
|
|
with:
|
|
|
|
name: "binaries-${{ matrix.target }}"
|
|
|
|
|
|
|
|
- name: Hash
|
|
|
|
shell: bash
|
|
|
|
if: runner.os == 'Linux'
|
|
|
|
run: sha256sum cli_enterprise*
|
|
|
|
|
|
|
|
- name: Compare binaries
|
|
|
|
shell: bash
|
|
|
|
run: |
|
|
|
|
# shellcheck disable=SC2207,SC2116
|
|
|
|
list=($(echo "cli_enterprise*"))
|
|
|
|
diff -s --to-file="${list[0]}" "${list[@]:1}" | tee "${GITHUB_STEP_SUMMARY}"
|