Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support arm64 binary generation #1342

Merged
merged 3 commits into from Jan 5, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
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