diff --git a/.github/workflows/go-release.yml b/.github/workflows/go-release.yml new file mode 100644 index 000000000..3ed7b74aa --- /dev/null +++ b/.github/workflows/go-release.yml @@ -0,0 +1,94 @@ +name: Go Release Automation + +on: + workflow_dispatch: + inputs: + project-name: + description: "Project name (e.g., AwsEncryptionSDK)" + required: true + type: string + version: + description: "Version (e.g., v0.1.0)" + required: true + type: string + +jobs: + get-dafny-version: + permissions: {} + uses: ./.github/workflows/dafny_version.yaml + + go-release: + needs: get-dafny-version + runs-on: macos-13 + permissions: + contents: write + id-token: write + + steps: + - name: Support longpaths on Git checkout + run: | + git config --global core.longpaths true + + - name: Configure AWS Credentials for Tests + uses: aws-actions/configure-aws-credentials@v4 + with: + aws-region: us-west-2 + role-to-assume: arn:aws:iam::370957321024:role/GitHub-CI-Public-ESDK-Dafny-Role-us-west-2 + role-session-name: GoReleaseTest + + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Update submodules + run: | + git submodule update --init --recursive + + - name: Setup Dafny + uses: ./mpl/.github/actions/setup_dafny + with: + dafny-version: ${{ needs.get-dafny-version.outputs.version }} + + - name: Install Go + uses: actions/setup-go@v5 + with: + go-version: "1.23" + + - name: Install Go imports + run: | + go install golang.org/x/tools/cmd/goimports@latest + + - name: Install Smithy-Dafny codegen dependencies + uses: ./.github/actions/install_smithy_dafny_codegen_dependencies + + - name: Configure Git + run: | + git config --global user.name "GitHub Actions" + git config --global user.email "actions@github.com" + + - name: Get release directory name + id: release-dir + run: | + chmod +x mpl/scripts/go-release-automation.sh + RELEASE_DIR_NAME=$(mpl/scripts/go-release-automation.sh get_release_dir_name "${{ github.event.inputs.project-name }}" "${{ github.event.inputs.version }}") + echo "releaseDirName=$RELEASE_DIR_NAME" >> $GITHUB_OUTPUT + + - name: Generate a changelog + uses: orhun/git-cliff-action@v4 + with: + config: releases/go/.git-cliff.toml + args: --bump -u --prepend releases/go/${{ steps.release-dir.outputs.releaseDirName }}/CHANGELOG.md + + - name: Run Go release automation script + run: | + chmod +x mpl/scripts/go-release-automation.sh + mpl/scripts/go-release-automation.sh run_release_script ${{ github.event.inputs.project-name }} ${{ github.event.inputs.version }} + + - name: print diff between development and release directory + run: | + RELEASE_DIR_NAME="${{ steps.release-dir.outputs.releaseDirName }}" + PROJECT_NAME="${{ github.event.inputs.project-name }}" + DIFF_FILES=$(diff -qr $PROJECT_NAME/runtimes/go/ImplementationFromDafny-go releases/go/$RELEASE_DIR_NAME || true) + echo $DIFF_FILES diff --git a/AwsEncryptionSDK/runtimes/go/ImplementationFromDafny-go/go.mod b/AwsEncryptionSDK/runtimes/go/ImplementationFromDafny-go/go.mod index 14f52cf12..fdeec323e 100644 --- a/AwsEncryptionSDK/runtimes/go/ImplementationFromDafny-go/go.mod +++ b/AwsEncryptionSDK/runtimes/go/ImplementationFromDafny-go/go.mod @@ -3,7 +3,7 @@ module github.com/aws/aws-encryption-sdk/releases/go/encryption-sdk go 1.23.0 replace ( - github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl => ../../../../../mpl/AwsCryptographicMaterialProviders/runtimes/go/ImplementationFromDafny-go/ + github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl => ../../../../mpl/AwsCryptographicMaterialProviders/runtimes/go/ImplementationFromDafny-go/ github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb => ../../../../mpl/ComAmazonawsDynamodb/runtimes/go/ImplementationFromDafny-go/ github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms => ../../../../mpl/ComAmazonawsKms/runtimes/go/ImplementationFromDafny-go/ github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives => ../../../../mpl/AwsCryptographyPrimitives/runtimes/go/ImplementationFromDafny-go/ diff --git a/releases/go/.git-cliff.toml b/releases/go/.git-cliff.toml new file mode 100644 index 000000000..f8f731b36 --- /dev/null +++ b/releases/go/.git-cliff.toml @@ -0,0 +1,21 @@ +[git] +tag_pattern = "^releases/go/encryption-sdk/v*" +filter_commits = true +commit_parsers = [ + { message = '^feat\((go|all languages)\)', group = "Features"}, + { message = '^fix\((go|all languages)\)', group = "Fixes"}, + { message = '^chore\((go|all languages)\)', group = "Maintenance"}, + { message = '^docs\((go|all languages)\)', group = "Maintenance"}, + { message = '^revert\((go|all languages)\)', group = "Fixes"}, + { message = '^style\((go|all languages)\)', group = "Miscellaneous"}, + { message = '^refactor\((go|all languages)\)', group = "Miscellaneous"}, + { message = '^perf\((go|all languages)\)', group = "Miscellaneous"}, + { message = '^test\((go|all languages)\)', group = "Miscellaneous"}, +] +commit_preprocessors = [ + { pattern = '\(dafny\)', replace = '(all languages)'} +] + +[changelog] +header = "# Changelog\n\n" +trim = true \ No newline at end of file