Multibuild #56
Workflow file for this run
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: Multibuild | |
on: | |
workflow_dispatch: | |
permissions: # added using https://github.com/step-security/secure-repo | |
contents: read | |
jobs: | |
x64_build: | |
runs-on: ${{ matrix.os }} | |
defaults: | |
run: | |
working-directory: ./packages/sshnoports | |
strategy: | |
matrix: | |
os: [ubuntu-latest, macOS-latest] | |
include: | |
- os: ubuntu-latest | |
output-name: sshnp-linux-x64 | |
- os: macOS-latest | |
output-name: sshnp-macos-x64 | |
steps: | |
- uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 | |
- name: Ensure version matches tag | |
if: startsWith(github.ref, 'refs/tags/v') | |
working-directory: ./packages/sshnoports | |
run: | | |
# check version.dart | |
REF=${{ github.ref }} | |
TAG=${REF:10} | |
DART_TAG="v$(egrep -o '^const String version = "(.*)";' lib/version.dart | cut -d'"' -f2)" | |
if [ "$TAG" != "$DART_TAG" ]; then | |
echo "Tag $TAG does not match version in version.dart: $DART_TAG" | |
exit 1 | |
fi | |
- uses: dart-lang/setup-dart@8a4b97ea2017cc079571daec46542f76189836b1 # v1.5.1 | |
- run: mkdir sshnp | |
- run: mkdir tarball | |
- run: dart pub get | |
- run: dart compile exe bin/activate_cli.dart -v -o sshnp/at_activate | |
- run: dart compile exe bin/sshnp.dart -v -o sshnp/sshnp | |
- run: dart compile exe bin/sshnpd.dart -v -o sshnp/sshnpd | |
- run: dart compile exe bin/sshrv.dart -v -o sshnp/sshrv | |
- run: dart compile exe bin/sshrvd.dart -v -o sshnp/sshrvd | |
- run: cp -r templates sshnp/templates | |
- run: cp LICENSE sshnp | |
- run: tar -cvzf tarball/${{ matrix.output-name }}.tgz sshnp | |
- uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3 | |
with: | |
name: x64_binaries | |
path: ./packages/sshnoports/tarball/${{ matrix.output-name }}.tgz | |
if-no-files-found: error | |
other_build: | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
working-directory: ./packages/sshnoports | |
strategy: | |
matrix: | |
platform: [linux/arm/v7, linux/arm64, linux/riscv64] | |
include: | |
- platform: linux/arm/v7 | |
output-name: sshnp-linux-arm | |
- platform: linux/arm64 | |
output-name: sshnp-linux-arm64 | |
- platform: linux/riscv64 | |
output-name: sshnp-linux-riscv64 | |
steps: | |
- uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 | |
- name: Ensure version matches tag | |
if: startsWith(github.ref, 'refs/tags/v') | |
working-directory: ./packages/sshnoports | |
run: | | |
# check version.dart | |
REF=${{ github.ref }} | |
TAG=${REF:10} | |
DART_TAG="v$(grep -Po '^const String version = "(.*)";' lib/version.dart | cut -d'"' -f2)" | |
if [ "$TAG" != "$DART_TAG" ]; then | |
echo "Tag $TAG does not match version in version.dart: $DART_TAG" | |
exit 1 | |
fi | |
- uses: docker/setup-qemu-action@68827325e0b33c7199eb31dd4e31fbe9023e06e3 # v3.0.0 | |
- uses: docker/setup-buildx-action@f95db51fddba0c2d1ec667646a06c2ce06100226 # v3.0.0 | |
- run: | | |
docker buildx build -t atsigncompany/sshnptarball -f tools/Dockerfile.package \ | |
--platform ${{ matrix.platform }} -o type=tar,dest=bins.tar . | |
- run: mkdir tarballs | |
- run: tar -xvf bins.tar -C tarballs | |
- uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3 | |
with: | |
name: other_binaries | |
path: ./packages/sshnoports/tarballs/${{ matrix.output-name }}.tgz | |
if-no-files-found: error | |
notify_on_completion: | |
needs: [x64_build, other_build] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Google Chat Notification | |
uses: Co-qn/google-chat-notification@3691ccf4763537d6e544bc6cdcccc1965799d056 # v1 | |
with: | |
name: SSH no ports binaries were built by GitHub Action ${{ github.run_number }} | |
url: ${{ secrets.GOOGLE_CHAT_WEBHOOK }} | |
status: ${{ job.status }} | |
notify_on_failure: | |
if: failure() | |
needs: [x64_build, other_build] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Google Chat Notification | |
uses: Co-qn/google-chat-notification@3691ccf4763537d6e544bc6cdcccc1965799d056 # v1 | |
with: | |
name: SSH no ports binaries build FAILED by GitHub Action ${{ github.run_number }} | |
url: ${{ secrets.GOOGLE_CHAT_WEBHOOK }} | |
status: ${{ job.status }} |