aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows/bun.yml
blob: af71c6f7f40c201753009f693645a775f73d66c6 (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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
name: bun
on:
  push:
    branches: [main, bun-actions]
    paths-ignore:
      - "examples/**"
      - "bench/**"
      - "README.*"
      - "LICENSE"
      - ".vscode"
      - ".devcontainer"
  pull_request:
    branches: [main]
    paths-ignore:
      - "examples/**"
      - "bench/**"
      - README.*

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

jobs:
  e2e:
    runs-on: self-hosted
    name: "Integration tests"
    steps:
      - name: Checkout
        uses: actions/checkout@v2
      - name: Checkout submodules
        run: git -c submodule."src/javascript/jsc/WebKit".update=none submodule update --init --recursive --depth=1 --progress -j 8
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v1
      - name: Login to Dockerhub
        uses: docker/login-action@v1
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_PASSWORD }}
      - name: Pull Base Image
        run: bash .docker/pull.sh
      - name: Build tests
        uses: docker/build-push-action@v2
        with:
          context: .
          target: test_base
          tags: bun-test:latest
          load: true
          cache-from: type=gha
          cache-to: type=gha,mode=max
          builder: ${{ steps.buildx.outputs.name }}
      - name: Run test-with-hmr
        env:
          BUN_TEST_NAME: test-with-hmr
          GITHUB_WORKSPACE: $GITHUB_WORKSPACE
          RUNNER_TEMP: ${RUNNER_TEMP}
        run: bash .docker/runner.sh
      - name: Run test-no-hmr
        env:
          BUN_TEST_NAME: test-no-hmr
          GITHUB_WORKSPACE: $GITHUB_WORKSPACE
          RUNNER_TEMP: ${RUNNER_TEMP}
        run: bash .docker/runner.sh
      - name: Run test-bun-create-next
        env:
          RUNNER_TEMP: ${RUNNER_TEMP}
          BUN_TEST_NAME: test-create-next
          GITHUB_WORKSPACE: $GITHUB_WORKSPACE
        run: bash .docker/runner.sh
      - name: Run test-bun-create-react
        env:
          RUNNER_TEMP: ${RUNNER_TEMP}
          BUN_TEST_NAME: test-create-react
          GITHUB_WORKSPACE: $GITHUB_WORKSPACE
        run: bash .docker/runner.sh
      - name: Run test-bun-run
        env:
          RUNNER_TEMP: ${RUNNER_TEMP}
          BUN_TEST_NAME: test-bun-run
          GITHUB_WORKSPACE: $GITHUB_WORKSPACE
        run: bash .docker/runner.sh
      - name: Run test-bun-install
        env:
          RUNNER_TEMP: ${RUNNER_TEMP}
          BUN_TEST_NAME: test-bun-install
          GITHUB_WORKSPACE: $GITHUB_WORKSPACE
        run: bash .docker/runner.sh
  # This is commented out because zig test does not work on the CI
  # Which sucks
  # zig-unit-tests:
  #   runs-on: self-hosted
  #   name: "Unit tests (Zig)"
  #   steps:
  #     - name: Checkout
  #       uses: actions/checkout@v2
  #     - name: Checkout submodules
  #       run: git -c submodule."src/javascript/jsc/WebKit".update=none submodule update --init --recursive --depth=1 --progress -j 8
  #     - name: Set up Docker Buildx
  #       uses: docker/setup-buildx-action@v1
  #     - name: Login to Dockerhub
  #       uses: docker/login-action@v1
  #       with:
  #         username: ${{ secrets.DOCKERHUB_USERNAME }}
  #         password: ${{ secrets.DOCKERHUB_PASSWORD }}
  #     - name: Pull Base Image
  #       run: bash .docker/pull.sh
  #     - name: Build tests
  #       uses: docker/build-push-action@v2
  #       with:
  #         context: .
  #         target: build_unit
  #         tags: bun-unit-tests:latest
  #         load: true
  #         cache-from: type=gha
  #         cache-to: type=gha,mode=max
  #         builder: ${{ steps.buildx.outputs.name }}
  #     - name: Run tests
  #       env:
  #         GITHUB_WORKSPACE: $GITHUB_WORKSPACE
  #         RUNNER_TEMP: ${RUNNER_TEMP}
  #       run: bash .docker/unit-tests.sh
  release:
    runs-on: self-hosted
    needs: ["e2e"]
    if: github.ref == 'refs/heads/main'
    steps:
      - name: Checkout
        uses: actions/checkout@v2
      - name: Checkout submodules
        run: git -c submodule."src/javascript/jsc/WebKit".update=none submodule update --init --recursive --depth=1 --progress -j 8
      - name: Login to GitHub Container Registry
        uses: docker/login-action@v1
        with:
          registry: ghcr.io
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}
      - name: Login to DockerHub
        uses: docker/login-action@v1
        with:
          username: jarredsumner
          password: ${{ secrets.DOCKERHUB_ALT }}
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v1
        with:
          install: true
      - name: Pull Base Image
        run: bash .docker/pull.sh
      - name: Build release image
        uses: docker/build-push-action@v2
        with:
          context: .
          target: release
          tags: |
            ghcr.io/jarred-sumner/bun:${{github.sha}}
            ghcr.io/jarred-sumner/bun:edge
            jarredsumner/bun:${{github.sha}}
            jarredsumner/bun:edge
          platforms: |
            linux/amd64
          labels: |
            org.opencontainers.image.title=bun
            org.opencontainers.image.description=bun is a fast bundler, transpiler, JavaScript Runtime environment and package manager for web software. The image is an Ubuntu 20.04 image with bun preinstalled into /opt/bun.
            org.opencontainers.image.vendor=bun
            org.opencontainers.image.source=https://github.com/Jarred-Sumner/bun
            org.opencontainers.image.url=https://bun.sh
          builder: ${{ steps.buildx.outputs.name }}
          push: true