Skip to content

Commit

Permalink
ci(publish): (wip) add .goreleaser.yml, pt. 2
Browse files Browse the repository at this point in the history
  • Loading branch information
rami3l committed Jul 18, 2023
1 parent f911510 commit 58288d7
Show file tree
Hide file tree
Showing 3 changed files with 81 additions and 58 deletions.
3 changes: 3 additions & 0 deletions .cargo/config
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# https://users.rust-lang.org/t/cross-compiling-how-to-statically-link-glibc/83907/2
[target.aarch64-unknown-linux-musl]
linker = "aarch64-linux-gnu-gcc"
120 changes: 67 additions & 53 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,79 +15,93 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

- name: Create release
uses: softprops/action-gh-release@v1
with:
prerelease: ${{ contains(github.ref, '-') }}

publish:
name: Publish for ${{ matrix.os }}
build-release:
name: Build release binaries for ${{ matrix.target }}
needs: [create-release]
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- os: windows-latest
# artifact_name: pacaptr.exe
# asset_name: pacaptr-windows-amd64
target: x86_64-pc-windows-msvc
- os: windows-latest
target: aarch64-pc-windows-msvc
- os: macos-latest
target: x86_64-apple-darwin
- os: macos-latest
# artifact_name: pacaptr
# asset_name: pacaptr-macos-amd64
target: aarch64-apple-darwin
- os: ubuntu-latest
# artifact_name: pacaptr
# asset_name: pacaptr-linux-amd64
target: x86_64-unknown-linux-musl
- os: ubuntu-latest
target: aarch64-unknown-linux-musl
steps:
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@stable
- name: Set macOS environment variables
if: runner.os == 'macOS'

- name: Setup extra build tools
if: matrix.target == 'aarch64-unknown-linux-musl'
run: |
echo "SDKROOT=$(xcrun -sdk macosx11.1 --show-sdk-path)" >> $GITHUB_ENV
echo "MACOSX_DEPLOYMENT_TARGET=$(xcrun -sdk macosx11.1 --show-sdk-platform-version)" >> $GITHUB_ENV
- name: Publish
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: cargo xtask publish
sudo apt-get update
sudo apt-get install -y gcc-aarch64-linux-gnu
bump-choco-version:
name: Publish app on Chocolatey
runs-on: windows-latest
needs: [publish]
if: ${{ !contains(github.ref, '-') }}
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Publish to choco
env:
CHOCO_API_KEY: ${{ secrets.CHOCO_API_KEY }}
run: cargo xtask bump-choco
- name: Setup Rust
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}

- name: Build
run: |
cargo build --verbose --bin=pacaptr --release --locked --target=${{ matrix.target }}
# https://github.com/vercel/turbo/blob/ea934d13038361c24a1f71cad3b490d6c0936f37/.github/workflows/turborepo-release.yml#L268-L272
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: pacaptr-${{ matrix.target }}
path: target/${{ matrix.target }}/release/pacaptr*
retention-days: 1

bump-tap-version:
name: Bump formula version for homebrew
needs: [publish]
publish:
name: Publish via GoReleaser
needs: [build-release]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Generate new formula as `pacaptr.rb`
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: cargo xtask bump-tap
- name: Checkout tap
uses: actions/checkout@v3
- uses: actions/checkout@v3

# https://github.com/vercel/turbo/blob/ea934d13038361c24a1f71cad3b490d6c0936f37/.github/workflows/turborepo-release.yml#L306-L309
- name: Download artifacts
uses: actions/download-artifact@v3
with:
token: ${{ secrets.TAP_GITHUB_TOKEN }}
repository: rami3l/homebrew-tap
path: homebrew-tap
- name: Overwrite formula
path: dist/gh-artifacts

# Here we use `mv` to map Rust targets to Golang ones.
# https://github.com/vercel/turbo/blob/ea934d13038361c24a1f71cad3b490d6c0936f37/.github/workflows/turborepo-release.yml#L313-L318
- name: Modify and inspect artifacts
run: |
cp ./pacaptr.rb homebrew-tap/pacaptr.rb
ls homebrew-tap
- name: Create Pull Request
uses: peter-evans/create-pull-request@v5
chmod -R 777 dist/gh-artifacts
ls -laR dist/gh-artifacts
mv -f dist/gh-artifacts/pacaptr-x86_64-pc-windows-msvc dist/gh-artifacts/pacaptr_windows_amd64_v1
mv -f dist/gh-artifacts/pacaptr-aarch64-pc-windows-msvc dist/gh-artifacts/pacaptr_windows_arm64
mv -f dist/gh-artifacts/pacaptr-x86_64-apple-darwin dist/gh-artifacts/pacaptr_darwin_amd64_v1
mv -f dist/gh-artifacts/pacaptr-aarch64-apple-darwin dist/gh-artifacts/pacaptr_darwin_arm64
mv -f dist/gh-artifacts/pacaptr-x86_64-unknown-linux-musl dist/gh-artifacts/pacaptr_linux_amd64_v1
mv -f dist/gh-artifacts/pacaptr-aarch64-unknown-linux-musl dist/gh-artifacts/pacaptr_linux_arm64
ls -laR dist/gh-artifacts
# https://goreleaser.com/ci/actions/?h=github+act#usage
- name: Publish via GoReleaser
uses: goreleaser/goreleaser-action@v4
with:
path: homebrew-tap
token: ${{ secrets.TAP_GITHUB_TOKEN }}
# https://github.com/orgs/community/discussions/26686#discussioncomment-3544088
title: "feat: add `pacaptr` ${{ github.ref_name }}"
commit-message: "feat: add `pacaptr` ${{ github.ref_name }}"
distribution: goreleaser
version: latest
args: release --clean --debug
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TAP_GITHUB_TOKEN: ${{ secrets.TAP_GITHUB_TOKEN }}
CHOCO_API_KEY: ${{ secrets.CHOCO_API_KEY }}
16 changes: 11 additions & 5 deletions .goreleaser.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,18 +9,22 @@ before:
- bash -c 'echo "package main; func main() {}" > dummy.go'

builds:
- goos:
- id: pacaptr
binary: pacaptr
main: dummy.go
goos:
- linux
- windows
- darwin
goarch:
- arm64
- amd64
# TODO: Copy files
hooks:
# Actually override the release binary.
post: bash -c 'mv -f dist/gh-artifacts/pacaptr_{{ .Target }}/{{ .Name }} {{ .Path }}'

universal_binaries:
- replace: true
# TODO: Copy files

archives:
- format: tar.gz
Expand All @@ -31,7 +35,7 @@ archives:
{{- else if eq .Arch "386" }}i386
{{- else }}{{ .Arch }}{{ end }}
{{- if .Arm }}v{{ .Arm }}{{ end }}
# use zip for windows archives
# Use zip for windows archives
format_overrides:
- goos: windows
format: zip
Expand All @@ -58,7 +62,9 @@ brews:
test: |
system "#{bin}/pacaptr --help"
skip_upload: auto
# TODO: Remove this when moving out of testing.
# skip_upload: auto
skip_upload: false

# https://github.com/goreleaser/goreleaser/blob/a0f0d01a8143913cde72ebc1248abef089ae9b27/.goreleaser.yaml#L211
repository:
Expand Down

0 comments on commit 58288d7

Please sign in to comment.