Testing for version tags #1722
Workflow file for this run
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
name: Solidity | |
on: | |
merge_group: | |
push: | |
defaults: | |
run: | |
shell: bash | |
jobs: | |
initialize: | |
name: Initialize | |
runs-on: ubuntu-latest | |
outputs: | |
is-release: ${{ steps.release-tag-check.outputs.is-release }} | |
is-pre-release: ${{ steps.release-tag-check.outputs.is-pre-release }} | |
steps: | |
- uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # v3.1.0 | |
- name: Check release tag | |
id: release-tag-check | |
uses: smartcontractkit/chainlink-github-actions/release/release-tag-check@main | |
env: | |
# Match semver git tags with a "contracts-ccip/" prefix. | |
RELEASE_REGEX: '^contracts-ccip/v[0-9]+\.[0-9]+\.[0-9]+$' | |
PRE_RELEASE_REGEX: '^contracts-ccip/v[0-9]+\.[0-9]+\.[0-9]+-(.+)$' | |
changes: | |
name: Detect changes | |
runs-on: ubuntu-latest | |
outputs: | |
changes: ${{ steps.changes.outputs.src }} | |
steps: | |
- name: Checkout the repo | |
uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 | |
- uses: dorny/paths-filter@4512585405083f25c027a35db413c2b3b9006d50 # v2.11.1 | |
id: changes | |
with: | |
filters: | | |
src: | |
- 'contracts/**/*' | |
- '.github/workflows/solidity.yml' | |
# prepublish-test: | |
# needs: [changes] | |
# if: needs.changes.outputs.changes == 'true' | |
# name: Prepublish Test ${{ fromJSON('["(skipped)", ""]')[needs.changes.outputs.changes == 'true'] }} | |
# runs-on: ubuntu-latest | |
# steps: | |
# - name: Checkout the repo | |
# uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 | |
# - name: Setup NodeJS | |
# uses: ./.github/actions/setup-nodejs | |
# - name: Run Prepublish test | |
# working-directory: contracts | |
# run: pnpm prepublishOnly | |
# - name: Collect Metrics | |
# id: collect-gha-metrics | |
# uses: smartcontractkit/push-gha-metrics-action@d2c2b7bdc9012651230b2608a1bcb0c48538b6ec | |
# with: | |
# basic-auth: ${{ secrets.GRAFANA_CLOUD_BASIC_AUTH }} | |
# hostname: ${{ secrets.GRAFANA_CLOUD_HOST }} | |
# this-job-name: Prepublish Test | |
# continue-on-error: true | |
native-compile: | |
needs: [changes] | |
if: needs.changes.outputs.changes == 'true' | |
name: Native Compilation ${{ fromJSON('["(skipped)", ""]')[needs.changes.outputs.changes == 'true'] }} | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout the repo | |
uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 | |
- name: Checkout diff-so-fancy | |
uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 | |
with: | |
repository: so-fancy/diff-so-fancy | |
ref: a673cb4d2707f64d92b86498a2f5f71c8e2643d5 # v1.4.3 | |
path: diff-so-fancy | |
- name: Install diff-so-fancy | |
run: echo "$GITHUB_WORKSPACE/diff-so-fancy" >> $GITHUB_PATH | |
- name: Setup NodeJS | |
uses: ./.github/actions/setup-nodejs | |
with: | |
prod: "true" | |
- name: Setup Go | |
uses: ./.github/actions/setup-go | |
- name: Run native compile and generate wrappers | |
run: make wrappers-all | |
working-directory: ./contracts | |
- name: Verify local solc binaries | |
run: ./tools/ci/check_solc_hashes | |
- name: Display git diff | |
if: ${{ needs.changes.outputs.changes == 'true' }} | |
run: git diff --minimal --color --exit-code | diff-so-fancy | |
- name: Comment on fix instructions | |
env: | |
GITHUB_TOKEN: ${{ github.token }} | |
if: ${{ failure() }} | |
run: gh pr comment -b 'Go solidity wrappers are out-of-date, regenerate them via the `make wrappers-all` command' | |
- name: Collect Metrics | |
id: collect-gha-metrics | |
uses: smartcontractkit/push-gha-metrics-action@d2c2b7bdc9012651230b2608a1bcb0c48538b6ec | |
with: | |
basic-auth: ${{ secrets.GRAFANA_CLOUD_BASIC_AUTH }} | |
hostname: ${{ secrets.GRAFANA_CLOUD_HOST }} | |
this-job-name: Native Compilation | |
continue-on-error: true | |
lint: | |
defaults: | |
run: | |
working-directory: contracts | |
needs: [changes] | |
if: needs.changes.outputs.changes == 'true' | |
name: Lint ${{ fromJSON('["(skipped)", ""]')[needs.changes.outputs.changes == 'true'] }} | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout the repo | |
uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 | |
- name: Setup NodeJS | |
uses: ./.github/actions/setup-nodejs | |
- name: Run pnpm lint | |
run: pnpm lint | |
- name: Collect Metrics | |
id: collect-gha-metrics | |
uses: smartcontractkit/push-gha-metrics-action@d2c2b7bdc9012651230b2608a1bcb0c48538b6ec | |
with: | |
basic-auth: ${{ secrets.GRAFANA_CLOUD_BASIC_AUTH }} | |
hostname: ${{ secrets.GRAFANA_CLOUD_HOST }} | |
this-job-name: Lint | |
continue-on-error: true | |
prettier: | |
defaults: | |
run: | |
working-directory: contracts | |
needs: [changes] | |
if: needs.changes.outputs.changes == 'true' | |
name: Prettier Formatting | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout the repo | |
uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 | |
- name: Setup NodeJS | |
uses: ./.github/actions/setup-nodejs | |
- name: Run prettier check | |
run: pnpm prettier:check | |
- name: Collect Metrics | |
id: collect-gha-metrics | |
uses: smartcontractkit/push-gha-metrics-action@d2c2b7bdc9012651230b2608a1bcb0c48538b6ec | |
with: | |
basic-auth: ${{ secrets.GRAFANA_CLOUD_BASIC_AUTH }} | |
hostname: ${{ secrets.GRAFANA_CLOUD_HOST }} | |
this-job-name: Prettier Formatting | |
continue-on-error: true | |
publish-beta: | |
needs: [initialize, changes, native-compile, lint, prettier] | |
name: Publish Beta NPM | |
runs-on: ubuntu-latest | |
if: needs.initialize.outputs.is-pre-release == 'true' | |
steps: | |
- name: Checkout the repo | |
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 | |
- name: Setup NodeJS | |
uses: ./.github/actions/setup-nodejs | |
- name: Configure npmrc | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} | |
run: | | |
echo "//registry.npmjs.org/:_authToken=${NODE_AUTH_TOKEN}" >> ~/.npmrc | |
echo "registry=https://registry.npmjs.org/" >> ~/.npmrc | |
- name: Publish Beta | |
run: pnpm publish-beta --publish-branch "${GITHUB_REF_NAME}" --no-git-checks | |
working-directory: contracts | |
- name: Collect Metrics | |
id: collect-gha-metrics | |
uses: smartcontractkit/push-gha-metrics-action@90fcbaac8ebf86da9c4d55dba24f6fe3029f0e0b | |
with: | |
basic-auth: ${{ secrets.GRAFANA_CLOUD_BASIC_AUTH }} | |
hostname: ${{ secrets.GRAFANA_CLOUD_HOST }} | |
this-job-name: Publish-Beta | |
continue-on-error: true | |
publish-prod: | |
needs: [initialize, changes, native-compile, lint, prettier] | |
name: Publish Prod NPM | |
runs-on: ubuntu-latest | |
if: needs.initialize.outputs.is-release == 'true' | |
steps: | |
- name: Checkout the repo | |
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 | |
- name: Setup NodeJS | |
uses: ./.github/actions/setup-nodejs | |
- name: Create GitHub Release | |
uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844 # v1 | |
with: | |
tag_name: ${{ github.ref_name }} | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Configure npmrc | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} | |
run: | | |
echo "//registry.npmjs.org/:_authToken=${NODE_AUTH_TOKEN}" >> ~/.npmrc | |
echo "registry=https://registry.npmjs.org/" >> ~/.npmrc | |
- name: Publish Prod | |
run: pnpm publish-prod --publish-branch "${GITHUB_REF_NAME}" --no-git-checks | |
working-directory: contracts | |
- name: Collect Metrics | |
id: collect-gha-metrics | |
uses: smartcontractkit/push-gha-metrics-action@90fcbaac8ebf86da9c4d55dba24f6fe3029f0e0b | |
with: | |
basic-auth: ${{ secrets.GRAFANA_CLOUD_BASIC_AUTH }} | |
hostname: ${{ secrets.GRAFANA_CLOUD_HOST }} | |
this-job-name: Publish-Prod | |
continue-on-error: true |