Skip to content

[DNM] Simplifying homebrew workflows #3433

[DNM] Simplifying homebrew workflows

[DNM] Simplifying homebrew workflows #3433

Workflow file for this run

name: 'Test PR'
on:
pull_request:
types: [opened, edited, reopened, synchronize]
branches:
- 'develop'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
macos-build:
name: 'Build MacOS Package'
runs-on: self-macos-13
steps:
- name: Check out code
uses: actions/checkout@v3
with:
submodules: recursive
path: kframework
- name: Check out homebrew repo master branch
uses: actions/checkout@v3
with:
repository: runtimeverification/homebrew-k
ref: tagged
path: homebrew-k
- name: Build brew bottle
id: build
env:
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1
MAVEN_OPTS: >-
-Dhttp.keepAlive=false
-Dmaven.wagon.http.pool=false
-Dmaven.wagon.httpconnectionManager.ttlSeconds=30
run: |
PACKAGE=kframework
VERSION="$GITHUB_HEAD_REF"
echo ${VERSION}
cd homebrew-k
../kframework/package/macos/brew-update-to-local ${PACKAGE} ${VERSION}
brew install \
--HEAD \
--build-from-source \
--with-tests \
--verbose \
--formula ./Formula/${PACKAGE}.rb
- name: Cleanup
if: always()
run: |
brew untap kframework/k || true
brew untap runtimeverification/k || true
brew uninstall -f kframework
# format-check:
# name: 'Check Java code formatting'
# runs-on: ubuntu-latest
# needs: version-sync
# steps:
# - name: 'Check out code'
# uses: actions/checkout@v3
# with:
# token: ${{ secrets.JENKINS_GITHUB_PAT }}
# # fetch-depth 0 means deep clone the repo
# fetch-depth: 0
# - name: 'Set up Java 17'
# uses: actions/setup-java@v3
# with:
# distribution: 'zulu'
# java-version: 17
# - name: 'Check code is formatted correctly'
# uses: axel-op/googlejavaformat-action@v3
# with:
# version: 1.18.1
# args: "--dry-run --set-exit-if-changed"
# nix-maven:
# name: 'Nix: Maven'
# runs-on: ubuntu-20.04
# needs: format-check
# steps:
# - name: 'Check out code, set up Git'
# uses: actions/checkout@v3
# with:
# submodules: recursive
# fetch-depth: 0
# - run: |
# git config user.name devops
# git config user.email [email protected]
# - name: 'Install Nix'
# uses: cachix/install-nix-action@v22
# with:
# install_url: https://releases.nixos.org/nix/nix-2.13.3/install
# extra_nix_config: |
# access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
# substituters = http://cache.nixos.org https://hydra.iohk.io
# trusted-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ=
# - name: 'Install Cachix'
# uses: cachix/cachix-action@v12
# with:
# name: k-framework
# authToken: '${{ secrets.CACHIX_PUBLIC_TOKEN }}'
# skipPush: true
# - name: 'Update Maven dependencies, push changes'
# run: |
# set -x
# git checkout ${GITHUB_HEAD_REF}
# if ! git diff --exit-code origin/${GITHUB_BASE_REF} origin/${GITHUB_HEAD_REF} \
# -- $(find . -name pom.xml); then
# nix run .#update-maven
# fi
# if git add nix/ && git commit -m 'Update Nix lock files'; then
# git push
# fi
# test-k:
# name: 'K Tests'
# runs-on: [self-hosted, linux, normal]
# needs: format-check
# steps:
# - name: 'Check out code'
# uses: actions/checkout@v3
# with:
# submodules: recursive
# - name: 'Set up Docker'
# uses: ./.github/actions/with-docker
# with:
# tag: k-ci-${{ github.sha }}
# os: ubuntu
# distro: jammy
# llvm: 15
# - name: 'Build and Test K'
# run: docker exec -t k-ci-${GITHUB_SHA} /bin/bash -c 'mvn verify --batch-mode -U'
# - name: 'Check out k-exercises'
# uses: actions/checkout@v3
# with:
# repository: runtimeverification/k-exercises
# token: ${{ secrets.JENKINS_GITHUB_PAT }}
# submodules: recursive
# path: k-exercises
# - name: 'Tutorial Integration Tests'
# run: |
# docker exec -t k-ci-${GITHUB_SHA} /bin/bash -c 'k-distribution/target/release/k/bin/spawn-kserver kserver.log'
# docker exec -t k-ci-${GITHUB_SHA} /bin/bash -c 'cd k-exercises/tutorial && make -j`nproc` --output-sync'
# docker exec -t k-ci-${GITHUB_SHA} /bin/bash -c 'cd k-distribution/k-tutorial/1_basic && ./test_kompile.sh'
# docker exec -t k-ci-${GITHUB_SHA} /bin/bash -c 'cd k-distribution/k-tutorial/2_intermediate && ./test_kompile.sh'
# - name: 'Tear down Docker'
# if: always()
# run: |
# docker stop --time=0 k-ci-${GITHUB_SHA}
# docker container rm --force k-ci-${GITHUB_SHA} || true
# test-package-ubuntu-jammy:
# name: 'K Ubuntu Jammy Package'
# runs-on: [self-hosted, linux, normal]
# needs: format-check
# steps:
# - uses: actions/checkout@v3
# - name: 'Build and Test'
# uses: ./.github/actions/test-package
# with:
# os: ubuntu
# distro: jammy
# llvm: 15
# build-package: package/debian/build-package jammy
# test-package: package/debian/test-package
# - name: On Failure, Upload the kore-exec.tar.gz file to the Summary Page
# if: failure()
# uses: actions/upload-artifact@v2
# with:
# name: kore-exec.tar.gz
# path: |
# **/kore-exec.tar.gz
# - name: 'On Success, Upload the package built to the Summary Page'
# if: success()
# uses: actions/upload-artifact@v3
# with:
# name: kframework.deb
# path: kframework.deb
# if-no-files-found: error
# retention-days: 1
# performance-tests:
# name: 'Performace Tests'
# runs-on: [self-hosted, linux, performance]
# needs: test-package-ubuntu-jammy
# steps:
# - uses: actions/checkout@v3
# - name: 'Download K package from the Summary Page'
# uses: actions/download-artifact@v3
# with:
# name: kframework.deb
# - name: 'Set up Docker Test Image'
# env:
# BASE_OS: ubuntu
# BASE_DISTRO: jammy
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# BENCHER_API_TOKEN: ${{ secrets.BENCHER_API_TOKEN }}
# BENCHER_PROJECT: k-framework
# BENCHER_ADAPTER: json
# run: |
# set -euxo pipefail
# workspace=$(pwd)
# docker run --name k-profiling-tests-${GITHUB_SHA} \
# --rm -it --detach \
# -e BENCHER_API_TOKEN=$BENCHER_API_TOKEN \
# -e BENCHER_PROJECT=$BENCHER_PROJECT \
# -e BENCHER_ADAPTER=$BENCHER_ADAPTER \
# -e GITHUB_HEAD_REF=$GITHUB_HEAD_REF \
# -e GITHUB_BASE_REF=$GITHUB_BASE_REF \
# -e GITHUB_TOKEN=$GITHUB_TOKEN \
# -e GITHUB_ACTIONS=true \
# -e GITHUB_EVENT_NAME=$GITHUB_EVENT_NAME \
# -e GITHUB_REPOSITORY=$GITHUB_REPOSITORY \
# -e GITHUB_REF=$GITHUB_REF \
# --workdir /opt/workspace \
# -v "${workspace}:/opt/workspace" \
# ${BASE_OS}:${BASE_DISTRO}
# - name: 'Install K from Package'
# run: |
# set -euxo pipefail
# docker exec -t k-profiling-tests-${GITHUB_SHA} /bin/bash -c './k-distribution/tests/profiling/setup_profiling.sh'
# - name: 'Profiling Performance Tests'
# run: |
# set -euxo pipefail
# docker exec -t k-profiling-tests-${GITHUB_SHA} /bin/bash -c 'cd k-distribution/tests/profiling && make'
# - name: 'Tear down Docker'
# if: always()
# run: |
# docker stop --time=0 k-profiling-tests-${GITHUB_SHA}
# docker container rm --force k-profiling-tests-${GITHUB_SHA} || true
# compile-nix-flake:
# name: 'Nix flake'
# strategy:
# fail-fast: false
# matrix:
# include:
# - runner: [self-hosted, linux, normal]
# - runner: macos-13
# os: macos-13
# - runner: MacM1
# os: self-macos-12
# runs-on: ${{ matrix.runner }}
# needs: [nix-maven]
# steps:
# - name: 'Check out code'
# uses: actions/checkout@v3
# - name: 'Upgrade bash'
# if: ${{ contains(matrix.os, 'macos') }}
# run: brew install bash
# - name: 'Install Nix'
# if: ${{ !startsWith(matrix.os, 'self') }}
# uses: cachix/install-nix-action@v22
# with:
# install_url: https://releases.nixos.org/nix/nix-2.13.3/install
# extra_nix_config: |
# access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
# substituters = http://cache.nixos.org https://hydra.iohk.io
# trusted-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ=
# - name: 'Install Cachix'
# if: ${{ !startsWith(matrix.os, 'self') }}
# uses: cachix/cachix-action@v12
# with:
# name: k-framework
# authToken: '${{ secrets.CACHIX_PUBLIC_TOKEN }}'
# skipPush: true
# - name: 'Build K Framework and push build time dependencies to cachix'
# env:
# CACHIX_AUTH_TOKEN: '${{ secrets.CACHIX_PUBLIC_TOKEN }}'
# NIX_PATH: 'nixpkgs=http://nixos.org/channels/nixos-22.05/nixexprs.tar.xz'
# GC_DONT_GC: '1'
# run: |
# nix --version
# export JQ=$(nix-build '<nixpkgs>' -A jq --no-link)/bin/jq
# k=$(nix build . --print-build-logs --json | $JQ -r '.[].outputs | to_entries[].value')
# drv=$(nix-store --query --deriver ${k})
# nix-store --query --requisites ${drv} | cachix push k-framework
# - name: 'Smoke test K'
# run: GC_DONT_GC=1 nix build --print-build-logs .#smoke-test
# # These tests take a really long time to run on other platforms, so we
# # skip them unless we're on the M1 runner.
# - name: 'Test K'
# if: ${{ matrix.os == 'self-macos-12' }}
# run: GC_DONT_GC=1 nix build --print-build-logs .#test