Release #696
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: Release | |
on: | |
workflow_dispatch: | |
inputs: | |
release-version: | |
required: true | |
signing-key-id: | |
required: true | |
type: string | |
default: C8B77BCBE16CD2B94B43F9C8757397B82D4ED7B0 | |
jobs: | |
create-branch-prefix: | |
uses: ./.github/workflows/create_branch_prefix.yml | |
with: | |
prefix: 'release' | |
version: ${{ inputs.release-version }} | |
signing-key-id: ${{ inputs.signing-key-id }} | |
secrets: | |
GPG_SIGNING_KEY: ${{ secrets.GPG_SIGNING_KEY }} | |
prepare-release: | |
name: Prepare Release | |
needs: | |
- create-branch-prefix | |
runs-on: ubuntu-latest | |
env: | |
GPG_SIGNING_KEY: ${{ secrets.GPG_SIGNING_KEY }} # All commits must be verified | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
outputs: | |
release-version: ${{ inputs.release-version }} | |
test-infos: ${{ steps.get-test-infos.outputs.test-infos }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
ref: ${{ needs.create-branch-prefix.outputs.base-branch }} | |
token: ${{ secrets.LASTMJS_GITHUB_TOKEN }} | |
- uses: ./.github/actions/setup_node | |
with: | |
registry-url: https://registry.npmjs.org | |
node-auth-token: ${{ secrets.NPM_TOKEN }} | |
- uses: ./.github/actions/setup_dfx | |
- run: npm install | |
- name: Install global dependencies | |
run: | | |
AZLE_VERBOSE=true npx azle install-global-dependencies --rust --wasi2ic | |
- name: Update version and build templates | |
run: | | |
VERSION=${{ inputs.release-version }} | |
sed -E -i "s/(\"version\": \")(.*)(\")/\1$VERSION\3/" package.json | |
sed -E -i "s/(\"version\": \")(.*)(\")/\1$VERSION\3/" dfx_extension/extension.json | |
npm install | |
- name: Build stable template | |
run: AZLE_VERBOSE=true npx azle template | |
- name: Build experimental template | |
run: AZLE_VERBOSE=true npx azle template --experimental | |
- uses: ./.github/actions/commit_and_push | |
with: | |
branch-name: ${{ needs.create-branch-prefix.outputs.base-branch }} | |
commit-message: 'Prepare release ${{ inputs.release-version }}' | |
gpg-signing-key: ${{ secrets.GPG_SIGNING_KEY }} | |
signing-key-id: ${{ inputs.signing-key-id }} | |
- name: Publish to npm | |
run: | | |
if [[ "${{ inputs.release-version }}" == *"-rc."* ]]; then | |
npm publish --tag next | |
else | |
npm publish | |
fi | |
- id: get-test-infos | |
uses: ./.github/actions/get_test_infos | |
with: | |
directories: ./examples | |
update-test-files-for-release-commit: | |
needs: | |
- prepare-release | |
- create-branch-prefix | |
name: Update ${{ matrix.test.name }} files for release commit | |
runs-on: ubuntu-latest | |
env: | |
GPG_SIGNING_KEY: ${{ secrets.GPG_SIGNING_KEY }} | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
strategy: | |
fail-fast: false | |
matrix: | |
test: ${{ fromJson(needs.prepare-release.outputs.test-infos) }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
ref: ${{ needs.create-branch-prefix.outputs.base-branch }} | |
token: ${{ secrets.LASTMJS_GITHUB_TOKEN }} | |
- uses: ./.github/actions/setup_node | |
- uses: ./.github/actions/setup_dfx | |
- run: npm install | |
- name: Update azle version | |
working-directory: ${{ matrix.test.path }} | |
run: | | |
sed -E -i "s/(\"azle\": \")(.*)(\")/\1${{ inputs.release-version }}\3/" package.json | |
- run: npm install | |
working-directory: ${{ matrix.test.path }} | |
- name: Start dfx with artificial delay 0 | |
working-directory: ${{ matrix.test.path }} | |
run: dfx start --clean --background --host 127.0.0.1:8000 --artificial-delay 0 | |
# TODO we would like to also update the Candid files | |
# TODO what we should do is detect if there is a Candid file to generate | |
# TODO probably by looking at the dfx.json candid property of any azle canisters | |
# TODO if that is defined and if it does not go to .azle, we should probably generate it | |
- name: Create branch name | |
id: create-branch-name | |
uses: ./.github/actions/create_branch_name | |
with: | |
prefix: ${{ needs.create-branch-prefix.outputs.branch-prefix }} | |
path: ${{ matrix.test.displayPath }} | |
- uses: ./.github/actions/commit_and_push | |
with: | |
branch-name: ${{ steps.create-branch-name.outputs.branch-name }} | |
commit-message: 'Update test files for ${{ matrix.test.displayPath }}' | |
gpg-signing-key: ${{ secrets.GPG_SIGNING_KEY }} | |
create-branch: 'true' | |
signing-key-id: ${{ inputs.signing-key-id }} | |
squash-branches: | |
needs: | |
- prepare-release | |
- update-test-files-for-release-commit | |
- create-branch-prefix | |
uses: ./.github/workflows/squash_branches.yml | |
with: | |
base-branch: ${{ needs.create-branch-prefix.outputs.base-branch }} | |
branch-prefix: ${{ needs.create-branch-prefix.outputs.branch-prefix }} | |
commit-message: 'Update test files for all tests and examples ${{ inputs.release-version }}' | |
signing-key-id: ${{ inputs.signing-key-id }} | |
secrets: | |
GPG_SIGNING_KEY: ${{ secrets.GPG_SIGNING_KEY }} | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
LASTMJS_GITHUB_TOKEN: ${{ secrets.LASTMJS_GITHUB_TOKEN }} | |
create-release: | |
needs: | |
- prepare-release | |
- squash-branches | |
name: Create Release | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.ref }} | |
token: ${{ secrets.LASTMJS_GITHUB_TOKEN }} | |
- name: Create release | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
VERSION=${{ inputs.release-version }} | |
git tag $VERSION | |
git push origin $VERSION | |
if [[ "$VERSION" == *"-rc."* ]]; then | |
gh release create "$VERSION" -t "$VERSION" --prerelease | |
else | |
gh release create "$VERSION" -t "$VERSION" | |
fi | |
create-pr: | |
needs: | |
- prepare-release | |
- squash-branches | |
- create-branch-prefix | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.ref }} | |
- name: Create Pull Request | |
env: | |
GH_TOKEN: ${{ secrets.LASTMJS_GITHUB_TOKEN }} | |
run: | | |
gh pr create \ | |
--base main \ | |
--head ${{ needs.create-branch-prefix.outputs.base-branch }} \ | |
--title "Release ${{ inputs.release-version }}" \ | |
--body "Automated PR for release ${{ inputs.release-version }}" |