aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows/bun-linux-aarch64.yml
blob: 24217ae2bbacfa0035bb6f1595dd1268ab86b39a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
name: bun-linux

concurrency:
  group: bun-linux-aarch64-${{ github.ref }}
  cancel-in-progress: true

env:
  REGISTRY: ghcr.io
  IMAGE_NAME: ${{ github.repository }}
  TEST_TAG: bun-test'

on:
  push:
    branches:
      - main
    paths:
      - "src/**/*"
      - "test/**/*"
      - "build.zig"
      - "Makefile"
      - "Dockerfile"
  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

jobs:
  linux:
    name: ${{matrix.tag}}
    runs-on: ${{matrix.runner}}
    if: github.repository_owner == 'oven-sh'
    timeout-minutes: 90
    permissions: write-all
    strategy:
      matrix:
        include:
          - cpu: native
            tag: linux-aarch64
            arch: aarch64
            build_arch: arm64
            runner: linux-arm64
            webkit_url: "https://github.com/oven-sh/WebKit/releases/download/2023-oct3-1/bun-webkit-linux-arm64-lto.tar.gz"
            webkit_basename: "bun-webkit-linux-arm64-lto"
            build_machine_arch: aarch64

    steps:
      - uses: actions/checkout@v3
        with:
          submodules: recursive
      - uses: docker/setup-buildx-action@v2
        id: buildx
        with:
          install: true
      - name: Run
        run: |
          rm -rf ${{runner.temp}}/release
      - name: Login to GitHub Container Registry
        uses: docker/login-action@v2
        with:
          registry: ghcr.io
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}
      - run: |
          mkdir -p /tmp/.buildx-cache-${{matrix.tag}}
      - name: Build and push
        uses: docker/build-push-action@v3
        with:
          context: .
          push: false
          cache-from: type=local,src=/tmp/.buildx-cache-${{matrix.tag}}
          cache-to: type=local,dest=/tmp/.buildx-cache-${{matrix.tag}}
          build-args: |
            ARCH=${{matrix.arch}}
            BUILDARCH=${{matrix.build_arch}}
            BUILD_MACHINE_ARCH=${{matrix.build_machine_arch}}
            CPU_TARGET=${{matrix.cpu}}
            WEBKIT_URL=${{matrix.webkit_url}}
            GIT_SHA=${{github.sha}}
            WEBKIT_BASENAME=${{matrix.webkit_basename}}
          platforms: linux/${{matrix.build_arch}}
          target: artifact
          outputs: type=local,dest=${{runner.temp}}/release
      - name: Zip
        run: |
          # if zip is not found
          if [ ! -x "$(command -v zip)" ]; then
            sudo apt-get update && sudo apt-get install -y zip --no-install-recommends
          fi

          if [ ! -x "$(command -v strip)" ]; then
            sudo apt-get update && sudo apt-get install -y binutils --no-install-recommends
          fi

          cd ${{runner.temp}}/release
          chmod +x bun-profile bun

          mkdir bun-${{matrix.tag}}-profile
          mkdir bun-${{matrix.tag}}

          strip bun

          mv bun-profile bun-${{matrix.tag}}-profile/bun-profile
          mv bun bun-${{matrix.tag}}/bun

          zip -r bun-${{matrix.tag}}-profile.zip bun-${{matrix.tag}}-profile
          zip -r bun-${{matrix.tag}}.zip bun-${{matrix.tag}}
      - uses: actions/upload-artifact@v3
        with:
          name: bun-${{matrix.tag}}-profile
          path: ${{runner.temp}}/release/bun-${{matrix.tag}}-profile.zip
      - uses: actions/upload-artifact@v3
        with:
          name: bun-${{matrix.tag}}
          path: ${{runner.temp}}/release/bun-${{matrix.tag}}.zip
      - uses: actions/upload-artifact@v3
        with:
          name: bun-obj-${{matrix.tag}}
          path: ${{runner.temp}}/release/bun-obj
      - uses: actions/upload-artifact@v3
        with:
          name: ${{matrix.tag}}-dependencies
          path: ${{runner.temp}}/release/bun-dependencies
      - name: Release
        id: release
        uses: ncipollo/release-action@v1
        if: |
          github.repository_owner == 'oven-sh'
          && github.ref == 'refs/heads/main'
        with:
          prerelease: true
          body: "This canary release of Bun corresponds to the commit [${{ github.sha }}]"
          allowUpdates: true
          replacesArtifacts: true
          generateReleaseNotes: true
          artifactErrorsFailBuild: true
          token: ${{ secrets.GITHUB_TOKEN }}
          name: "Canary (${{github.sha}})"
          tag: "canary"
          artifacts: "${{runner.temp}}/release/bun-${{matrix.tag}}.zip,${{runner.temp}}/release/bun-${{matrix.tag}}-profile.zip"