name: Pre-Release on: push: tags: - 'v*-rc.*' schedule: - cron: 13 3 * * * workflow_dispatch: env: RELEASE_NAME: nightly NPROC: 2 MAKEFLAGS: "-j${NPROC}" NIMFLAGS: "--parallelBuild:${NPROC}" jobs: tag-name: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v3 - name: Vars id: vars run: | TAG=$([[ "${{github.ref}}" == "refs/heads/master" ]] && echo "${{env.RELEASE_NAME}}" || echo ${{github.ref}} | sed 's#refs/tags/##') echo "tag=${TAG}" >> $GITHUB_OUTPUT outputs: tag: ${{steps.vars.outputs.tag}} build-and-publish: needs: tag-name strategy: matrix: os: [ubuntu-latest, macos-13] arch: [amd64] include: - os: macos-13 arch: arm64 runs-on: ${{ matrix.os }} steps: - name: Checkout code uses: actions/checkout@v3 - name: prep variables id: vars run: | ARCH=${{matrix.arch}} echo "arch=${ARCH}" >> $GITHUB_OUTPUT NWAKU_ARTIFACT_NAME=$(echo "nwaku-${ARCH}-${{runner.os}}-${{ needs.tag-name.outputs.tag }}.tar.gz" | tr "[:upper:]" "[:lower:]") NWAKU_TOOLS_ARTIFACT_NAME=$(echo "nwaku-tools-${ARCH}-${{runner.os}}-${{ needs.tag-name.outputs.tag }}.tar.gz" | tr "[:upper:]" "[:lower:]") echo "nwaku=${NWAKU_ARTIFACT_NAME}" >> $GITHUB_OUTPUT echo "nwakutools=${NWAKU_TOOLS_ARTIFACT_NAME}" >> $GITHUB_OUTPUT - name: build artifacts id: build run: | OS=$([[ "${{runner.os}}" == "macOS" ]] && echo "macosx" || echo "linux") make QUICK_AND_DIRTY_COMPILER=1 V=1 CI=false NIMFLAGS="-d:disableMarchNative --os:${OS} --cpu:${{matrix.arch}}" \ update make QUICK_AND_DIRTY_COMPILER=1 V=1 CI=false\ NIMFLAGS="-d:disableMarchNative --os:${OS} --cpu:${{matrix.arch}} -d:postgres" \ wakunode2\ chat2\ tools tar -cvzf ${{steps.vars.outputs.nwaku}} ./build/wakunode2 ./build/chat2 tar -cvzf ${{steps.vars.outputs.nwakutools}} ./build/wakucanary ./build/networkmonitor - name: upload artifacts uses: actions/upload-artifact@v3 with: name: wakunode2 path: ${{steps.vars.outputs.nwaku}} retention-days: 2 - name: upload artifacts uses: actions/upload-artifact@v3 with: name: wakutools path: ${{steps.vars.outputs.nwakutools}} retention-days: 2 build-docker-image: needs: tag-name uses: waku-org/nwaku/.github/workflows/container-image.yml@master with: image_tag: ${{ needs.tag-name.outputs.tag }} secrets: inherit js-waku-node: needs: build-docker-image uses: waku-org/js-waku/.github/workflows/test-node.yml@master with: nim_wakunode_image: ${{ needs.build-docker-image.outputs.image }} test_type: node debug: waku* js-waku-node-optional: needs: build-docker-image uses: waku-org/js-waku/.github/workflows/test-node.yml@master with: nim_wakunode_image: ${{ needs.build-docker-image.outputs.image }} test_type: node-optional debug: waku* create-release-candidate: runs-on: ubuntu-latest needs: [ tag-name, build-and-publish ] steps: - name: Checkout code uses: actions/checkout@v3 with: fetch-depth: 0 ref: master - name: download artifacts uses: actions/download-artifact@v2 - name: prep variables id: vars run: | REF=$(echo ${{github.ref}} | sed 's#.*/##') echo "ref=${REF}" >> $GITHUB_OUTPUT - name: generate release notes env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | set -x gh release view ${{ needs.tag-name.outputs.tag }} &>/dev/null &&\ gh release delete -y ${{ needs.tag-name.outputs.tag }} &&\ [[ "${{ needs.tag-name.outputs.tag }}" == "nightly" ]] && git tag -d ${{ needs.tag-name.outputs.tag }} RELEASE_NOTES_TAG=$([[ "${{ needs.tag-name.outputs.tag }}" != "nightly" ]] && echo "-t ${{steps.vars.outputs.ref}}" || echo "") docker run \ -t \ --rm \ -v ${PWD}:/opt/sv4git/repo:z \ -u $(id -u) \ docker.io/wakuorg/sv4git:latest \ release-notes ${RELEASE_NOTES_TAG} --previous $(git tag -l --sort -creatordate | grep -e "^v[0-9]*\.[0-9]*\.[0-9]*$") |\ sed -E 's@#([0-9]+)@[#\1](https://github.com/waku-org/nwaku/issues/\1)@g' > release_notes.md sed -i "s/^## .*/Generated at $(date)/" release_notes.md cat release_notes.md TARGET=$([[ "${{ needs.tag-name.outputs.tag }}" == "nightly" ]] && echo "--target ${{steps.vars.outputs.ref}}" || echo "") gh release create ${{ needs.tag-name.outputs.tag }} --prerelease ${TARGET} \ --title ${{ needs.tag-name.outputs.tag }} --notes-file release_notes.md \ wakunode2/* wakutools/*