Skip to content

Commit

Permalink
Merge pull request #1342 from pepix/support-arm64-target
Browse files Browse the repository at this point in the history
Support arm64 binary generation
  • Loading branch information
orta committed Jan 5, 2023
2 parents 64d9833 + 40bdfe1 commit 0f48d32
Show file tree
Hide file tree
Showing 6 changed files with 108 additions and 19 deletions.
56 changes: 56 additions & 0 deletions .github/workflows/release.yml
@@ -0,0 +1,56 @@
name: Release executable files for macOS

on:
workflow_dispatch:
inputs:
version_digit:
description: 'Version digit (major | minor | patch)'
required: true
default: 'patch'
type: choice
options:
- major
- minor
- patch

jobs:
release:
runs-on: ubuntu-latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
HOMEBREW_TAP_DEPLOY_SECRET_KEY: ${{ secrets.HOMEBREW_TAP_DEPLOY_SECRET_KEY }}
permissions: write-all
steps:
- name: Set up QEMU
uses: docker/setup-qemu-action@v2

- name: Install ldid
uses: MOZGIII/install-ldid-action@v1
with:
tag: v2.1.5-procursus6

- name: Check out repository code
uses: actions/checkout@v3

- name: Use node
uses: actions/setup-node@v3
with:
node-version: "14"

- name: Install dependencies
run: npm install

- name: Build
run: npm run build

- name: Package
run: |
git config --global user.email "action@github.com"
git config --global user.name "GitHub Action"
npm run release -- ${{ github.event.inputs.version_digit }} --ci
- name: Update homebrew/tap repo for new release
shell: bash
run: scripts/create-homebrew-tap-pr.sh
env:
VERSION: ${{ env.VERSION }}
6 changes: 3 additions & 3 deletions .release-it.json
Expand Up @@ -3,10 +3,10 @@
"release": true,
"assets": "brew-distribution/*.zip"
},
"buildCommand": "yarn package",
"buildCommand": "yarn package:x64; yarn package:arm64",
"hooks": {
"before:bump": "yarn declarations; yarn build:schemas",
"after:bump": "yarn package",
"after:release": "VERSION=${version} scripts/create-homebrew-tap-pr.sh"
"after:bump": "yarn package:x64; yarn package:arm64",
"after:release": "export VERSION=${version}; echo 'VERSION=${version}' >> $GITHUB_ENV"
}
}
2 changes: 2 additions & 0 deletions CHANGELOG.md
Expand Up @@ -16,6 +16,8 @@

<!-- Your comment below this -->

