Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: release from Github Actions #8820

Merged
merged 3 commits into from
Sep 30, 2024
Merged
Show file tree
Hide file tree
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
5 changes: 1 addition & 4 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -613,7 +613,4 @@ workflows:
- barretenberg-docs
- e2e-join
- cli-wallet
<<: *defaults

# Production releases.
- deploy-and-release: *defaults_deploy
<<: *defaults
238 changes: 238 additions & 0 deletions .github/workflows/publish-aztec-packages.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,238 @@
name: Publish Aztec Packages

on:
workflow_dispatch:
inputs:
tag:
type: string
description: "The tag to release"
required: true
publish:
type: boolean
description: "Whether to publish the release"
required: true

permissions:
# Necessary to upload new release artifacts
contents: write
issues: write

env:
# Add any global environment variables here
DOCKERHUB_PASSWORD: ${{ secrets.DOCKERHUB_PASSWORD }}
GIT_COMMIT: ${{ github.sha }}
DEPLOY_TAG: ${{ github.event.inputs.tag }}

jobs:
check-version:
runs-on: ubuntu-latest
steps:
- name: Check if tag is valid
id: check_tag
run: |
TAG=${{ github.event.inputs.tag }}
if [[ "$TAG" == aztec-packages-v* ]]; then
echo "Tag is valid. Proceeding with setup."
else
echo "Invalid tag format. Expected aztec-packages-v*"
exit 1
fi

setup-x86:
needs: check-version
uses: ./.github/workflows/setup-runner.yml
with:
username: ${{ github.actor }}
runner_type: builder-x86
secrets: inherit

setup-arm:
needs: check-version
uses: ./.github/workflows/setup-runner.yml
with:
username: ${{ github.actor }}
runner_type: builder-arm
secrets: inherit

build-aztec-x86:
needs: setup-x86
runs-on: ${{ github.actor }}-x86
steps:
- uses: actions/checkout@v4
with:
ref: "${{ env.GIT_COMMIT }}"
- uses: ./.github/ci-setup-action
with:
concurrency_key: build-aztec-${{ github.actor }}
dockerhub_password: "${{ env.DOCKERHUB_PASSWORD }}"
- name: Build & Push Aztec x86_64
timeout-minutes: 40
run: |
earthly-ci \
--no-output \
--push \
./yarn-project+export-aztec-arch \
--DIST_TAG=${{ env.GIT_COMMIT }} \
--ARCH=x86_64

build-aztec-arm:
needs: setup-arm
runs-on: ${{ github.actor }}-arm
steps:
- uses: actions/checkout@v4
with:
ref: "${{ env.GIT_COMMIT }}"
- uses: ./.github/ci-setup-action
with:
concurrency_key: build-aztec-${{ github.actor }}
dockerhub_password: "${{ env.DOCKERHUB_PASSWORD }}"
- name: Build & Push Aztec arm64
timeout-minutes: 60
run: |
earthly-ci \
--no-output \
--push \
./yarn-project+export-aztec-arch \
--DIST_TAG=${{ env.GIT_COMMIT }} \
--ARCH=arm64

build-nargo-x86:
needs: [setup-x86, build-aztec-x86]
runs-on: ${{ github.actor }}-x86
steps:
- uses: actions/checkout@v4
with:
ref: "${{ env.GIT_COMMIT }}"
- uses: ./.github/ci-setup-action
with:
concurrency_key: build-aztec-nargo-${{ github.actor }}
dockerhub_password: "${{ env.DOCKERHUB_PASSWORD }}"

- name: Build & push aztec nargo image
run: |
earthly-ci --no-output --push ./aztec-nargo+export-aztec-nargo --DIST_TAG=${{ env.GIT_COMMIT }} --ARCH=x86_64

build-nargo-arm:
needs: [setup-arm, build-aztec-arm]
runs-on: ${{ github.actor }}-arm
steps:
- uses: actions/checkout@v4
with:
ref: "${{ env.GIT_COMMIT }}"
- uses: ./.github/ci-setup-action
with:
concurrency_key: build-aztec-nargo-${{ github.actor }}
dockerhub_password: "${{ env.DOCKERHUB_PASSWORD }}"

