Skip to content

WIP

WIP #835

Workflow file for this run

name: Release
on:
push:
branches:
- '*'
paths:
- '**'
- '!website/**'
env:
NOCACHE: "Cache-Control: no-cache, no-store"
jobs:
build:
name: Build
runs-on: ubuntu-latest
env:
CGO_ENABLED: "0"
HEPH_PROFILES: "release,ci"
outputs:
version: ${{ steps.version.outputs.version }}
steps:
- uses: actions/checkout@v3
- name: Set up Go
uses: magnetikonline/action-golang-cache@v4
with:
go-version: ~1.22
cache-key-suffix: -build
- name: Configure golang
run: |
echo "CGO_ENABLED=0" >> $GITHUB_ENV
echo "GOEXPERIMENT=rangefunc" >> $GITHUB_ENV
- name: Cache
uses: actions/cache@v3
with:
path: /tmp/heph-cache
key: heph-cache-build-${{ github.run_id }}
restore-keys: |
heph-cache-build-
- name: Bootstrap Build
run: go build -v -o heph github.com/hephbuild/heph/cmd/heph
- name: Build all OS/ARCH
run: |
mkdir -p dist
./heph r //:cp_builds $(pwd)/dist
ls ./dist
- name: Upload assets
uses: actions/upload-artifact@v3
with:
name: heph
path: dist/*
- name: Set version
id: version
run: |
VERSION=$(cat $(./heph run --print-out //:version))
echo $VERSION
echo "version=$VERSION" >> $GITHUB_OUTPUT
# - name: Setup tmate session
# if: ${{ failure() }}
# run: |
# curl -L https://github.com/tmate-io/tmate/releases/download/2.4.0/tmate-2.4.0-static-linux-amd64.tar.xz | tar -xJ --strip-components 1
# ./tmate -F
upload_gcs:
name: Upload binaries
needs: [ build ]
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v3
with:
name: heph
path: dist
- name: 'Authenticate to Google Cloud'
uses: 'google-github-actions/auth@v0'
with:
credentials_json: '${{ secrets.GOOGLE_CREDENTIALS }}'
- name: 'Set up Cloud SDK'
uses: 'google-github-actions/setup-gcloud@v1'
- name: Copy to bucket
id: upload
run: |
VERSION=${{needs.build.outputs.version}}
echo $VERSION
[ -z "$VERSION" ] && echo "Empty version" && exit 1
gsutil -h "${NOCACHE}" rsync -r './dist' gs://heph-build/${VERSION}
release:
name: Release
runs-on: ubuntu-latest
needs: [ build, upload_gcs, test ]
if: github.ref == 'refs/heads/master'
steps:
- uses: actions/checkout@v3
- name: 'Authenticate to Google Cloud'
uses: 'google-github-actions/auth@v0'
with:
credentials_json: '${{ secrets.GOOGLE_CREDENTIALS }}'
- name: 'Set up Cloud SDK'
uses: 'google-github-actions/setup-gcloud@v1'
- name: Copy to bucket
run: |
VERSION=${{needs.build.outputs.version}}
echo $VERSION > ./latest_version
gsutil -h "${NOCACHE}" cp './latest_version' gs://heph-build/latest_version
gsutil -h "${NOCACHE}" cp './install.sh' gs://heph-build/install.sh
gsutil -h "${NOCACHE}" cp './hephw' gs://heph-build/hephw
test:
name: Test
needs: [ build ]
runs-on: ubuntu-latest
env:
HEPH_PROFILES: "ci"
steps:
- uses: actions/checkout@v3
- name: Set up Go
uses: magnetikonline/action-golang-cache@v4
with:
go-version: ~1.22
cache-key-suffix: -test
- name: Configure golang
run: |
echo "CGO_ENABLED=0" >> $GITHUB_ENV
echo "GOEXPERIMENT=rangefunc" >> $GITHUB_ENV
- uses: actions/download-artifact@v3
with:
name: heph
path: dist
- name: Setup heph bin
run: |
chmod +x dist/*
mkdir -p /home/runner/.local/bin
cp dist/heph_linux_amd64 /home/runner/.local/bin/heph
echo "HEPH_DIST_ROOT=$(pwd)/dist" >> $GITHUB_ENV
echo "HEPH_DIST_NOVERSION=1" >> $GITHUB_ENV
- name: Cache
uses: actions/cache@v3
with:
path: /tmp/heph-cache
key: heph-cache-test-${{ github.run_id }}
restore-keys: |
heph-cache-test-
- name: Go Tests
run: "heph run //:test_go"
- name: Light E2E Test
run: "heph run //:test_light_e2e"
- name: Light E2E ReTest
run: "heph run //:test_light_e2e"
- name: E2E Test
run: "heph run //:test_e2e"
- name: intg Test
run: "heph run //:test_intg"
- name: intg ReTest
run: "heph run //:test_intg"
- name: Cleanup .heph
run: |
sudo rm -rf .heph/cache/test