Merge pull request #3 from jakewilkins/arch_dependent_dependencies #51
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
name: Rust | |
on: | |
push: | |
branches: [ "main" ] | |
pull_request: | |
branches: [ "main" ] | |
env: | |
CARGO_TERM_COLOR: always | |
jobs: | |
build_x86_64: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Cache | |
uses: actions/[email protected] | |
with: | |
path: | | |
~/.cargo/registry | |
~/.cargo/git | |
target | |
key: ${{ runner.os }}-1-cargo-${{ hashFiles('**/Cargo.lock') }}-${{ hashFiles('src/**.rs') }} | |
- uses: actions/checkout@v3 | |
- name: Build x86_64 releases | |
run: script/build-x86_64 | |
- name: Compress release assets | |
run: | | |
sudo chown -R runner:docker ./target | |
pushd ./target/x86_64-unknown-linux-musl/release/ | |
zip -9 gh-device-flow.x86_64-linux.zip ./github-device-flow | |
popd | |
mv ./target/x86_64-unknown-linux-musl/release//gh-device-flow.x86_64-linux.zip . | |
- name: Upload compiled artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: gh-device-flow.x86_64-linux.zip | |
path: gh-device-flow.x86_64-linux.zip | |
build_arm: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Cache | |
uses: actions/[email protected] | |
with: | |
path: | | |
~/.cargo/registry | |
~/.cargo/git | |
target | |
key: ${{ runner.os }}-1-cargo-${{ hashFiles('**/Cargo.lock') }}-${{ hashFiles('src/**.rs') }} | |
- uses: actions/checkout@v3 | |
- name: Build ARM releases | |
run: script/build-arm | |
- name: Compress release assets | |
run: | | |
sudo chown -R runner:docker ./target | |
pushd ./target/arm-unknown-linux-musleabihf/release/ | |
zip -9 gh-device-flow.arm-linux.zip ./github-device-flow | |
popd | |
mv ./target/arm-unknown-linux-musleabihf/release/gh-device-flow.arm-linux.zip . | |
- name: Upload compiled artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: gh-device-flow.arm-linux.zip | |
path: gh-device-flow.arm-linux.zip | |
build_armv7: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Cache | |
uses: actions/[email protected] | |
with: | |
path: | | |
~/.cargo/registry | |
~/.cargo/git | |
target | |
key: ${{ runner.os }}-1-cargo-${{ hashFiles('**/Cargo.lock') }}-${{ hashFiles('src/**.rs') }} | |
- uses: actions/checkout@v3 | |
- name: Build ARM releases | |
run: script/build-armv7 | |
- name: Compress release assets | |
run: | | |
sudo chown -R runner:docker ./target | |
pushd ./target/armv7-unknown-linux-musleabihf/release/ | |
zip -9 gh-device-flow.armv7-linux.zip ./github-device-flow | |
popd | |
mv ./target/armv7-unknown-linux-musleabihf/release/gh-device-flow.armv7-linux.zip . | |
- name: Upload compiled artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: gh-device-flow.armv7-linux.zip | |
path: gh-device-flow.armv7-linux.zip | |
build_macos: | |
name: Build macos release | |
runs-on: macos-latest | |
steps: | |
- uses: actions/checkout@master | |
- uses: actions/cache@v2 | |
id: cache-build | |
with: | |
path: | | |
~/.cargo/registry | |
~/.cargo/git | |
target | |
key: ${{ runner.os }}-macos-1-cargo-${{ hashFiles('**/Cargo.lock') }}-${{ hashFiles('src/**.rs') }} | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
target: x86_64-apple-darwin | |
override: true | |
- name: Build release | |
uses: actions-rs/cargo@v1 | |
with: | |
command: build | |
args: --release | |
- name: Import Code-Signing Certificates | |
uses: Apple-Actions/import-codesign-certs@v1 | |
with: | |
# The certificates in a PKCS12 file encoded as a base64 string | |
p12-file-base64: ${{ secrets.MACOS_CERTIFICATE }} | |
# The password used to import the PKCS12 file. | |
p12-password: ${{ secrets.MACOS_CERTIFICATE_PW }} | |
- name: Install gon via HomeBrew for code signing and app notarization | |
run: | | |
brew tap mitchellh/gon | |
brew install mitchellh/gon/gon | |
- name: Move asset | |
run: | | |
mv ./target/release/github-device-flow . | |
- name: Sign the mac binaries with Gon | |
env: | |
AC_USERNAME: ${{ secrets.AC_USERNAME }} | |
AC_PASSWORD: ${{ secrets.AC_PASSWORD }} | |
run: | | |
gon -log-level=debug -log-json ./.github/gon.json | |
- name: Upload compiled artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: gh-device-flow.macos.zip | |
path: gh-device-flow.macos.zip | |
create_release: | |
runs-on: ubuntu-latest | |
needs: [build_arm, build_armv7, build_macos, build_x86_64] | |
if: github.ref == 'refs/heads/main' | |
steps: | |
- name: Create release | |
id: create_release | |
uses: actions/create-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token | |
with: | |
tag_name: release-${{ github.sha }} | |
release_name: Release ${{ github.sha }} | |
body: | | |
Changes in this Release - Things. | |
draft: false | |
prerelease: false | |
- name: Download all workflow run artifacts | |
uses: actions/download-artifact@v3 | |
- name: Upload Release Asset x86_64 | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ./gh-device-flow.x86_64-linux.zip/gh-device-flow.x86_64-linux.zip | |
asset_name: gh-device-flow.x86_64-linux.zip | |
asset_content_type: application/zip | |
- name: Upload Release Asset ARM | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ./gh-device-flow.arm-linux.zip/gh-device-flow.arm-linux.zip | |
asset_name: gh-device-flow.arm-linux.zip | |
asset_content_type: application/zip | |
- name: Upload Release Asset ARMv7 | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ./gh-device-flow.armv7-linux.zip/gh-device-flow.armv7-linux.zip | |
asset_name: gh-device-flow.armv7-linux.zip | |
asset_content_type: application/zip | |
- name: Upload Release Asset macos | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ./gh-device-flow.macos.zip/gh-device-flow.macos.zip | |
asset_name: gh-device-flow.macos.zip | |
asset_content_type: application/zip |