- name: Build & push aztec nargo image
run: |
earthly-ci --no-output --push ./aztec-nargo+export-aztec-nargo --DIST_TAG=${{ env.GIT_COMMIT }} --ARCH=arm64

build-cli-wallet-x86:
needs: [setup-x86, build-aztec-x86]
runs-on: ${{ github.actor }}-x86
steps:
- uses: actions/checkout@v4
with:
ref: "${{ env.GIT_COMMIT }}"
- uses: ./.github/ci-setup-action
with:
concurrency_key: build-aztec-cli-wallet-${{ github.actor }}
dockerhub_password: "${{ env.DOCKERHUB_PASSWORD }}"

- name: Build & push aztec cli wallet image
run: |
earthly-ci --no-output --push ./yarn-project+export-cli-wallet --DIST_TAG=${{ env.GIT_COMMIT }} --ARCH=x86_64

build-cli-wallet-arm:
needs: [setup-arm, build-aztec-arm]
runs-on: ${{ github.actor }}-arm
steps:
- uses: actions/checkout@v4
with:
ref: "${{ env.GIT_COMMIT }}"
- uses: ./.github/ci-setup-action
with:
concurrency_key: build-aztec-cli-wallet-${{ github.actor }}
dockerhub_password: "${{ env.DOCKERHUB_PASSWORD }}"

- name: Build & push aztec cli wallet image
run: |
earthly-ci --no-output --push ./yarn-project+export-cli-wallet --DIST_TAG=${{ env.GIT_COMMIT }} --ARCH=arm64

