forked from chevdor/tera-cli
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
b5f7f87
commit 52fdd9c
Showing
1 changed file
with
32 additions
and
130 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -6,37 +6,7 @@ on: | |
- "v*" | ||
|
||
jobs: | ||
linux: | ||
env: | ||
TARGET_DIR: target/release | ||
|
||
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" | ||
- name: Upload Linux artifacts | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: linux | ||
path: "tera-cli_linux_amd64.deb" | ||
|
||
update_homebrew: | ||
update-homebrew: | ||
runs-on: macos-latest | ||
|
||
steps: | ||
|
@@ -89,111 +59,43 @@ jobs: | |
git config --global user.email '[email protected]' | ||
git commit Formula/tera.rb -m "build: new homebrew formula for ${{ env.RELEASE_VERSION }}" | ||
create_draft: | ||
needs: ["linux", "update_homebrew"] | ||
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 }} | ||
test: | ||
needs: ["update-homebrew"] | ||
runs-on: macos-latest | ||
|
||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: sha256 | ||
id: sha256 | ||
uses: taiki-e/upload-rust-binary-action@v1 | ||
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 | ||
bin: tera | ||
target: x86_64-apple-darwin | ||
archive: tera-cli-$target | ||
checksum: sha256,sha512 | ||
dry-run: true | ||
token: ${{ secrets.GITHUB_TOKEN }} | ||
|
||
- name: Render release notes | ||
- name: cat sha256 | ||
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-debian-package: | ||
runs-on: ubuntu-latest | ||
needs: ["create_draft"] | ||
steps: | ||
- 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 | ||
|
||
publish-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 | ||
cat ${{ steps.sha256.outputs.sha256 }} | ||
cat ${{ steps.sha256.outputs.sha512 }} | ||
rm ${{ steps.sha256.outputs.sha256 }} | ||
rm ${{ steps.sha256.outputs.sha512 }} | ||
rm ${{ steps.sha256.outputs.archive }}.tar.gz | ||
- name: sha512 | ||
id: sha512 | ||
uses: taiki-e/upload-rust-binary-action@v1 | ||
with: | ||
bin: tera | ||
target: ${{ matrix.target }} | ||
target: x86_64-apple-darwin | ||
archive: tera-cli-$target | ||
checksum: sha512 | ||
checksum: sha256,sha512 | ||
dry-run: true | ||
token: ${{ secrets.GITHUB_TOKEN }} | ||
|
||
- name: cat sha512 | ||
run: | | ||
cat ${{ steps.sha512.outputs.sha256 }} | ||
cat ${{ steps.sha512.outputs.sha512 }} |