mirror of
https://github.com/KeygraphHQ/juice-shop.git
synced 2026-11-09 17:20:22 -10:00
96 lines
3.5 KiB
YAML
96 lines
3.5 KiB
YAML
name: "Release Pipeline"
|
|
on:
|
|
push:
|
|
tags:
|
|
- v*
|
|
env:
|
|
CYCLONEDX_NPM_VERSION: '^2.0.0||^3.0.0'
|
|
jobs:
|
|
package:
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
os: [ubuntu-latest, windows-latest, macos-latest]
|
|
node-version: [20, 22, 24]
|
|
fail-fast: false
|
|
steps:
|
|
- name: "Check out Git repository"
|
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 #v4.2.2
|
|
- name: "Use Node.js ${{ matrix.node-version }}"
|
|
uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af #v4.1.0
|
|
with:
|
|
node-version: ${{ matrix.node-version }}
|
|
- name: "Install CLI tools"
|
|
run: |
|
|
npm install -g @cyclonedx/cyclonedx-npm@$CYCLONEDX_NPM_VERSION
|
|
npm install -g grunt-cli
|
|
- name: "Set packaging options for Grunt"
|
|
run: |
|
|
if [ "$RUNNER_OS" == "Windows" ]; then
|
|
echo "PCKG_OS_NAME=win32" >> $GITHUB_ENV
|
|
elif [ "$RUNNER_OS" == "macOS" ]; then
|
|
echo "PCKG_OS_NAME=darwin" >> $GITHUB_ENV
|
|
else
|
|
echo "PCKG_OS_NAME=linux" >> $GITHUB_ENV
|
|
fi
|
|
echo "PCKG_CPU_ARCH=x64" >> $GITHUB_ENV
|
|
echo "PCKG_NODE_VERSION=${{ matrix.node-version }}" >> $GITHUB_ENV
|
|
shell: bash
|
|
- name: "Package application"
|
|
run: |
|
|
npm install --production
|
|
npm run package:ci
|
|
- name: 'Attach packaged archive to tag release'
|
|
uses: softprops/action-gh-release@da05d552573ad5aba039eaac05058a918a7bf631 #v2.2.2
|
|
with:
|
|
draft: true
|
|
files: dist/*
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
docker:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: "Check out Git repository"
|
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 #v4.2.2
|
|
- name: "Set up QEMU"
|
|
uses: docker/setup-qemu-action@49b3bc8e6bdd4a60e6116a5414239cba5943d3cf #v3.2.0
|
|
- name: "Set up Docker Buildx"
|
|
uses: docker/setup-buildx-action@6524bf65af31da8d45b59e8c27de4bd072b392f5 #v3.8.0
|
|
- name: "Login to DockerHub"
|
|
uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 #v3.3.0
|
|
with:
|
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
- name: "Get tag name"
|
|
id: tag
|
|
uses: dawidd6/action-get-tag@727a6f0a561be04e09013531e73a3983a65e3479 #v1.1.0 TODO Action is archived and should be replaced eventually
|
|
- name: "Set labels for ${{ github.ref }}"
|
|
run: |
|
|
echo "VCS_REF=`git rev-parse --short HEAD`" >> $GITHUB_ENV
|
|
echo "BUILD_DATE=`date -u +”%Y-%m-%dT%H:%M:%SZ”`" >> $GITHUB_ENV
|
|
- name: "Build and push for AMD64 and ARM64 processors"
|
|
uses: docker/build-push-action@48aba3b46d1b1fec4febb7c5d0c644b249a11355 #v6.1.0
|
|
with:
|
|
context: .
|
|
file: ./Dockerfile
|
|
platforms: linux/amd64,linux/arm64
|
|
push: true
|
|
tags: |
|
|
bkimminich/juice-shop:${{ steps.tag.outputs.tag }}
|
|
build-args: |
|
|
VCS_REF=${{ env.VCS_REF }}
|
|
BUILD_DATE=${{ env.BUILD_DATE }}
|
|
CYCLONEDX_NPM_VERSION=${{ env.CYCLONEDX_NPM_VERSION }}
|
|
notify-slack:
|
|
if: always()
|
|
needs:
|
|
- package
|
|
- docker
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: "Slack workflow notification"
|
|
uses: Gamesight/slack-workflow-status@68bf00d0dbdbcb206c278399aa1ef6c14f74347a #v1.3.0
|
|
with:
|
|
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
|
slack_webhook_url: ${{ secrets.SLACK_WEBHOOK_URL }}
|