This repository has been archived by the owner on Aug 21, 2024. It is now read-only.
build-images #2409
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
on: | |
repository_dispatch: | |
types: [ build-images ] | |
workflow_dispatch: | |
inputs: | |
buildImage: | |
description: 'Build and push Docker Image according to the environment' | |
default: 'false' | |
commitVersionTag: | |
description: 'The image tag will be retrieved from the bee version command' | |
default: 'false' | |
beeVersion: | |
description: 'The official bee image tag that the image will be built on. Default: last supported version' | |
default: 'latest' | |
beeVersionAsCommitHash: | |
description: 'The beeVersion parameter will be interpreted as a source code commit hash that the bee base image will be built on' | |
default: 'false' | |
stateCommit: | |
description: 'The images will have cheques by the traffic generation' | |
default: 'false' | |
branch: | |
description: 'Branch of this repo to build (default "master")' | |
default: master | |
required: false | |
push: | |
branches: | |
- 'master' | |
pull_request: | |
branches: | |
- '**' | |
env: | |
BEE_IMAGE_PREFIX: 'ethersphere' | |
BUILD_IMAGE: 'false' | |
COMMIT_VERSION_TAG: 'false' | |
STATE_COMMIT: 'true' | |
BEE_VERSION: '${{ github.event.client_payload.tag }}' | |
BEE_PLATFORM: 'linux/amd64,linux/arm64,linux/arm/v7' | |
jobs: | |
bee-images: | |
name: Build and publish images | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: 16 | |
registry-url: 'https://registry.npmjs.org' | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
ref: ${{ github.event.inputs.branch }} | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v2 | |
- name: Set up Docker Buildx | |
id: buildx | |
uses: docker/setup-buildx-action@v2 | |
with: | |
install: true | |
- name: Override inputs from `workflow_dispatch` | |
run: | | |
if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then | |
echo "BEE_VERSION=${{ github.event.inputs.beeVersion }}" >> $GITHUB_ENV | |
echo "BUILD_IMAGE=${{ github.event.inputs.beeVersionAsCommitHash }}" >> $GITHUB_ENV | |
echo "COMMIT_VERSION_TAG=${{ github.event.inputs.commitVersionTag }}" >> $GITHUB_ENV | |
echo "STATE_COMMIT=${{ github.event.inputs.stateCommit }}" >> $GITHUB_ENV | |
else | |
echo "BEE_VERSION=${BEE_VERSION/v}" >> $GITHUB_ENV | |
fi | |
- name: Auth to Docker Hub | |
if: ${{ github.event_name == 'repository_dispatch' || (github.event.inputs.buildImage == 'true' && success()) }} | |
run: | | |
echo "PUSH_IMAGES=1" >> $GITHUB_ENV | |
echo "${{ secrets.DOCKERHUB_PASSWORD }}" | docker login -u ${{secrets.DOCKERHUB_USERNAME}} --password-stdin | |
- uses: actions/cache@v3 | |
id: cache-npm | |
with: | |
path: generator/node_modules | |
key: ${{ runner.os }}-${{ hashFiles('generator/package-lock.json') }} | |
- name: Install npm deps | |
if: steps.cache-npm.outputs.cache-hit != 'true' | |
run: cd ./generator && npm ci | |
- name: Build images | |
id: build | |
run: | | |
cd ./generator | |
BUILD_PARAMS="" | |
if [ $BUILD_IMAGE == 'true' ] ; then | |
BUILD_PARAMS+=" --build-base-bee --base-bee-commit-hash=$BEE_VERSION" | |
fi | |
if [ $STATE_COMMIT == 'true' ] ; then | |
BUILD_PARAMS+=" --gen-traffic" | |
fi | |
npm run build:env -- $BUILD_PARAMS | |
- name: Update bee version in package.json | |
uses: jossef/action-set-json-field@v2 | |
if: ${{ github.event_name == 'repository_dispatch' && github.event.client_payload.tag != 'latest' }} | |
with: | |
file: package.json | |
field: engines.bee | |
value: ${{ env.BEE_VERSION }} | |
- name: Add trailing new-line to package.json | |
if: ${{ github.event_name == 'repository_dispatch' && github.event.client_payload.tag != 'latest' }} | |
run: printf "\n" >> package.json | |
- name: Create/update PR | |
if: ${{ github.event_name == 'repository_dispatch' && github.event.client_payload.tag != 'latest' }} | |
uses: gr2m/create-or-update-pull-request-action@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.REPO_GHA_PAT }} | |
with: | |
title: "chore: update to bee ${{ env.BEE_VERSION }}" | |
body: "Updated Bee version ${{ env.BEE_VERSION }}" | |
branch: "bee-${{ env.BEE_VERSION }}" | |
commit-message: "chore: update to new bee" | |
author: "bee-worker <[email protected]>" | |
- name: Trigger Bee-js PR creation | |
if: ${{ github.event_name == 'repository_dispatch' && github.event.client_payload.tag != 'latest' }} | |
uses: peter-evans/repository-dispatch@v2 | |
with: | |
token: ${{ secrets.REPO_GHA_PAT }} | |
repository: ethersphere/bee-js | |
event-type: update-bee | |
client-payload: '{"beeVersion": "${{ steps.build.outputs.full-version }}", "apiVersion": "${{ steps.build.outputs.api-version }}", "debugApiVersion": "${{ steps.build.outputs.debug-api-version }}"}' |