publish-manifests:
needs:
[
build-aztec-x86,
build-aztec-arm,
build-nargo-x86,
build-nargo-arm,
build-cli-wallet-x86,
build-cli-wallet-arm,
]
runs-on: ${{ github.actor }}-x86
steps:
- uses: actions/checkout@v4
with:
ref: "${{ env.GIT_COMMIT }}"
- uses: ./.github/ci-setup-action
with:
dockerhub_password: "${{ env.DOCKERHUB_PASSWORD }}"
- name: Publish aztec manifests
run: |
VERSION=${${{ env.DEPLOY_TAG }}#aztec-packages-v}

docker pull aztecprotocol/aztec:${{ env.GIT_COMMIT }}-x86_64
docker pull aztecprotocol/aztec:${{ env.GIT_COMMIT }}-arm64
docker pull aztecprotocol/aztec-nargo:${{ env.GIT_COMMIT }}-x86_64
docker pull aztecprotocol/aztec-nargo:${{ env.GIT_COMMIT }}-arm64
docker pull aztecprotocol/cli-wallet:${{ env.GIT_COMMIT }}-x86_64
docker pull aztecprotocol/cli-wallet:${{ env.GIT_COMMIT }}-arm64

docker manifest create aztecprotocol/aztec:$VERSION \
aztecprotocol/aztec:${{ env.GIT_COMMIT }}-x86_64 \
aztecprotocol/aztec:${{ env.GIT_COMMIT }}-arm64
docker manifest create aztecprotocol/aztec:latest \
aztecprotocol/aztec:${{ env.GIT_COMMIT }}-x86_64 \
aztecprotocol/aztec:${{ env.GIT_COMMIT }}-arm64
docker manifest push aztecprotocol/aztec:$VERSION
docker manifest push aztecprotocol/aztec:latest

docker manifest create aztecprotocol/aztec-nargo:$VERSION \
aztecprotocol/aztec-nargo:${{ env.GIT_COMMIT }}-x86_64 \
aztecprotocol/aztec-nargo:${{ env.GIT_COMMIT }}-arm64
docker manifest create aztecprotocol/aztec-nargo:latest \
aztecprotocol/aztec-nargo:${{ env.GIT_COMMIT }}-x86_64 \
aztecprotocol/aztec-nargo:${{ env.GIT_COMMIT }}-arm64
docker manifest push aztecprotocol/aztec-nargo:$VERSION
docker manifest push aztecprotocol/aztec-nargo:latest

docker manifest create aztecprotocol/cli-wallet:$VERSION \
aztecprotocol/cli-wallet:${{ env.GIT_COMMIT }}-x86_64 \
aztecprotocol/cli-wallet:${{ env.GIT_COMMIT }}-arm64
docker manifest create aztecprotocol/cli-wallet:latest \
aztecprotocol/cli-wallet:${{ env.GIT_COMMIT }}-x86_64 \
aztecprotocol/cli-wallet:${{ env.GIT_COMMIT }}-arm64
docker manifest push aztecprotocol/cli-wallet:$VERSION
docker manifest push aztecprotocol/cli-wallet:latest

publish-npm:
needs: publish-manifests
runs-on: ubuntu-latest
env:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
steps:
- name: Checkout sources
uses: actions/checkout@v4
with:
ref: ${{ env.GIT_COMMIT }}

- name: Publish NPM packages
run: |
VERSION=${${{ env.DEPLOY_TAG }}#aztec-packages-v}
earthly-ci \
--no-output \
--secret NPM_TOKEN=${{ env.NPM_TOKEN }} \
./yarn-project+publish-npm \
--DIST_TAG=latest \
--VERSION=$VERSION
9 changes: 9 additions & 0 deletions .github/workflows/release-please.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,15 @@ jobs:
token: ${{ secrets.AZTEC_BOT_GITHUB_TOKEN }}
command: manifest

- name: Dispatch to publish Aztec packages workflow
uses: benc-uk/workflow-dispatch@v1
if: ${{ steps.release.outputs.tag_name }}
with:
workflow: publish-aztec-packages.yml
ref: master
token: ${{ secrets.AZTEC_BOT_GITHUB_TOKEN }}
inputs: '{ "tag": "${{ steps.release.outputs.tag_name }}", "publish": true }'

- name: Dispatch to publish BB workflow
uses: benc-uk/workflow-dispatch@v1
if: ${{ steps.release.outputs.tag_name }}
Expand Down
6 changes: 6 additions & 0 deletions yarn-project/Earthfile
Original file line number Diff line number Diff line change
Expand Up @@ -282,3 +282,9 @@ prover-client-test:
ARG test
ARG debug=""
RUN cd prover-client && DEBUG=$debug yarn test $test

publish-npm:
FROM +build
ARG DIST_TAG="latest"
ARG VERSION
RUN --secret NPM_TOKEN ./.github/scripts/publish_npm.sh $DIST_TAG $VERSION
22 changes: 12 additions & 10 deletions yarn-project/deploy_npm.sh → yarn-project/publish_npm.sh
100755 → 100644
Original file line number Diff line number Diff line change
Expand Up @@ -2,26 +2,28 @@
[ -n "${BUILD_SYSTEM_DEBUG:-}" ] && set -x # conditionally trace
set -eu

if [ -z "$COMMIT_TAG" ]; then
echo "No commit tag, not deploying to npm."
exit 0
fi

retry ecr_login
extract_repo yarn-project /usr/src project
cd project/src/yarn-project

echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >.npmrc

echo "Current directory: $(pwd)"
echo "Contents of .npmrc:"
cat .npmrc

# This is to be used with the 'canary' tag for testing, and then 'latest' for making it public
DIST_TAG=${1:-"latest"}
VERSION=$2

DRY_DEPLOY=${DRY_DEPLOY:-0}

if [ -z "$VERSION" ]; then
echo "No version provided, exiting."
exit 1
fi

function deploy_package() {
REPOSITORY=$1
cd $REPOSITORY

PACKAGE_NAME=$(jq -r '.name' package.json)
VERSION=$(extract_tag_version $REPOSITORY false)
echo "Deploying $REPOSITORY $VERSION $DIST_TAG"

# If the commit tag itself has a dist-tag (e.g. v2.1.0-testnet.123), extract the dist-tag.
Expand Down
Loading