Skip to content
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
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ project settings CircleCI. Then include the following in your `.circleci/config.
version: 2.1
setup: true
orbs:
build: mojaloop/build@1.1.17
build: mojaloop/build@1.1.20
workflows:
setup:
jobs:
Expand All @@ -42,6 +42,7 @@ workflows:
# grype_scan_resource_class: medium
# release_resource_class: medium
# github_release_resource_class: medium
# github_prerelease_resource_class: medium
# publish_docker_resource_class: medium
# publish_npm_resource_class: medium
# publish_docker_snapshot_resource_class: medium
Expand Down
2 changes: 1 addition & 1 deletion src/examples/build_and_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ usage:
version: 2.1
setup: true
orbs:
build: mojaloop/build@1.1.17
build: mojaloop/build@1.1.20
workflows:
setup:
jobs:
Expand Down
57 changes: 57 additions & 0 deletions src/jobs/github_prerelease.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
description: |
This job creates a Github pre-release for the project when a prerelease tag
(e.g. v1.2.3-snapshot.1, v1.2.3-hotfix.1, v1.2.3-perf.1) is pushed.
executor:
name: machine
resource_class: << parameters.resource_class >>
shell: "/bin/bash -eo pipefail"
environment:
MAIN_BRANCH_NAME: main
parameters:
resource_class:
type: enum
enum: ["small", "medium", "medium+", "large", "xlarge", "2xlarge", "2xlarge+"]
default: medium
steps:
- run:
name: Install git
command: |
sudo apt-get update && sudo apt-get install -y git
- gh/install
- checkout
- attach_workspace:
at: /tmp
- run:
name: Format the changelog into the github release body and get release tag
command: |
git diff --no-indent-heuristic HEAD~1 HEAD CHANGELOG.md 2>/dev/null | sed -n '/^+[^+]/ s/^+//p' > /tmp/changes || true
# changelog updates are skipped for snapshots, so the diff is usually empty
if [ ! -s /tmp/changes ]; then
echo "Prerelease" > /tmp/changes
fi
echo 'export RELEASE_CHANGES=`cat /tmp/changes`' >> $BASH_ENV
echo 'export RELEASE_TAG=`cat package.json | jq -r .version`' >> $BASH_ENV
- run:
name: Check the release changes
command: |
echo "Changes are: ${RELEASE_CHANGES}"
- run:
name: Create Pre-release
command: |
gh release create "v${RELEASE_TAG}" --prerelease --repo ${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME} --title "v${RELEASE_TAG} Release" --draft=false --notes "${RELEASE_CHANGES}" ./CHANGELOG.md
- run:
name: Upload Release Assets
command: |
RELEASE_ASSETS_DIR="/tmp/release-assets"
if [ -d "$RELEASE_ASSETS_DIR" ] && [ "$(ls -A $RELEASE_ASSETS_DIR 2>/dev/null)" ]; then
echo "Found release assets in workspace:"
ls -la "$RELEASE_ASSETS_DIR"
for asset in "$RELEASE_ASSETS_DIR"/*; do
if [ -f "$asset" ]; then
echo "Uploading: $(basename "$asset")"
gh release upload "v${RELEASE_TAG}" "$asset" --repo ${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}
fi
done
else
echo "No release assets found in workspace, skipping..."
fi
5 changes: 5 additions & 0 deletions src/jobs/workflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,10 @@ parameters:
type: enum
enum: ["small", "medium", "medium+", "large", "xlarge", "2xlarge", "2xlarge+"]
default: medium
github_prerelease_resource_class:
type: enum
enum: ["small", "medium", "medium+", "large", "xlarge", "2xlarge", "2xlarge+"]
default: medium
publish_docker_resource_class:
type: enum
enum: ["small", "medium", "medium+", "large", "xlarge", "2xlarge", "2xlarge+"]
Expand Down Expand Up @@ -115,6 +119,7 @@ steps:
"grype_scan_resource_class":"<< parameters.grype_scan_resource_class>>",
"release_resource_class":"<< parameters.release_resource_class>>",
"github_release_resource_class":"<< parameters.github_release_resource_class>>",
"github_prerelease_resource_class":"<< parameters.github_prerelease_resource_class>>",
"publish_docker_resource_class":"<< parameters.publish_docker_resource_class>>",
"publish_npm_resource_class":"<< parameters.publish_npm_resource_class>>",
"publish_docker_snapshot_resource_class":"<< parameters.publish_docker_snapshot_resource_class>>",
Expand Down
17 changes: 16 additions & 1 deletion src/workflows/build_and_test.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
version: 2.1
orbs:
build: mojaloop/build@1.1.17
build: mojaloop/build@1.1.20
parameters:
git_tag:
type: string
Expand Down Expand Up @@ -81,6 +81,10 @@ parameters:
type: enum
enum: ["small", "medium", "medium+", "large", "xlarge", "2xlarge", "2xlarge+"]
default: medium
github_prerelease_resource_class:
type: enum
enum: ["small", "medium", "medium+", "large", "xlarge", "2xlarge", "2xlarge+"]
default: medium
publish_docker_resource_class:
type: enum
enum: ["small", "medium", "medium+", "large", "xlarge", "2xlarge", "2xlarge+"]
Expand Down Expand Up @@ -276,6 +280,17 @@ workflows:
resource_class: << pipeline.parameters.publish_npm_snapshot_resource_class >>
yarn_lock: << pipeline.parameters.yarn_lock >>
slack: << pipeline.parameters.slack >>
- build/github_prerelease:
name: GitHub prerelease
resource_class: << pipeline.parameters.github_prerelease_resource_class >>
context: org-global
filters:
branches:
ignore:
- /.*/
tags:
only: /v\d+(\.\d+){2}-(snapshot|hotfix|perf)\.\d+/
requires: *tests
- build/publish_npm_prerelease:
name: NPM prerelease
resource_class: << pipeline.parameters.publish_npm_prerelease_resource_class >>
Expand Down