v1.30.0 #34
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: release | |
on: | |
release: | |
types: [published] | |
permissions: | |
contents: write | |
issues: write | |
pull-requests: write | |
env: | |
NUGET_PACKAGES: ${{ github.workspace }}/.nuget/packages | |
JOB_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} | |
SLACK_CHANNEL: "#apm-agent-dotnet" | |
jobs: | |
release: | |
runs-on: ubuntu-latest | |
env: | |
PREFIX_APM_AGENT: "build/output/ElasticApmAgent_" | |
PREFIX_APM_PROFILER: "build/output/elastic_apm_profiler_" | |
SUFFIX_APM_AGENT: ".zip" | |
SUFFIX_APM_PROFILER: "-linux-x64.zip" | |
DOCKER_IMAGE_NAME: "docker.elastic.co/observability/apm-agent-dotnet" | |
permissions: | |
attestations: write | |
contents: write | |
id-token: write | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Bootstrap Action Workspace | |
id: bootstrap | |
uses: ./.github/workflows/bootstrap | |
with: | |
rust: 'true' | |
- name: Package | |
run: ./build.sh pack | |
- name: Release to Nuget | |
run: .ci/linux/deploy.sh ${{ secrets.NUGET_API_KEY }} ${{ secrets.NUGET_API_URL }} | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@988b5a0280414f521da01fcc63a27aeeb4b104db # v3.6.1 | |
- name: Log in to the Elastic Container registry | |
uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0 | |
with: | |
registry: ${{ secrets.ELASTIC_DOCKER_REGISTRY }} | |
username: ${{ secrets.ELASTIC_DOCKER_USERNAME }} | |
password: ${{ secrets.ELASTIC_DOCKER_PASSWORD }} | |
- name: Extract metadata (tags, labels) | |
id: docker-meta | |
uses: docker/metadata-action@8e5442c4ef9f78752691e2d8f8d19755c6f78e81 # v5.5.1 | |
with: | |
images: ${{ env.DOCKER_IMAGE_NAME }} | |
flavor: | | |
latest=auto | |
tags: | | |
# "1.2.3" and "latest" Docker tags on push of git tag "v1.2.3" | |
type=semver,pattern={{version}},value=${{ steps.bootstrap.outputs.agent-version }} | |
# "edge" Docker tag on git push to default branch | |
type=edge | |
- name: Build and Push Profiler Docker Image | |
id: docker-push | |
continue-on-error: true # continue for now until we see it working in action | |
uses: docker/build-push-action@5cd11c3a4ced054e52742c5fd54dca954e0edd85 # v6.7.0 | |
with: | |
cache-from: type=gha | |
cache-to: type=gha,mode=max | |
context: . | |
platforms: linux/amd64,linux/arm64 | |
push: true | |
tags: ${{ steps.docker-meta.outputs.tags }} | |
labels: ${{ steps.docker-meta.outputs.labels }} | |
build-args: | | |
AGENT_ZIP_FILE=${{ env.PREFIX_APM_PROFILER }}${{ steps.bootstrap.outputs.agent-version }}${{ env.SUFFIX_APM_PROFILER }} | |
- name: Attest image | |
uses: actions/attest-build-provenance@1c608d11d69870c2092266b3f9a6f3abbf17002c # v1.4.3 | |
continue-on-error: true # continue for now until we see it working in action | |
with: | |
subject-name: ${{ env.DOCKER_IMAGE_NAME }} | |
subject-digest: ${{ steps.docker-push.outputs.digest }} | |
push-to-registry: true | |
- name: generate build provenance (APM Agent) | |
uses: actions/attest-build-provenance@1c608d11d69870c2092266b3f9a6f3abbf17002c # v1.4.3 | |
with: | |
subject-path: "${{ github.workspace }}/${{ env.PREFIX_APM_AGENT }}${{ steps.bootstrap.outputs.agent-version }}${{ env.SUFFIX_APM_AGENT }}" | |
- name: generate build provenance (APM Profiler) | |
uses: actions/attest-build-provenance@1c608d11d69870c2092266b3f9a6f3abbf17002c # v1.4.3 | |
with: | |
subject-path: "${{ github.workspace }}/${{ env.PREFIX_APM_PROFILER }}${{ steps.bootstrap.outputs.agent-version }}${{ env.SUFFIX_APM_PROFILER }}" | |
- name: Attach Profiler And Startup Hooks | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
gh release upload ${{ github.ref_name }} "${{ env.PREFIX_APM_AGENT }}${{ steps.bootstrap.outputs.agent-version }}${{ env.SUFFIX_APM_AGENT }}" "${{ env.PREFIX_APM_PROFILER }}${{ steps.bootstrap.outputs.agent-version }}${{ env.SUFFIX_APM_PROFILER }}" | |
- if: ${{ success() }} | |
uses: elastic/oblt-actions/slack/send@v1 | |
continue-on-error: true #continue for now until we see it working in action | |
with: | |
bot-token: ${{ secrets.SLACK_BOT_TOKEN }} | |
channel-id: ${{ env.SLACK_CHANNEL }} | |
message: | | |
:large_green_circle: [${{ github.repository }}] Release *${{ github.ref_name }}* published. | |
Build: (<${{ env.JOB_URL }}|here>) | |
Release URL: (<https://github.com/elastic/apm-agent-dotnet/releases/tag/${{ github.ref_name }}|${{ github.ref_name }}>) | |
- if: ${{ failure() }} | |
uses: elastic/oblt-actions/slack/send@v1 | |
continue-on-error: true #continue for now until we see it working in action | |
with: | |
bot-token: ${{ secrets.SLACK_BOT_TOKEN }} | |
channel-id: ${{ env.SLACK_CHANNEL }} | |
message: | | |
:large_yellow_circle: [${{ github.repository }}] Release *${{ github.ref_name }}* could not be published. | |
Build: (<${{ env.JOB_URL }}|here>) | |
release-windows: | |
runs-on: windows-2022 | |
needs: [ 'release'] | |
outputs: | |
agent-version: ${{ steps.bootstrap.outputs.agent-version }} | |
major-version: ${{ steps.bootstrap.outputs.major-version }} | |
env: | |
PREFIX_ZIP_FILE: "build/output/elastic_apm_profiler_" | |
SUFFIX_ZIP_FILE: "-win-x64.zip" | |
permissions: | |
attestations: write | |
contents: write | |
id-token: write | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Bootstrap Action Workspace | |
id: bootstrap | |
uses: ./.github/workflows/bootstrap | |
with: | |
rust: 'true' | |
- name: Build profiler | |
run: ./build.bat profiler-zip | |
- name: generate build provenance (APM Profiler) | |
uses: actions/attest-build-provenance@1c608d11d69870c2092266b3f9a6f3abbf17002c # v1.4.3 | |
with: | |
subject-path: "${{ github.workspace }}/${{ env.PREFIX_ZIP_FILE }}${{ steps.bootstrap.outputs.agent-version }}${{ env.SUFFIX_ZIP_FILE }}" | |
- name: Attach Profiler | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
gh release upload ${{ github.ref_name }} "${{ env.PREFIX_ZIP_FILE }}${{ steps.bootstrap.outputs.agent-version }}${{ env.SUFFIX_ZIP_FILE }}" | |
post-release: | |
needs: [ 'release-windows'] | |
runs-on: ubuntu-latest | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
GIT_TAG: v${{ needs.release-windows.outputs.agent-version }} | |
NEW_BRANCH: update/${{ needs.release-windows.outputs.agent-version }} | |
TARGET_BRANCH: ${{ needs.release-windows.outputs.major-version }}.x | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Setup git config | |
uses: elastic/oblt-actions/git/setup@v1 | |
- name: Create GitHub Pull Request if minor release. | |
run: | | |
echo "as long as there is a major.x branch" | |
existed_in_local=$(git ls-remote --heads origin ${TARGET_BRANCH}) | |
if [ -z "${existed_in_local}" ]; then | |
echo -e "::warning::Target branch '${TARGET_BRANCH}' does not exist." | |
exit 0 | |
fi | |
git checkout $TARGET_BRANCH | |
git checkout -b ${NEW_BRANCH} | |
git format-patch -k --stdout ${TARGET_BRANCH}...origin/main -- docs CHANGELOG.asciidoc | git am -3 -k | |
git push origin ${NEW_BRANCH} | |
gh pr create \ | |
--title "post-release: ${GIT_TAG}" \ | |
--body "Generated automatically with ${JOB_URL}" \ | |
--head "elastic:${NEW_BRANCH}" \ | |
--base "$TARGET_BRANCH" \ | |
--repo "${{ github.repository }}" | |
- name: Create branch if major release | |
run: | | |
echo "as long as there is no a major.x branch" | |
existed_in_local=$(git ls-remote --heads origin ${TARGET_BRANCH}) | |
if [ -n "${existed_in_local}" ]; then | |
echo -e "::warning::Target branch '${TARGET_BRANCH}' does exist." | |
exit 0 | |
fi | |
git branch -D $TARGET_BRANCH | |
git push origin $TARGET_BRANCH |