2021-02-10 19:37:46 +01:00
name : "Releases"
2021-02-01 15:10:21 +01:00
on :
2022-03-25 16:24:21 +01:00
workflow_dispatch :
2021-02-01 15:10:21 +01:00
push :
tags :
- 'v*'
2024-01-30 13:24:45 +01:00
env :
REGISTRY : ghcr.io
REGISTRY_USER : ${{ github.actor }}
REGISTRY_PASSWORD : ${{ github.token }}
IMAGE_NAME : ${{ github.repository }}
2021-02-01 15:10:21 +01:00
jobs :
main :
runs-on : ubuntu-latest
steps :
2022-10-06 14:58:01 +02:00
- uses : actions/checkout@v3
2021-02-01 15:10:21 +01:00
- name : Set node version
2022-10-06 14:58:01 +02:00
uses : actions/setup-node@v3
2021-02-01 15:10:21 +01:00
with :
2022-09-09 22:22:55 +02:00
node-version : '18.x'
2024-01-30 13:24:45 +01:00
- name : Install qemu dependency
run : |
sudo apt-get update
sudo apt-get install -y qemu-user-static
2021-02-01 15:10:21 +01:00
- name : Install
run : |
2024-01-30 13:24:45 +01:00
npm ci
2021-02-12 14:51:51 +01:00
npm run setheapsize
2021-02-01 15:10:21 +01:00
- name : Lint
run : npx grunt lint
- name : Unit Tests
run : |
npm test
2022-03-28 16:42:11 +02:00
npm run testnodeconsumer
2021-02-01 15:10:21 +01:00
- name : Production Build
if : success()
run : npx grunt prod
2023-03-09 15:01:21 +01:00
- name : UI Tests
if : success()
run : |
sudo apt-get install xvfb
xvfb-run --server-args="-screen 0 1200x800x24" npx grunt testui
2021-02-01 15:10:21 +01:00
2024-01-30 13:24:45 +01:00
- name : Image Metadata
if : success()
id : image-metadata
uses : docker/metadata-action@v4
with :
images : ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags : |
type=semver,pattern={{major}}
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{version}}
- name : Production Image Build
if : success()
id : build-image
uses : redhat-actions/buildah-build@v2
with :
image : ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags : ${{ steps.image-metadata.outputs.tags }}
labels : ${{ steps.image-metadata.outputs.labels }}
containerfiles : ./Containerfile
platforms : linux/arm64, linux/amd64
oci : true
2021-02-01 15:10:21 +01:00
- name : Upload Release Assets
if : success()
id : upload-release-assets
uses : svenstaro/upload-release-action@v2
with :
repo_token : ${{ secrets.GITHUB_TOKEN }}
file : build/prod/*.zip
tag : ${{ github.ref }}
overwrite : true
file_glob : true
2021-02-03 20:07:39 +01:00
body : "See the [CHANGELOG](https://github.com/gchq/CyberChef/blob/master/CHANGELOG.md) and [commit messages](https://github.com/gchq/CyberChef/commits/master) for details."
2021-02-01 15:10:21 +01:00
- name : Publish to NPM
if : success()
uses : JS-DevTools/npm-publish@v1
with :
token : ${{ secrets.NPM_TOKEN }}
2024-01-30 13:24:45 +01:00
- name : Publish to GHCR
if : success()
uses : redhat-actions/push-to-registry@v2
with :
image : ${{ steps.build-image.outputs.image }}
tags : ${{ steps.build-image.outputs.tags }}
registry : ${{ env.REGISTRY }}
username : ${{ env.REGISTRY_USER }}
password : ${{ env.REGISTRY_PASSWORD }}