aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/bun-release-canary.yml166
-rw-r--r--.github/workflows/bun-release.yml216
-rw-r--r--dockerhub/debian-slim/Dockerfile (renamed from dockerhub/slim/Dockerfile)0
-rwxr-xr-xdockerhub/debian-slim/docker-entrypoint.sh (renamed from dockerhub/slim/docker-entrypoint.sh)0
4 files changed, 88 insertions, 294 deletions
diff --git a/.github/workflows/bun-release-canary.yml b/.github/workflows/bun-release-canary.yml
deleted file mode 100644
index d0349af2a..000000000
--- a/.github/workflows/bun-release-canary.yml
+++ /dev/null
@@ -1,166 +0,0 @@
-name: bun-release-canary
-concurrency: release-canary
-on:
- schedule:
- - cron: "0 14 * * *" # every day at 6am PST
- workflow_dispatch:
- inputs:
- use-docker:
- description: Should Docker images be released?
- type: boolean
- default: false
- use-npm:
- description: Should npm packages be published?
- type: boolean
- default: false
- use-s3:
- description: Should binaries be uploaded to S3?
- type: boolean
- default: false
-jobs:
- sign:
- name: Sign Release
- runs-on: ubuntu-latest
- if: ${{ github.repository_owner == 'oven-sh' }}
- permissions:
- contents: write
- 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.event_name != 'workflow_dispatch' || github.event.inputs.use-npm == 'true' }}
- permissions:
- contents: read
- 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.event_name != 'workflow_dispatch' || github.event.inputs.use-docker == 'true' }}
- permissions:
- contents: read
- strategy:
- fail-fast: false
- 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: |
- 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.event_name != 'workflow_dispatch' || github.event.inputs.use-s3 == 'true' }}
- permissions:
- contents: read
- 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
diff --git a/.github/workflows/bun-release.yml b/.github/workflows/bun-release.yml
index bf89ea243..25c29a62c 100644
--- a/.github/workflows/bun-release.yml
+++ b/.github/workflows/bun-release.yml
@@ -1,54 +1,66 @@
name: bun-release
concurrency: release
+env:
+ BUN_VERSION: ${{ github.event.inputs.tag || github.event.release.tag_name || 'canary' }}
on:
release:
types:
- published
+ schedule:
+ - cron: "0 14 * * *" # every day at 6am PST
workflow_dispatch:
inputs:
tag:
type: string
- description: The tag to publish
+ description: What is the release tag? (e.g. "1.0.2", "canary")
required: true
+ use-docker:
+ description: Should Docker images be released?
+ type: boolean
+ default: false
+ use-npm:
+ description: Should npm packages be published?
+ type: boolean
+ default: false
+ use-homebrew:
+ description: Should binaries be released to Homebrew?
+ type: boolean
+ default: false
+ use-s3:
+ description: Should binaries be uploaded to S3?
+ type: boolean
+ default: false
+ use-types:
+ description: Should types be released to npm?
+ type: boolean
+ default: false
jobs:
sign:
name: Sign Release
runs-on: ubuntu-latest
- if: github.repository_owner == 'oven-sh'
+ if: ${{ github.repository_owner == 'oven-sh' }}
permissions:
contents: write
defaults:
run:
working-directory: packages/bun-release
steps:
- - id: checkout
- name: Checkout
+ - name: Checkout
uses: actions/checkout@v3
- - id: setup-env
- name: Setup Environment
- run: |
- TAG="${{ github.event.inputs.tag }}"
- TAG="${TAG:-"${{ github.event.release.tag_name }}"}"
- echo "Setup tag: ${TAG}"
- echo "TAG=${TAG}" >> ${GITHUB_ENV}
- - id: setup-gpg
- name: 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
+ - name: Setup Bun
uses: oven-sh/setup-bun@v1
with:
- bun-version: canary
- - id: bun-install
- name: Install Dependencies
+ bun-version: latest
+ - name: Install Dependencies
run: bun install
- - id: bun-run
- name: Sign Release
+ - name: Sign Release
run: |
- echo "$GPG_PASSPHRASE" | bun upload-assets -- "${{ env.TAG }}"
+ echo "$GPG_PASSPHRASE" | bun upload-assets -- "${BUN_VERSION}"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
@@ -56,34 +68,23 @@ jobs:
name: Release to NPM
runs-on: ubuntu-latest
needs: sign
- if: github.repository_owner == 'oven-sh'
+ if: ${{ github.event_name != 'workflow_dispatch' || github.event.inputs.use-npm == 'true' }}
permissions:
contents: read
defaults:
run:
working-directory: packages/bun-release
steps:
- - id: checkout
- name: Checkout
+ - name: Checkout
uses: actions/checkout@v3
- - id: setup-env
- name: Setup Environment
- run: |
- TAG="${{ github.event.inputs.tag }}"
- TAG="${TAG:-"${{ github.event.release.tag_name }}"}"
- echo "Setup tag: ${TAG}"
- echo "TAG=${TAG}" >> ${GITHUB_ENV}
- - id: setup-bun
- name: Setup Bun
+ - name: Setup Bun
uses: oven-sh/setup-bun@v1
with:
- bun-version: canary
- - id: bun-install
- name: Install Dependencies
+ bun-version: latest
+ - name: Install Dependencies
run: bun install
- - id: bun-run
- name: Release
- run: bun upload-npm -- "${{ env.TAG }}" publish
+ - name: Release
+ run: bun upload-npm -- "${{ env.BUN_VERSION }}" publish
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
@@ -91,43 +92,28 @@ jobs:
name: Release types to NPM
runs-on: ubuntu-latest
needs: sign
- if: github.repository_owner == 'oven-sh'
+ if: ${{ github.event_name != 'workflow_dispatch' || github.event.inputs.use-types == 'true' }}
permissions:
contents: read
defaults:
run:
working-directory: packages/bun-types
steps:
- - id: checkout
- name: Checkout
+ - name: Checkout
uses: actions/checkout@v3
- - id: setup-env
- name: Setup Environment
- run: |
- TAG="${{ github.event.inputs.tag }}"
- TAG="${TAG:-"${{ github.event.release.tag_name }}"}"
- echo "Setup tag: ${TAG}"
- echo "TAG=${TAG}" >> ${GITHUB_ENV}
- - id: setup-node
- name: Setup Node.js
+ - name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: latest
- - id: setup-bun
- name: Setup Bun
+ - name: Setup Bun
uses: oven-sh/setup-bun@v1
with:
- bun-version: canary
- - id: bun-install
- name: Install Dependencies
+ bun-version: latest
+ - name: Install Dependencies
run: bun install
- - id: bun-run
- name: Build
+ - name: Build
run: bun run build
- env:
- BUN_VERSION: ${{ env.TAG }}
- - id: npm-publish
- name: Release
+ - name: Release
uses: JS-DevTools/npm-publish@v1
with:
package: packages/bun-types/dist/package.json
@@ -136,30 +122,28 @@ jobs:
name: Release to Dockerhub (${{ matrix.variant }})
runs-on: ubuntu-latest
needs: sign
- if: github.repository_owner == 'oven-sh'
+ if: ${{ github.event_name != 'workflow_dispatch' || github.event.inputs.use-docker == 'true' }}
permissions:
contents: read
strategy:
fail-fast: false
matrix:
- variant:
- - debian
- - slim
- - alpine
- - distroless
+ include:
+ - variant: debian
+ suffix: ''
+ - variant: debian
+ suffix: -debian
+ - variant: slim
+ suffix: -slim
+ dir: debian-slim
+ - variant: alpine
+ suffix: -alpine
+ - variant: distroless
+ suffix: -distroless
steps:
- - id: checkout
- name: Checkout
+ - name: Checkout
uses: actions/checkout@v3
- - id: environment
- name: Setup Environment
- run: |
- TAG="${{ github.event.inputs.tag }}"
- TAG="${TAG:-"${{ github.event.release.tag_name }}"}"
- echo "Setup tag: ${TAG}"
- echo "TAG=${TAG}" >> ${GITHUB_ENV}
- - id: qemu
- name: Setup Docker QEMU
+ - name: Setup Docker emulator
uses: docker/setup-qemu-action@v2
- id: buildx
name: Setup Docker buildx
@@ -172,71 +156,58 @@ jobs:
with:
images: oven/bun
flavor: |
- latest=${{ matrix.variant == 'debian' }}
- suffix=-${{ matrix.variant }}
+ latest=${{ matrix.suffix == '' && github.event.release.tag_name == env.BUN_VERSION }}
+ suffix=${{ matrix.suffix }}
tags: |
- type=match,pattern=(bun-v)?(\d+.\d+.\d+),group=2,value=${{ env.TAG }}
- type=match,pattern=(bun-v)?(\d+.\d+),group=2,value=${{ env.TAG }}
- type=match,pattern=(bun-v)?(\d+),group=2,value=${{ env.TAG }}
- - id: login
- name: Login to Docker
+ type=match,pattern=(bun-v)?(canary|\d+.\d+.\d+),group=2,value=${{ env.BUN_VERSION }}
+ type=match,pattern=(bun-v)?(canary|\d+.\d+),group=2,value=${{ env.BUN_VERSION }}
+ type=match,pattern=(bun-v)?(canary|\d+),group=2,value=${{ env.BUN_VERSION }}
+ - name: Login to Docker
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- - id: push
- name: Push to Docker
+ - name: Push to Docker
uses: docker/build-push-action@v3
with:
- context: ./dockerhub/${{ matrix.variant }}
+ context: ./dockerhub/${{ matrix.dir || 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=${{ env.TAG }}
+ BUN_VERSION=${{ env.BUN_VERSION }}
homebrew:
name: Release to Homebrew
runs-on: ubuntu-latest
needs: sign
- if: github.repository_owner == 'oven-sh'
permissions:
contents: read
+ if: ${{ github.event_name != 'schedule' || github.event.inputs.use-homebrew == 'true' }}
steps:
- - id: checkout
- name: Checkout
+ - name: Checkout
uses: actions/checkout@v3
with:
repository: oven-sh/homebrew-bun
token: ${{ secrets.ROBOBUN_TOKEN }}
- - id: setup-gpg
+ - id: 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-env
- name: Setup Environment
- run: |
- TAG="${{ github.event.inputs.tag }}"
- TAG="${TAG:-"${{ github.event.release.tag_name }}"}"
- echo "Setup tag: ${TAG}"
- echo "TAG=${TAG}" >> ${GITHUB_ENV}
- - id: setup-ruby
- name: Setup Ruby
+ - name: Setup Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: "2.6"
- - id: update-tap
- name: Update Tap
- run: ruby scripts/release.rb "${{ env.TAG }}"
- - id: commit-tap
- name: Commit Tap
+ - name: Update Tap
+ run: ruby scripts/release.rb "${{ env.BUN_VERSION }}"
+ - name: Commit Tap
uses: stefanzweifel/git-auto-commit-action@v4
with:
- commit_options: --gpg-sign=${{ steps.setup-gpg.outputs.keyid }}
- commit_message: Release ${{ env.TAG }}
+ commit_options: --gpg-sign=${{ steps.gpg.outputs.keyid }}
+ commit_message: Release ${{ env.BUN_VERSION }}
commit_user_name: robobun
commit_user_email: robobun@oven.sh
commit_author: robobun <robobun@oven.sh>
@@ -244,34 +215,23 @@ jobs:
name: Upload to S3
runs-on: ubuntu-latest
needs: sign
- if: github.repository_owner == 'oven-sh'
+ if: ${{ github.event_name != 'workflow_dispatch' || github.event.inputs.use-s3 == 'true' }}
permissions:
contents: read
defaults:
run:
working-directory: packages/bun-release
steps:
- - id: checkout
- name: Checkout
+ - name: Checkout
uses: actions/checkout@v3
- - id: setup-env
- name: Setup Environment
- run: |
- TAG="${{ github.event.inputs.tag }}"
- TAG="${TAG:-"${{ github.event.release.tag_name }}"}"
- echo "Setup tag: ${TAG}"
- echo "TAG=${TAG}" >> ${GITHUB_ENV}
- - id: setup-bun
- name: Setup Bun
+ - name: Setup Bun
uses: oven-sh/setup-bun@v1
with:
- bun-version: canary
- - id: bun-install
- name: Install Dependencies
+ bun-version: latest
+ - name: Install Dependencies
run: bun install
- - id: bun-run
- name: Release
- run: bun upload-s3 -- "${{ env.TAG }}"
+ - name: Release
+ run: bun upload-s3 -- "${{ env.BUN_VERSION }}"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
diff --git a/dockerhub/slim/Dockerfile b/dockerhub/debian-slim/Dockerfile
index 1b99f80dc..1b99f80dc 100644
--- a/dockerhub/slim/Dockerfile
+++ b/dockerhub/debian-slim/Dockerfile
diff --git a/dockerhub/slim/docker-entrypoint.sh b/dockerhub/debian-slim/docker-entrypoint.sh
index a0e45cbb5..a0e45cbb5 100755
--- a/dockerhub/slim/docker-entrypoint.sh
+++ b/dockerhub/debian-slim/docker-entrypoint.sh