aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows/bun-release-canary.yml
blob: a814ece4e4c4e3c2b0ca87eca51024a0502c4f3a (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
name: bun-release-canary
concurrency: release-canary
on:
  schedule:
    - cron: "0 14 * * *" # every day at 6am PST
  workflow_dispatch:
jobs:
  sign:
    name: Sign Release
    runs-on: ubuntu-latest
    if: github.repository_owner == 'oven-sh'
    defaults:
      run:
        working-directory: packages/bun-release
    steps:
      - id: checkout
        name: Checkout
        uses: actions/checkout@v3
      - id: setup-gpg
        name: Setup GPG
        uses: crazy-max/ghaction-import-gpg@v5
        with:
          gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
          passphrase: ${{ secrets.GPG_PASSPHRASE }}
      - id: setup-bun
        name: Setup Bun
        uses: oven-sh/setup-bun@v1
        with:
          bun-version: canary
      - id: bun-install
        name: Install Dependencies
        run: bun install
      - id: bun-run
        name: Sign Release
        run: |
          echo "$GPG_PASSPHRASE" | bun upload-assets -- "canary"
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
  npm:
    name: Release to NPM
    runs-on: ubuntu-latest
    needs: sign
    if: github.repository_owner == 'oven-sh'
    defaults:
      run:
        working-directory: packages/bun-release
    steps:
      - id: checkout
        name: Checkout
        uses: actions/checkout@v3
      - id: setup-bun
        name: Setup Bun
        uses: oven-sh/setup-bun@v1
        with:
          bun-version: canary
      - id: bun-install
        name: Install Dependencies
        run: bun install
      - id: bun-run
        name: Release
        run: bun upload-npm -- canary publish
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
  docker:
    name: Release to Dockerhub (${{ matrix.variant }})
    runs-on: ubuntu-latest
    needs: sign
    if: github.repository_owner == 'oven-sh'
    strategy:
      matrix:
        variant:
          - debian
          - slim
          - alpine
          - distroless
    steps:
      - id: checkout
        name: Checkout
        uses: actions/checkout@v3
      - id: qemu
        name: Setup Docker QEMU
        uses: docker/setup-qemu-action@v2
      - id: buildx
        name: Setup Docker buildx
        uses: docker/setup-buildx-action@v2
        with:
          platforms: linux/amd64,linux/arm64
      - id: metadata
        name: Setup Docker metadata
        uses: docker/metadata-action@v4
        with:
          images: oven/bun
          flavor: |
            latest=${{ matrix.variant == 'debian' }}
            suffix=${{ matrix.variant }}
          tags: canary
      - id: login
        name: Login to Docker
        uses: docker/login-action@v2
        with:
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_PASSWORD }}
      - id: push
        name: Push to Docker
        uses: docker/build-push-action@v3
        with:
          context: ./dockerhub/${{ matrix.variant }}
          platforms: linux/amd64,linux/arm64
          builder: ${{ steps.buildx.outputs.name }}
          push: true
          tags: ${{ steps.metadata.outputs.tags }}
          labels: ${{ steps.metadata.outputs.labels }}
          build-args: |
            BUN_VERSION=canary
  s3:
    name: Upload to S3
    runs-on: ubuntu-latest
    needs: sign
    if: github.repository_owner == 'oven-sh'
    defaults:
      run:
        working-directory: packages/bun-release
    steps:
      - id: checkout
        name: Checkout
        uses: actions/checkout@v3
      - id: setup-bun
        name: Setup Bun
        uses: oven-sh/setup-bun@v1
        with:
          bun-version: canary
      - id: bun-install
        name: Install Dependencies
        run: bun install
      - id: bun-run
        name: Release
        run: bun upload-s3 -- canary
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
          AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY}}
          AWS_ENDPOINT: ${{ secrets.AWS_ENDPOINT }}
          AWS_BUCKET: bun