Skip to content

Commit

Permalink
[NO UPSTREAM] github: build release snapshots on every push to main
Browse files Browse the repository at this point in the history
This will allow my fork to publish stable releases with dotslash files
associated. Just overwriting `latest` every time doesn't work out so well, it
turns out.

Obliterates all the bi-monthly release checks.

Signed-off-by: Austin Seipp <aseipp@pobox.com>
  • Loading branch information
thoughtpolice committed Sep 28, 2024
1 parent 49c8ba4 commit 6a0d01f
Showing 1 changed file with 9 additions and 122 deletions.
131 changes: 9 additions & 122 deletions .github/workflows/upload_buck2.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,30 +6,7 @@ on:
- main

jobs:
get_prelude_hash:
name: Get the latest prelude hash
runs-on: ubuntu-latest
outputs:
prelude_hash: ${{ steps.get_latest_prelude_hash.outputs.prelude_hash }}
steps:
- name: Shallow clone buck2-prelude
run: git clone --depth=1 https://github.com/facebook/buck2-prelude
- name: Get latest commit hash into prelude_hash
id: get_latest_prelude_hash
run: |
mkdir artifacts/
cd buck2-prelude/
git rev-parse HEAD > ../artifacts/prelude_hash
echo "prelude_hash=$(git rev-parse HEAD)" >> "$GITHUB_OUTPUT"
- name: Upload prelude_hash
uses: actions/upload-artifact@v4
with:
path: artifacts/prelude_hash
name: prelude_hash

build:
needs:
- get_prelude_hash
strategy:
fail-fast: false
matrix:
Expand Down Expand Up @@ -128,118 +105,28 @@ jobs:
name: buck2-${{ matrix.target.triple }}
path: artifacts/

release_latest:
name: Release `latest` tag
release_latest_snapshot:
name: Release latest push snapshot
needs:
- build
- get_prelude_hash
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
# Publish a new tag and upload all aritfacts from `build` and `get_prelude_hash`
- uses: ./.github/actions/publish_tag
with:
tag: "latest"
github_token: ${{ secrets.GITHUB_TOKEN }}

check_for_bi_monthly_release:
name: Check if there's a release for this half of the month already
runs-on: ubuntu-latest
needs:
- build
outputs:
tag: ${{ steps.check_if_we_need_to_tag.outputs.new_tag }}
steps:
- id: get_date
name: Store date information so we stay consistent between the steps
run: |
month=$(date +%Y-%m)
# The math below uses the day number "XX" as a number, but if it has a leading 0 and the
# second digit is larger than 7 this fails as it parses as an octal, so we use `sed` to fix:
day=$(date +%d | sed 's/^0*//')
tag=$(date +%Y-%m-%d)
echo "month=$month" >> "$GITHUB_OUTPUT"
echo "day=$day" >> "$GITHUB_OUTPUT"
echo "tag=$tag" >> "$GITHUB_OUTPUT"
cat "$GITHUB_OUTPUT"
- id: get_tags_count
name: Count the number of tags already published for this month
run: |
# GITHUB_REPOSITORY is used to allow this action to work on forks
url="https://api.github.com/repos/$GITHUB_REPOSITORY/tags"
curl --retry 5 -fsSL "$url" -o tags.txt
tags=$(cat tags.txt | jq -r ".[].name")
tags_count=$(echo "$tags" | grep -c "${{ steps.get_date.outputs.month }}" || true)
echo "tags_count=$tags_count" >> "$GITHUB_OUTPUT"
cat "$GITHUB_OUTPUT"
- id: check_if_we_need_to_tag
name: Check if we should tag
- name: Get snapshot tag (YYYYMMDD-HHMMSS)
id: get_tag
run: |
tags_count=${{ steps.get_tags_count.outputs.tags_count }}
day=${{ steps.get_date.outputs.day }}
tag=${{ steps.get_date.outputs.tag }}
# If we're in the first half of the month, check if there are no tags for this month yet
if (( day < 15 && tags_count < 1 )); then echo "new_tag=${tag}" >> "$GITHUB_OUTPUT"; fi;
# Otherwise, tag if the count is less than 2.
if (( day >= 15 && tags_count < 2 )); then echo "new_tag=${tag}" >> "$GITHUB_OUTPUT"; fi;
cat $GITHUB_OUTPUT
release_bi_monthly:
name: Release bi-monthly tag
needs:
- build
- check_for_bi_monthly_release
runs-on: ubuntu-latest
# Only perform this action if check_for_bi_monthly_release set a tag output
if: ${{ needs.check_for_bi_monthly_release.outputs.tag }}
steps:
TAG=snapshot-$(date +'%Y%m%d-%H%M%S')
echo "tag_name=$TAG" >> "$GITHUB_OUTPUT"
echo "Release tag: $TAG"
- uses: actions/checkout@v3
with:
fetch-depth: 0
# Publish a new tag and upload all aritfacts from `build` and `get_prelude_hash`
- uses: ./.github/actions/publish_tag
with:
tag: ${{ needs.check_for_bi_monthly_release.outputs.tag }}
tag: "${{ steps.get_tag.outputs.tag_name }}"
github_token: ${{ secrets.GITHUB_TOKEN }}
- uses: facebook/dotslash-publish-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
config: .github/dotslash-config.json
tag: ${{ needs.check_for_bi_monthly_release.outputs.tag }}

build_docs_job:
name: Publish buck2.build
runs-on: ubuntu-latest
needs:
- build
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Download Buck2
uses: actions/download-artifact@v4
with:
name: buck2-x86_64-unknown-linux-gnu
path: artifacts
- name: Decompress Buck2
run: |
zstd -d artifacts/buck2-x86_64-unknown-linux-gnu.zst -o artifacts/buck2-release
chmod +x artifacts/buck2-release
- name: Install dependencies
run: |
sudo apt-get install -y yarn
id: build
- name: Build the Website
run: |
cd website
yarn
BUCK2_BIN="$GITHUB_WORKSPACE/artifacts/buck2-release" yarn build_prebuilt
- name: Deploy
uses: JamesIves/github-pages-deploy-action@releases/v4
with:
branch: gh-pages # The branch the action should deploy to.
folder: website/build # The folder the action should deploy.
single-commit: true # Discard history for the gh-pages branch.
tag: "${{ steps.get_tag.outputs.tag_name }}"

0 comments on commit 6a0d01f

Please sign in to comment.