From 4446ddb2924356ff229d288da1f366c5d47420fa Mon Sep 17 00:00:00 2001 From: hituzi no sippo Date: Sun, 22 Sep 2024 06:41:23 +0900 Subject: [PATCH] update homebrew --- .github/workflows/release.yml | 217 ++++------------------------------ 1 file changed, 21 insertions(+), 196 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index cb7447c..726413a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -6,224 +6,49 @@ on: - "v*" jobs: - linux: - env: - TARGET_DIR: target/release + update-homebrew: + runs-on: macos-latest - runs-on: ubuntu-latest steps: - - name: Install latest nightly - uses: actions-rs/toolchain@v1 - with: - toolchain: nightly - override: true - components: rustfmt, clippy - uses: actions/checkout@v4 - - name: Install cargo deb - uses: actions-rs/cargo@v1 with: - command: install - args: cargo-deb - - - name: Build debian package - shell: bash - run: | - cargo deb -p teracli -o "tera-cli_linux_amd64.deb" + # 0必要? + fetch-depth: 0 - - name: Upload Linux artifacts - uses: actions/upload-artifact@v4 + - name: Build MacOS binary + id: build-macos-binary + uses: taiki-e/upload-rust-binary-action@v1 with: - name: linux - path: "tera-cli_linux_amd64.deb" - - macos: - env: - TARGET_DIR: target/release + bin: tera + target: x86_64-apple-darwin + archive: tera-cli-$target + checksum: sha256 + dry-run: true + token: '' - runs-on: macos-latest - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - name: Get Release Version + id: get-release-version run: | echo GITHUB_REF=$GITHUB_REF RELEASE_VERSION=${GITHUB_REF#refs/*/} RAW_VERSION=${RELEASE_VERSION:1} - echo "RELEASE_VERSION=$RELEASE_VERSION" >> $GITHUB_ENV - echo "RAW_VERSION=$RAW_VERSION" >> $GITHUB_ENV - echo "SHORT_SHA=${GITHUB_SHA::8}" >> $GITHUB_ENV - - - name: Install latest nightly - uses: actions-rs/toolchain@v1 - with: - toolchain: nightly - override: true - components: rustfmt, clippy + echo "RAW_VERSION=$RAW_VERSION" >> $GITHUB_OUTPUT - - name: Check tooling - shell: bash + - name: ls run: | - tar --version - shasum --version + ls -l - - name: Build MacOS binary - shell: bash - run: | - cargo build --release - cp "${{ env.TARGET_DIR }}/tera" /usr/local/bin - - - name: Compress & sha256 - run: | - tar -czf ${{ env.TARGET_DIR }}/tera-macos-${{ env.RELEASE_VERSION }}.tar.gz -C ${{ env.TARGET_DIR }} tera - SHA256=$(shasum -a 256 ${{ env.TARGET_DIR }}/tera-macos-${{ env.RELEASE_VERSION }}.tar.gz | awk '{ print $1}' | tee ${{ env.TARGET_DIR }}/tera-macos-${{ env.RELEASE_VERSION }}.tar.gz.sha256) - echo SHA256: $SHA256 - echo "SHA256=$SHA256" >> $GITHUB_ENV - - - name: Upload MacOS artifacts - uses: actions/upload-artifact@v4 - with: - name: macos - path: | - ${{ env.TARGET_DIR }}/tera - ${{ env.TARGET_DIR }}/tera-macos-${{ env.RELEASE_VERSION }}.tar.gz - ${{ env.TARGET_DIR }}/tera-macos-${{ env.RELEASE_VERSION }}.tar.gz.sha256 - - # We do that before checking out master (in case we were not in master already) + # We do that before hecking out master (in case we were not in master already) - name: Prepare new Formula env: NAME: Tera DESCRIPTION: "A command line utility written in Rust to render templates using the tera templating engine" SITE: https://github.com REPO: chevdor/tera-cli - SHA256: ${{env.SHA256}} - VERSION: ${{env.RAW_VERSION}} + ARCHIVE: ${{ steps.build-macos-binary.outputs.archive }} + SHA256: ${{ steps.build-macos-binary.outputs.sha256 }} + VERSION: ${{ steps.get-release-version.outputs.RAW_VERSION }} run: | tera --version tera --template templates/formula.rb --env-only > $HOME/tera.rb cat $HOME/tera.rb - - create_draft: - needs: ["linux", "macos"] - name: Create Draft - runs-on: ubuntu-latest - outputs: - release_url: ${{ steps.create-release.outputs.html_url }} - asset_upload_url: ${{ steps.create-release.outputs.upload_url }} - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - name: Get Release Version - run: | - echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV - echo "SHORT_SHA=${GITHUB_SHA::8}" >> $GITHUB_ENV - - uses: actions/download-artifact@v4 - - # TODO: here we could fetch the artifacts and reuse our freshest build. - - name: Install tera v0.1.0 - run: | - URL=https://github.com/chevdor/tera-cli/releases/download/v0.1.0-ae9bc49c/tera-cli_linux_amd64.deb - wget $URL - sudo dpkg -i tera-cli_linux_amd64.deb - tera --version - - - name: Generate changelog - id: change_log - # for the first command to work, we need to checkout with fetch-depth: 0 - run: | - LAST_TAG=$(git describe --tags --abbrev=0 ${{ env.RELEASE_VERSION }}^ ) - JSON=$(git log $LAST_TAG..HEAD \ - --pretty=format:'{ "commit": "%H", "short_sha": "%h", "author": "%an", "date": "%ad", "message": "%s"},' \ - $@ | \ - perl -pe 'BEGIN{print "{ \"since\": \"'${LAST_TAG}'\", \"commits\": ["}; END{print "]}"}' | \ - perl -pe 's/},]/}]/') - echo $JSON | tera --template templates/changelog.md --stdin > changelog.md - - - name: Render release notes - run: | - export X86_64_GNU_TGZ_URL="https://github.com/chevdor/tera-cli/releases/download/${{ env.RELEASE_VERSION }}/tera-cli-x86_64-unknown-linux-gnu.tar.gz" - export X86_64_MUSL_TGZ_URL="https://github.com/chevdor/tera-cli/releases/download/${{ env.RELEASE_VERSION }}/tera-cli-x86_64-unknown-linux-musl.tar.gz" - export AARCH64_GNU_TGZ_URL="https://github.com/chevdor/tera-cli/releases/download/${{ env.RELEASE_VERSION }}/tera-cli-aarch64-unknown-linux-gnu.tar.gz" - export AARCH64_MUSL_TGZ_URL="https://github.com/chevdor/tera-cli/releases/download/${{ env.RELEASE_VERSION }}/tera-cli-aarch64-unknown-linux-musl.tar.gz" - export DEBIAN_URL="https://github.com/chevdor/tera-cli/releases/download/${{ env.RELEASE_VERSION }}/tera-cli_linux_amd64.deb" - export MACOS_TGZ_URL="https://github.com/chevdor/tera-cli/releases/download/${{ env.RELEASE_VERSION }}/tera-macos-${{ env.RELEASE_VERSION }}.tar.gz" - export WINDOWS_ZIP_URL="https://github.com/chevdor/tera-cli/releases/download/${{ env.RELEASE_VERSION }}/tera-cli-aarch64-unknown-linux-musl.tar.gz" - - export CHANGELOG=$(cat changelog.md) - tera --env --env-only --template templates/release.md > RELEASE_NOTES.md - - - name: Create Release - id: create-release - uses: actions/create-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: ${{ env.RELEASE_VERSION }} - release_name: Tera ${{ env.RELEASE_VERSION }} (${{ env.SHORT_SHA }}) - body_path: ./RELEASE_NOTES.md - draft: true - - publish-binaries: - runs-on: ubuntu-latest - needs: ["create_draft"] - steps: - - uses: actions/checkout@v4 - - name: Get Release Version - run: | - echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV - echo "SHORT_SHA=${GITHUB_SHA::8}" >> $GITHUB_ENV - - - uses: actions/download-artifact@v4 - - - name: Upload Debian package - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ needs.create_draft.outputs.asset_upload_url }} - asset_path: "linux/tera-cli_linux_amd64.deb" - asset_name: "tera-cli_linux_amd64.deb" - asset_content_type: application/vnd.debian.binary-package - - - name: Upload MacOS archive - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ needs.create_draft.outputs.asset_upload_url }} - asset_path: "macos/tera-macos-${{ env.RELEASE_VERSION }}.tar.gz" - asset_name: "tera-macos-${{ env.RELEASE_VERSION }}.tar.gz" - asset_content_type: application/gzip - - upload-binaries: - needs: ["create_draft"] - strategy: - matrix: - include: - - os: ubuntu-latest - target: x86_64-unknown-linux-gnu - - os: ubuntu-latest - target: x86_64-unknown-linux-musl - - os: ubuntu-latest - target: aarch64-unknown-linux-gnu - - os: ubuntu-latest - target: aarch64-unknown-linux-musl - - os: macos-latest - target: x86_64-apple-darwin - - os: macos-latest - target: aarch64-apple-darwin - - os: windows-latest - target: x86_64-pc-windows-msvc - - runs-on: ${{ matrix.os }} - - steps: - - uses: actions/checkout@v4 - - uses: taiki-e/upload-rust-binary-action@v1 - with: - bin: tera - target: ${{ matrix.target }} - archive: tera-cli-$target - checksum: sha512 - token: ${{ secrets.GITHUB_TOKEN }}