- Support arm64 binary generation for Apple silicon users [#1342](https://github.com/danger/danger-js/pull/1342) [@pepix]

<!-- Your comment above this -->

## 11.2.0
Expand Down
4 changes: 2 additions & 2 deletions CONTRIBUTING.md
Expand Up @@ -40,8 +40,8 @@ Following [this commit](https://github.com/danger/danger-js/commit/a26ac3b3bd4f0
- Modify `changelog.md`, adding a new `### 0.21.0` heading under the `### Main` heading at the top of the file.
- Commit both changes with the commit message **Version bump**.
- Tag this commit - `git tag 0.21.0`.
- Push the commit and tag to master - `git push origin main --follow-tags`. Travis CI will build the tagged commit and
publish that tagged version to NPM.
- Push the commit and tag to master - `git push origin main --follow-tags`. GitHub Actions will build the tagged commit
and publish that tagged version to NPM.

:ship:

Expand Down
2 changes: 2 additions & 0 deletions package.json
Expand Up @@ -65,6 +65,8 @@
"build:watch": "tsc -w",
"link": "yarn run build && chmod +x distribution/commands/danger.js && yarn link",
"package": "yarn run pkg . --output brew-distribution/danger; zip -j brew-distribution/danger-macos.zip brew-distribution/danger; shasum -a 256 brew-distribution/danger-macos.zip",
"package:x64": "yarn run pkg . --output brew-distribution/danger-x64 --targets node16-macos-x64; zip -j brew-distribution/danger-macos-x64.zip brew-distribution/danger-x64; shasum -a 256 brew-distribution/danger-macos-x64.zip",
"package:arm64": "yarn run pkg . --output brew-distribution/danger-arm64 --targets node16-macos-arm64; zip -j brew-distribution/danger-macos-arm64.zip brew-distribution/danger-arm64; shasum -a 256 brew-distribution/danger-macos-arm64.zip",
"declarations": "ts-node ./scripts/create-danger-dts.ts",
"docs:cp_defs": "mkdir docs/docs_generate; cp source/danger.d.ts docs/docs_generate; cp node_modules/@octokit/rest/index.d.ts docs/docs_generate/github.d.ts",
"docs": "yarn run docs:cp_defs; yarn typedoc --ignoreCompilerErrors --mode modules --json docs/js_ref_dsl_docs.json --includeDeclarations source",
Expand Down
57 changes: 43 additions & 14 deletions scripts/create-homebrew-tap-pr.sh
Expand Up @@ -2,36 +2,65 @@

[ -z ${VERSION+x} ] && { echo "VERSION is missing"; exit 1; }

FILE=brew-distribution/danger-macos.zip
FILE_X64=brew-distribution/danger-macos-x64.zip
FILE_ARM64=brew-distribution/danger-macos-arm64.zip

if [ ! -f ${FILE} ]; then
echo ${FILE} not found!
if [ ! -f ${FILE_X64} ]; then
echo ${FILE_X64} not found!
exit 1
fi
if [ ! -f ${FILE_ARM64} ]; then
echo ${FILE_ARM64} not found!
exit 1
fi

SHA=$(shasum -a 256 ${FILE} | cut -f 1 -d " ")
echo "$SHA"
SHA_X64=$(shasum -a 256 ${FILE_X64} | cut -f 1 -d " ")
echo "SHA_X64=$SHA_X64"
SHA_ARM64=$(shasum -a 256 ${FILE_ARM64} | cut -f 1 -d " ")
echo "SHA_ARM64=$SHA_ARM64"

# Set up SSH
mkdir -p ~/.ssh
echo "${HOMEBREW_TAP_DEPLOY_SECRET_KEY}" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
git config --global user.name danger
git config --global user.email danger@users.noreply.github.com
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa
ssh-keyscan -H github.com >> ~/.ssh/known_hosts
ssh -o StrictHostKeyChecking=no -F /dev/null -vT git@github.com

# Clone tap repo
HOMEBREW_TAP_TMPDIR=$(mktemp -d)
git clone --depth 1 https://github.com/danger/homebrew-tap.git "$HOMEBREW_TAP_TMPDIR"
git clone --depth 1 git@github.com:danger/homebrew-tap.git "$HOMEBREW_TAP_TMPDIR"
cd "$HOMEBREW_TAP_TMPDIR" || exit 1

# git config user.name danger
# git config user.email danger@users.noreply.github.com

# Write formula
echo "class DangerJs < Formula" > danger-js.rb
echo " homepage \"https://github.com/danger/danger-js\"" >> danger-js.rb
echo " url \"https://github.com/danger/danger-js/releases/download/${VERSION}/danger-macos.zip\"" >> danger-js.rb
echo " sha256 \"${SHA}\"" >> danger-js.rb
echo >> danger-js.rb
echo " def install" >> danger-js.rb
echo " bin.install \"danger\"" >> danger-js.rb
echo " if Hardware::CPU.intel?" >> danger-js.rb
echo " url \"https://github.com/danger/danger-js/releases/download/${VERSION}/danger-macos-x64.zip\"" >> danger-js.rb
echo " sha256 \"${SHA_X64}\"" >> danger-js.rb
echo >> danger-js.rb
echo " def install" >> danger-js.rb
echo " bin.install \"danger-x64\" => \"danger\"" >> danger-js.rb
echo " end" >> danger-js.rb
echo " end" >> danger-js.rb
echo >> danger-js.rb
echo " if Hardware::CPU.arm?" >> danger-js.rb
echo " url \"https://github.com/danger/danger-js/releases/download/${VERSION}/danger-macos-arm64.zip\"" >> danger-js.rb
echo " sha256 \"${SHA_ARM64}\"" >> danger-js.rb
echo >> danger-js.rb
echo " def install" >> danger-js.rb
echo " bin.install \"danger-arm64\" => \"danger\"" >> danger-js.rb
echo " end" >> danger-js.rb
echo " end" >> danger-js.rb
echo "end" >> danger-js.rb

# Commit changes
git add danger-js.rb
git commit -m "Releasing danger-js version ${VERSION}"
git push origin master
git remote rm origin
git remote add origin git@github.com:danger/homebrew-tap.git
git push origin master

0 comments on commit 0f48d32

Please sign in to comment.