name: Publish snapshot on: workflow_call: inputs: fluence-js-version: description: "@fluencejs/fluence version" type: string outputs: aqua-version: description: "@fluencelabs/aqua version" value: ${{ jobs.publish-snapshot.outputs.aqua-version }} env: FORCE_COLOR: true jobs: compile: name: "Compile" runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v3 with: repository: fluencelabs/aqua - name: Generate version id: version run: | SHA=${{ github.event.pull_request.head.sha }} echo "::set-output name=sha::${SHA::7}" echo "::set-output name=branch::${GITHUB_HEAD_REF//[^a-zA-Z0-9-]/-}" - name: Cache Scala uses: coursier/cache-action@v6 - name: Setup Scala uses: coursier/setup-action@v1 - name: Compile aqua env: BUILD_NUMBER: ${{ steps.version.outputs.branch }}-${{ steps.version.outputs.sha }}-${{ github.run_number }}-${{ github.run_attempt }} run: sbt "cliJS/fastOptJS" - name: Upload compiled aqua uses: actions/upload-artifact@v3 with: name: aqua path: cli/.js/target/scala-*/cli-fastopt.js publish-snapshot: name: "Publish snapshot" runs-on: ubuntu-latest needs: compile outputs: aqua-version: "${{ steps.build.outputs.version }}" permissions: contents: read pull-requests: write id-token: write steps: - name: Checkout aqua uses: actions/checkout@v3 with: repository: fluencelabs/aqua - name: Download compiled aqua uses: actions/download-artifact@v3 with: name: aqua - run: mv scala-*/cli-fastopt.js npm/aqua.js - name: Import secrets uses: hashicorp/vault-action@v2.4.2 with: url: https://vault.fluence.dev path: jwt/github role: ci method: jwt jwtGithubAudience: "https://github.com/fluencelabs" jwtTtl: 300 exportToken: false secrets: | kv/npm-registry/basicauth/ci token | NODE_AUTH_TOKEN - name: Setup node with self-hosted npm registry uses: actions/setup-node@v3 with: node-version: "16" registry-url: "https://npm.fluence.dev" cache-dependency-path: "npm/package-lock.json" cache: "npm" - run: npm i working-directory: npm - name: Set fluence-js version from branch if: inputs.fluence-js-version != '' working-directory: npm run: npm i --save -E @fluencelabs/fluence@${{ inputs.fluence-js-version }} - run: npm run build working-directory: npm - name: Generate package version id: version run: | SHA=${{ github.event.pull_request.head.sha }} echo "::set-output name=sha::${SHA::7}" echo "::set-output name=branch::${GITHUB_HEAD_REF//[^a-zA-Z0-9-]/-}" - name: Set package version id: build env: BRANCH: ${{ steps.version.outputs.branch }} SHA: ${{ steps.version.outputs.sha }} RUN: ${{ github.run_number }} ATTEMPT: ${{ github.run_attempt }} working-directory: npm run: | echo "::set-output name=version::$(\ npm version prerelease \ --no-git-tag-version \ --preid ${{ env.BRANCH }}-${{ env.SHA }}-${{ env.RUN }}-${{ env.ATTEMPT }})" - name: Publish to self-hosted npm repo working-directory: npm run: npm publish --tag snapshot --registry https://npm.fluence.dev - name: Find comment in PR uses: peter-evans/find-comment@v1 id: comment with: issue-number: "${{ github.event.pull_request.number }}" comment-author: github-actions[bot] body-includes: "## Aqua version is" - name: Update comment in PR uses: peter-evans/create-or-update-comment@v1 env: AQUA_VERSION: ${{ steps.build.outputs.version }} with: comment-id: "${{ steps.comment.outputs.comment-id }}" issue-number: "${{ github.event.pull_request.number }}" edit-mode: replace body: | ## Aqua version is [${{ env.AQUA_VERSION }}](https://npm.fluence.dev/-/web/detail/@fluencelabs/aqua/v/${{ env.AQUA_VERSION }}) To install it run: ```shell npm login --registry https://npm.fluence.dev npm i @fluencelabs/aqua@=${{ env.AQUA_VERSION }} --registry=https://npm.fluence.dev ```