From ff32209db8e79f21cb58a1fc9c3158c63f95f7db Mon Sep 17 00:00:00 2001 From: "R. Tyler Croy" Date: Sat, 26 Aug 2023 11:39:50 -0700 Subject: [PATCH] Use an updated release github action --- .github/workflows/release.yml | 112 ++++++++++------------------------ 1 file changed, 33 insertions(+), 79 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4bc393f..82eb932 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -51,84 +51,38 @@ jobs: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} steps: - uses: actions/checkout@v3 - - name: Install Rust - run: rustup update 1.67.1 --no-self-update && rustup default 1.67.1 - - name: Install cargo-dist - run: curl --proto '=https' --tlsv1.2 -LsSf https://github.com/axodotdev/cargo-dist/releases/download/v0.0.6/cargo-dist-installer.sh | sh - - id: create-release - run: | - cargo dist plan --tag=${{ github.ref_name }} --output-format=json > dist-manifest.json - echo "dist plan ran successfully" - cat dist-manifest.json + - name: Install Rust toolchain + uses: dtolnay/rust-toolchain@stable + - name: Install Zig toolchain + uses: korandoru/setup-zig@v1 + with: + zig-version: 0.10.0 + - name: Install Cargo Lambda + uses: jaxxstorm/action-install-gh-release@v1.9.0 + with: + repo: cargo-lambda/cargo-lambda + platform: linux # Other valid options: 'windows' or 'darwin' + arch: x86_64 # Other valid options for linux: 'aarch64' + - name: Build release + run: cargo lambda build --release --output-format zip - # 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!" + - name: release + uses: actions/create-release@v1 + id: create_release + with: + draft: false + prerelease: false + release_name: ${{ steps.version.outputs.version }} + tag_name: ${{ github.ref }} + env: + GITHUB_TOKEN: ${{ github.token }} - # 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" - - # 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' }} - strategy: - matrix: - # For these target platforms - include: - - os: macos-11 - dist-args: --artifacts=local --target=aarch64-apple-darwin --target=x86_64-apple-darwin - install-dist: curl --proto '=https' --tlsv1.2 -LsSf https://github.com/axodotdev/cargo-dist/releases/download/v0.0.6/cargo-dist-installer.sh | sh - - os: ubuntu-20.04 - dist-args: --artifacts=local --target=x86_64-unknown-linux-gnu - install-dist: curl --proto '=https' --tlsv1.2 -LsSf https://github.com/axodotdev/cargo-dist/releases/download/v0.0.6/cargo-dist-installer.sh | sh - - runs-on: ${{ matrix.os }} - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - steps: - - uses: actions/checkout@v3 - - name: Install Rust - run: rustup update 1.67.1 --no-self-update && rustup default 1.67.1 - - name: Install cargo-dist - run: ${{ matrix.install-dist }} - - 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: | - # 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!" - - # 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: ${{ 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 }} - steps: - - uses: actions/checkout@v3 - - name: mark release as non-draft - run: | - gh release edit ${{ github.ref_name }} --draft=false + - name: Upload Lambda zip + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ github.token }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./target/lambda/lambda-s3-restructure/bootstrap.zip + asset_name: lambda-s3-restructure-bootstrap.zip + asset_content_type: application/zip