Skip to content

Commit

Permalink
HACK: test ci
Browse files Browse the repository at this point in the history
  • Loading branch information
cbgbt committed Sep 27, 2024
1 parent da68279 commit 771849b
Show file tree
Hide file tree
Showing 4 changed files with 145 additions and 134 deletions.
271 changes: 142 additions & 129 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
name: Release

permissions:
contents: write
contents: write

# This task will run whenever you push a git tag that looks like a version
# like "v1", "v1.2.0", "v0.1.0-prerelease01", "my-app-v1.0.0", etc.
Expand All @@ -40,140 +40,153 @@ permissions:
# If there's a prerelease-style suffix to the version then the Github Release™
# will be marked as a prerelease.
on:
push:
tags:
- "*-?v[0-9]+*"
push:
tags:
- "*-?v[0-9]+*"

jobs:
# Create the Github Release™ so the packages have something to be uploaded to
create-release:
if: github.repository == 'bottlerocket-os/twoliter'
environment: release
runs-on:
group: bottlerocket
labels: bottlerocket_ubuntu-latest_16-core
outputs:
has-releases: ${{ steps.create-release.outputs.has-releases }}
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_REF_NAME: ${{ github.ref_name }}
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Install crane for testing
uses: ./.github/actions/install-crane
# Create the Github Release™ so the packages have something to be uploaded to
create-release:
if: github.repository == 'cbgbt/twoliter'
environment: release
runs-on: ubuntu-latest
outputs:
has-releases: ${{ steps.create-release.outputs.has-releases }}
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Install cargo-dist
run: |
cargo install --locked \
--git "https://github.com/webern/cargo-dist" \
--rev "3dcbe823db0c4068f38db790d996a4af54e68b3e"
- id: create-release
run: |
export PATH=$CARGO_HOME/bin:$PATH
cargo dist plan --tag="${GITHUB_REF_NAME}" --output-format=json > dist-manifest.json
echo "dist plan ran successfully"
cat dist-manifest.json
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_REF_NAME: ${{ github.ref_name }}
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Install crane for testing
uses: ./.github/actions/install-crane
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Install cargo-dist
run: |
cargo install --locked \
--git "https://github.com/webern/cargo-dist" \
--rev "3dcbe823db0c4068f38db790d996a4af54e68b3e"
- id: create-release
run: |
export PATH=$CARGO_HOME/bin:$PATH
cargo dist plan --tag="${GITHUB_REF_NAME}" --output-format=json > dist-manifest.json
echo "dist plan ran successfully"
cat dist-manifest.json
# Create the Github Release™ based on what cargo-dist thinks it should be
ANNOUNCEMENT_TITLE=$(jq --raw-output ".announcement_title" dist-manifest.json)
IS_PRERELEASE=$(jq --raw-output ".announcement_is_prerelease" dist-manifest.json)
jq --raw-output ".announcement_github_body" dist-manifest.json > new_dist_announcement.md
gh release create "${GITHUB_REF_NAME}" --draft --prerelease="$IS_PRERELEASE" --title="$ANNOUNCEMENT_TITLE" --notes-file=new_dist_announcement.md
echo "created announcement!"
# Create the Github Release™ based on what cargo-dist thinks it should be
ANNOUNCEMENT_TITLE=$(jq --raw-output ".announcement_title" dist-manifest.json)
IS_PRERELEASE=$(jq --raw-output ".announcement_is_prerelease" dist-manifest.json)
jq --raw-output ".announcement_github_body" dist-manifest.json > new_dist_announcement.md
gh release create "${GITHUB_REF_NAME}" --draft --prerelease="$IS_PRERELEASE" --title="$ANNOUNCEMENT_TITLE" --notes-file=new_dist_announcement.md
echo "created announcement!"
# Upload the manifest to the Github Release™
gh release upload "${GITHUB_REF_NAME}" dist-manifest.json
echo "uploaded manifest!"
# Upload the manifest to the Github Release™
gh release upload "${GITHUB_REF_NAME}" dist-manifest.json
echo "uploaded manifest!"
# Disable all the upload-artifacts tasks if we have no actual releases
HAS_RELEASES=$(jq --raw-output ".releases != null" dist-manifest.json)
echo "has-releases=$HAS_RELEASES" >> "$GITHUB_OUTPUT"
# Disable all the upload-artifacts tasks if we have no actual releases
HAS_RELEASES=$(jq --raw-output ".releases != null" dist-manifest.json)
echo "has-releases=$HAS_RELEASES" >> "$GITHUB_OUTPUT"
# Build and packages all the things
upload-artifacts:
# Let the initial task tell us to not run (currently very blunt)
needs: create-release
if: >-
${{ needs.create-release.outputs.has-releases == 'true'
&& github.repository == 'bottlerocket-os/twoliter'
}}
strategy:
fail-fast: false
matrix:
# For these target platforms
include:
- dist-args: "--artifacts=local --target=x86_64-unknown-linux-musl"
install-dist: |
cargo install --locked \
--git "https://github.com/webern/cargo-dist" \
--rev "3dcbe823db0c4068f38db790d996a4af54e68b3e"
- dist-args: "--artifacts=local --target=aarch64-unknown-linux-musl"
install-dist: |
cargo install --locked \
--git "https://github.com/webern/cargo-dist" \
--rev "3dcbe823db0c4068f38db790d996a4af54e68b3e"
runs-on:
group: bottlerocket
labels: bottlerocket_ubuntu-latest_16-core
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
MATRIX_DIST_ARGS: ${{ matrix.dist-args }}
GITHUB_REF_NAME: ${{ github.ref_name }}
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Install cargo-dist
run: ${{ matrix.install-dist }}
- name: Install Cross
# Pin cargo cross to a version that we know is working for us.
run: |
cargo install cross --git https://github.com/cross-rs/cross/ --rev 7b79041 --locked
- name: Run cargo-dist
# This logic is a bit janky because it's trying to be a polyglot between
# powershell and bash since this will run on windows, macos, and linux!
# The two platforms don't agree on how to talk about env vars but they
# do agree on 'cat' and '$()' so we use that to marshal values between commands.
run: |
export PATH=$CARGO_HOME/bin:$PATH
# Actually do builds and make zips and whatnot
cargo dist build --tag="${GITHUB_REF_NAME}" --output-format=json ${MATRIX_DIST_ARGS} > dist-manifest.json
echo "dist ran successfully"
cat dist-manifest.json
# Build and packages all the things
upload-artifacts:
# Let the initial task tell us to not run (currently very blunt)
needs: create-release
if: >-
${{ needs.create-release.outputs.has-releases == 'true'
&& github.repository == 'cbgbt/twoliter'
}}
strategy:
fail-fast: false
matrix:
# For these target platforms
include:
- dist-args: "--artifacts=local --target=x86_64-unknown-linux-musl"
install-dist: |
cargo install --locked \
--git "https://github.com/webern/cargo-dist" \
--rev "3dcbe823db0c4068f38db790d996a4af54e68b3e"
- dist-args: "--artifacts=local --target=aarch64-unknown-linux-musl"
install-dist: |
cargo install --locked \
--git "https://github.com/webern/cargo-dist" \
--rev "3dcbe823db0c4068f38db790d996a4af54e68b3e"
runs-on: ubuntu-latest
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
MATRIX_DIST_ARGS: ${{ matrix.dist-args }}
GITHUB_REF_NAME: ${{ github.ref_name }}
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Install cargo-dist
run: ${{ matrix.install-dist }}
- name: Install Cross
# Pin cargo cross to a version that we know is working for us.
run: |
cargo install cross --git https://github.com/cross-rs/cross/ --rev 7b79041 --locked
- name: Run cargo-dist
# This logic is a bit janky because it's trying to be a polyglot between
# powershell and bash since this will run on windows, macos, and linux!
# The two platforms don't agree on how to talk about env vars but they
# do agree on 'cat' and '$()' so we use that to marshal values between commands.
run: |
export PATH=$CARGO_HOME/bin:$PATH
# Actually do builds and make zips and whatnot
cargo dist build --tag="${GITHUB_REF_NAME}" --output-format=json ${MATRIX_DIST_ARGS} > dist-manifest.json
echo "dist ran successfully"
cat dist-manifest.json
# Parse out what we just built and upload it to the Github Release™
jq --raw-output ".artifacts[]?.path | select( . != null )" dist-manifest.json > uploads.txt
echo "uploading..."
cat uploads.txt
gh release upload "${GITHUB_REF_NAME}" $(cat uploads.txt)
echo "uploaded!"
# Parse out what we just built and upload it to the Github Release™
jq --raw-output ".artifacts[]?.path | select( . != null )" dist-manifest.json > uploads.txt
echo "uploading..."
cat uploads.txt
gh release upload "${GITHUB_REF_NAME}" $(cat uploads.txt)
echo "uploaded!"
- name: Upload attributions
run: |
make attributions
gh release upload "${GITHUB_REF_NAME}" twoliter-attributions.tar.gz
# Upload dependency attributions
upload-attributions:
needs: [create-release, upload-artifacts]
if: >-
${{ needs.create-release.outputs.has-releases == 'true'
&& github.repository == 'cbgbt/twoliter'
}}
runs-on: ubuntu-latest
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_REF_NAME: ${{ github.ref_name }}

