Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 54 additions & 11 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@ on:
env:
HASH_FILENAME_WINDOWS: ucrtool-windows.hash
HASH_FILENAME_MAC: ucrtool-macos.hash
HASH_FILENAME: ucrtool-ubuntu.hash
HASH_FILENAME_LINUX_AMD64: ucrtool-linux-amd64.hash
HASH_FILENAME_LINUX_ARM64: ucrtool-linux-arm64.hash

jobs:
build-windows:
Expand Down Expand Up @@ -177,11 +178,19 @@ jobs:
retention-days: 3

build-ubuntu:
runs-on: ubuntu-latest
runs-on: ${{ matrix.runs-on }}
environment: Ubuntu
strategy:
matrix:
node-version: [ '22.x']
include:
- runs-on: ubuntu-latest
node-version: '22.x'
arch: amd64
docker-platform: linux/amd64
- runs-on: ubuntu-24.04-arm64
node-version: '22.x'
arch: arm64
docker-platform: linux/arm64

steps:
- name: Checkout
Expand Down Expand Up @@ -244,16 +253,17 @@ jobs:
uses: docker/build-push-action@v6
with:
context: .
platforms: ${{ matrix.docker-platform }}
push: true
tags: ${{ secrets.DOCKERHUB_USERNAME }}/uc-tool:latest
tags: ${{ secrets.DOCKERHUB_USERNAME }}/uc-tool:${{ matrix.arch }}-latest

- name: Prepare artifacts
shell: bash
run: |
mkdir -p artifacts
cp server/ucrtool-server artifacts/
cp -r server/public artifacts/
echo "ARTIFACT_NAME=ucrtool-${{ env.VERSION }}-aarch64" >> $GITHUB_ENV
echo "ARTIFACT_NAME=ucrtool-${{ env.VERSION }}-linux-${{ matrix.arch }}" >> $GITHUB_ENV

- name: Create upload artifact
shell: bash
Expand All @@ -272,6 +282,33 @@ jobs:
# npx postject server NODE_SEA_BLOB sea-prep.blob --sentinel-fuse NODE_SEA_FUSE_fce680ab2cc467b6e072b8b5df1996b2


docker-manifest:
name: Publish Docker multi-arch latest
runs-on: ubuntu-latest
needs: [build-ubuntu]

steps:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Create and push multi-arch latest manifest
run: |
docker buildx imagetools create \
--tag ${{ secrets.DOCKERHUB_USERNAME }}/uc-tool:latest \
${{ secrets.DOCKERHUB_USERNAME }}/uc-tool:amd64-latest \
${{ secrets.DOCKERHUB_USERNAME }}/uc-tool:arm64-latest

- name: Inspect multi-arch latest manifest
run: |
docker buildx imagetools inspect ${{ secrets.DOCKERHUB_USERNAME }}/uc-tool:latest



release:
name: Create Release
Expand Down Expand Up @@ -307,10 +344,11 @@ jobs:
run: |
# append timestamp
for filename in *.zip; do mv $filename "$(basename $filename .zip)-${{ env.TIMESTAMP }}.zip"; done;
for filename in *.zip; do echo "sha256 `sha256sum $filename`" >> ${{ env.HASH_FILENAME_WINDOWS }}; done;
for filename in *aarch64.tar.gz; do echo "sha256 `sha256sum $filename`" >> ${{ env.HASH_FILENAME }}; done;
for filename in *macos.tar.gz; do echo "sha256 `sha256sum $filename`" >> ${{ env.HASH_FILENAME_MAC }}; done;
for filename in *.tar.gz; do mv $filename "$(basename $filename .tar.gz)-${{ env.TIMESTAMP }}.tar.gz"; done;
for filename in *.zip; do echo "sha256 `sha256sum $filename`" >> ${{ env.HASH_FILENAME_WINDOWS }}; done;
for filename in *linux-amd64*.tar.gz; do echo "sha256 `sha256sum $filename`" >> ${{ env.HASH_FILENAME_LINUX_AMD64 }}; done;
for filename in *linux-arm64*.tar.gz; do echo "sha256 `sha256sum $filename`" >> ${{ env.HASH_FILENAME_LINUX_ARM64 }}; done;
for filename in *macos*.tar.gz; do echo "sha256 `sha256sum $filename`" >> ${{ env.HASH_FILENAME_MAC }}; done;

- name: Create Pre-Release
uses: "marvinpinto/action-automatic-releases@latest"
Expand All @@ -324,13 +362,17 @@ jobs:
*.zip
*.tar.gz
${{ env.HASH_FILENAME_WINDOWS }}
${{ env.HASH_FILENAME }}
${{ env.HASH_FILENAME_LINUX_AMD64 }}
${{ env.HASH_FILENAME_LINUX_ARM64 }}
${{ env.HASH_FILENAME_MAC }}

- name: Create GitHub release archives
if: "contains(github.ref, 'tags/v')"
run: |
for filename in *.zip; do echo "sha256 `sha256sum $filename`" >> ${{ env.HASH_FILENAME_WINDOWS }}; done;
for filename in *.tar.gz; do echo "sha256 `sha256sum $filename`" >> ${{ env.HASH_FILENAME }}; done;
for filename in *linux-amd64*.tar.gz; do echo "sha256 `sha256sum $filename`" >> ${{ env.HASH_FILENAME_LINUX_AMD64 }}; done;
for filename in *linux-arm64*.tar.gz; do echo "sha256 `sha256sum $filename`" >> ${{ env.HASH_FILENAME_LINUX_ARM64 }}; done;
for filename in *macos*.tar.gz; do echo "sha256 `sha256sum $filename`" >> ${{ env.HASH_FILENAME_MAC }}; done;

- name: Create Release
uses: "marvinpinto/action-automatic-releases@latest"
Expand All @@ -342,5 +384,6 @@ jobs:
*.tar.gz
*.zip
${{ env.HASH_FILENAME_WINDOWS }}
${{ env.HASH_FILENAME }}
${{ env.HASH_FILENAME_LINUX_AMD64 }}
${{ env.HASH_FILENAME_LINUX_ARM64 }}
${{ env.HASH_FILENAME_MAC }}
Loading