Skip to content

Publish new release to NPM and Docker hub #106

Publish new release to NPM and Docker hub

Publish new release to NPM and Docker hub #106

name: Publish new release to NPM and Docker hub
on:
workflow_dispatch:
inputs:
version:
required: true
type: string
description: Version tag (without leading 'v')
jobs:
checks:
name: Pre-flight-checks
runs-on: ubuntu-latest
timeout-minutes: 2
steps:
- uses: actions/checkout@v3
with:
ref: v${{ inputs.version }}
- name: Check version alignments
run: test "$(jq -r .version package.json)" == "${{ inputs.version }}"
sth-image:
needs: [ checks ]
uses: ./.github/workflows/build-docker-sth.yml
with:
git-revision: v${{ inputs.version }}
runner-image:
needs: [ checks ]
uses: ./.github/workflows/build-docker-runner-node.yml
with:
git-revision: v${{ inputs.version }}
runner-py-image:
needs: [ checks ]
uses: ./.github/workflows/build-docker-runner-python.yml
with:
git-revision: v${{ inputs.version }}
pre-runner-image:
needs: [ checks ]
uses: ./.github/workflows/build-docker-prerunner.yml
with:
git-revision: v${{ inputs.version }}
docker-hub-publish:
name: Push images to Docker Hub
needs: [sth-image, runner-image, runner-py-image, pre-runner-image]
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@v3
with:
ref: v${{ inputs.version }}
- name: Get release version number & commit
run: |
echo "COMMIT_ID=$(git rev-parse HEAD)" >> $GITHUB_ENV
echo "RELEASE_VERSION=$(jq -r .version package.json)" >> $GITHUB_ENV
- name: Download docker images
uses: actions/download-artifact@v3
with:
path: docker-images
- name: Unzip docker images
run: |
sudo apt-get install pigz -y
pigz -d docker-images/*/*-docker-image.tar.gz
- name: Load docker images
run: ls -1 docker-images/*/*-docker-image.tar | while read line; do docker load -i $line; done
- name: Tag images with release version
run: |
docker tag scramjetorg/sth:$COMMIT_ID scramjetorg/sth:latest
docker tag scramjetorg/sth:$COMMIT_ID scramjetorg/sth:$RELEASE_VERSION
docker tag scramjetorg/runner:$COMMIT_ID scramjetorg/runner:latest
docker tag scramjetorg/runner:$COMMIT_ID scramjetorg/runner:$RELEASE_VERSION
docker tag scramjetorg/runner-py:$COMMIT_ID scramjetorg/runner-py:latest
docker tag scramjetorg/runner-py:$COMMIT_ID scramjetorg/runner-py:$RELEASE_VERSION
docker tag scramjetorg/pre-runner:$COMMIT_ID scramjetorg/pre-runner:latest
docker tag scramjetorg/pre-runner:$COMMIT_ID scramjetorg/pre-runner:$RELEASE_VERSION
- name: List docker images for inspection
run: docker image ls
- name: Login to Docker Hub
uses: docker/login-action@v2
with:
username: scramjetci
password: ${{ secrets.DOCKER_HUB_TOKEN }}
- name: Push images to Docker Hub
run: |
docker push scramjetorg/sth:latest
docker push scramjetorg/sth:$RELEASE_VERSION
docker push scramjetorg/runner:latest
docker push scramjetorg/runner:$RELEASE_VERSION
docker push scramjetorg/runner-py:latest
docker push scramjetorg/runner-py:$RELEASE_VERSION
docker push scramjetorg/pre-runner:latest
docker push scramjetorg/pre-runner:$RELEASE_VERSION
npm-publish:
name: Publish packages to NPM
needs: [docker-hub-publish]
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@v3
with:
ref: v${{ inputs.version }}
- name: Setup Nodejs 18
uses: actions/setup-node@v3
with:
cache: 'yarn'
node-version: 18
- name: Configure npm registry access
run: |
echo //registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }} > ~/.npmrc
echo always-auth=true >> ~/.npmrc
echo @scramjet:registry=https://registry.npmjs.org/ >> ~/.npmrc
chmod 600 ~/.npmrc
- name: Install dependencies
run: yarn install --ignore-engines --frozen-lockfile --prefer-offline --silent
- name: Update saved git hash for marking build version
run: yarn savehash
- name: Build packages in publication mode
run: yarn pack:pub
- name: Publish packages to NPM
run: ./scripts/publish-order-dist-packages.js -s -p