# Mark the Github Release™ as a non-draft now that everything has succeeded!
publish-release:
# Only run after all the other tasks, but it's ok if upload-artifacts was skipped
needs: [create-release, upload-artifacts]
if: >-
${{ github.repository == 'bottlerocket-os/twoliter'
&& always()
&& needs.create-release.result == 'success'
&& (needs.upload-artifacts.result == 'skipped'
|| needs.upload-artifacts.result == 'success')
}}
runs-on: ubuntu-latest
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_REF_NAME: ${{ github.ref_name }}
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: mark release as non-draft
run: |
gh release edit "${GITHUB_REF_NAME}" --draft=false
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Upload attributions
run: |
make attributions
gh release upload "${GITHUB_REF_NAME}" twoliter-attributions.tar.gz
# Mark the Github Release™ as a non-draft now that everything has succeeded!
publish-release:
# Only run after all the other tasks, but it's ok if upload-artifacts was skipped
needs: [create-release, upload-artifacts, upload-attributions]
if: >-
${{ github.repository == 'cbgbt/twoliter'
&& always()
&& needs.create-release.result == 'success'
&& (needs.upload-artifacts.result == 'skipped'
|| needs.upload-artifacts.result == 'success')
}}
runs-on: ubuntu-latest
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_REF_NAME: ${{ github.ref_name }}
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: mark release as non-draft
run: |
gh release edit "${GITHUB_REF_NAME}" --draft=false
4 changes: 1 addition & 3 deletions .github/workflows/rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,7 @@ on:
- "**.svg"
jobs:
build:
runs-on:
group: bottlerocket
labels: bottlerocket_ubuntu-latest_16-core
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install crane for testing
Expand Down
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion twoliter/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "twoliter"
version = "0.4.6"
version = "0.4.7"
edition = "2021"
description = "A command line tool for creating custom builds of Bottlerocket"
authors = ["Matthew James Briggs <[email protected]>"]
Expand Down

0 comments on commit 771849b

Please sign in to comment.