|
14 | 14 | name: Release
|
15 | 15 |
|
16 | 16 | on:
|
17 |
| - release: |
18 |
| - types: [published] |
19 | 17 | schedule:
|
20 | 18 | - cron: "0 0 * * 1-5"
|
21 | 19 | workflow_dispatch:
|
| 20 | + inputs: |
| 21 | + live-run: |
| 22 | + type: boolean |
| 23 | + description: Live-run |
| 24 | + required: false |
| 25 | + version: |
| 26 | + type: string |
| 27 | + description: Release number |
| 28 | + required: false |
22 | 29 |
|
23 | 30 | jobs:
|
24 |
| - preps: |
25 |
| - name: Preparation |
| 31 | + tag: |
| 32 | + name: Branch, Bump & tag |
26 | 33 | runs-on: ubuntu-latest
|
| 34 | + outputs: |
| 35 | + version: ${{ steps.create-release-branch.outputs.version }} |
| 36 | + branch: ${{ steps.create-release-branch.outputs.branch }} |
27 | 37 | steps:
|
| 38 | + - id: create-release-branch |
| 39 | + uses: eclipse-zenoh/ci/create-release-branch@main |
| 40 | + with: |
| 41 | + repo: ${{ github.repository }} |
| 42 | + live-run: ${{ inputs.live-run || false }} |
| 43 | + version: ${{ inputs.version }} |
| 44 | + github-token: ${{ secrets.BOT_TOKEN_WORKFLOW }} |
| 45 | + |
28 | 46 | - name: Clone this repository
|
29 | 47 | uses: actions/checkout@v4
|
| 48 | + with: |
| 49 | + ref: ${{ steps.create-release-branch.outputs.branch }} |
30 | 50 |
|
31 |
| - - name: Environment setup |
32 |
| - id: env |
33 |
| - shell: bash |
34 |
| - run: | |
35 |
| - echo "GITHUB_REF=${GITHUB_REF}" |
36 |
| - echo "GITHUB_SHA=${GITHUB_SHA:0:8}" |
37 |
| - GIT_BRANCH=`[[ $GITHUB_REF =~ ^refs/heads/.* ]] && echo ${GITHUB_REF/refs\/heads\//} || true` |
38 |
| - echo "GIT_BRANCH=${GIT_BRANCH}" |
39 |
| - echo "GIT_BRANCH=${GIT_BRANCH}" >> $GITHUB_OUTPUT |
40 |
| - GIT_TAG=`[[ $GITHUB_REF =~ ^refs/tags/.* ]] && echo ${GITHUB_REF/refs\/tags\//} || true` |
41 |
| - echo "GIT_TAG=${GIT_TAG}" |
42 |
| - echo "GIT_TAG=${GIT_TAG}" >> $GITHUB_OUTPUT |
| 51 | + - name: Bump and tag project |
| 52 | + run: bash ci/scripts/bump-and-tag.bash |
| 53 | + env: |
| 54 | + VERSION: ${{ steps.create-release-branch.outputs.version }} |
| 55 | + GIT_USER_NAME: eclipse-zenoh-bot |
| 56 | + |
43 | 57 |
|
44 |
| - ZENOH_VERSION=$(sed -n 's/^[ \t]*VERSION \([0-9][0-9]*\.[0-9][0-9]*\.[0.9][0-9]*\.[0-9][0-9]*\).*/\1/p' CMakeLists.txt | head -n1) |
45 |
| - echo "ZENOH_VERSION=${ZENOH_VERSION}" |
46 |
| - echo "ZENOH_VERSION=${ZENOH_VERSION}" >> $GITHUB_OUTPUT |
47 |
| - if [ -n "${GIT_TAG}" ]; then |
48 |
| - IS_RELEASE="true" |
49 |
| - echo "IS_RELEASE=${IS_RELEASE}" |
50 |
| - echo "IS_RELEASE=${IS_RELEASE}" >> $GITHUB_OUTPUT |
51 |
| - PKG_VERSION=${ZENOH_VERSION} |
52 |
| - elif [ -n "${GIT_BRANCH}" ]; then |
53 |
| - PKG_VERSION=${GIT_BRANCH}-${GITHUB_SHA:0:8} |
54 |
| - else |
55 |
| - PKG_VERSION=${ZENOH_VERSION}-${GITHUB_SHA:0:8} |
56 |
| - fi |
57 |
| - echo "PKG_VERSION=${PKG_VERSION}" |
58 |
| - echo "PKG_VERSION=${PKG_VERSION}" >> $GITHUB_OUTPUT |
59 |
| - outputs: |
60 |
| - GIT_BRANCH: ${{ steps.env.outputs.GIT_BRANCH }} |
61 |
| - GIT_TAG: ${{ steps.env.outputs.GIT_TAG }} |
62 |
| - IS_RELEASE: ${{ steps.env.outputs.IS_RELEASE }} |
63 |
| - ZENOH_VERSION: ${{ steps.env.outputs.ZENOH_VERSION }} |
64 |
| - PKG_VERSION: ${{ steps.env.outputs.PKG_VERSION }} |
65 |
| - linux-build: |
| 58 | + build: |
66 | 59 | name: Build packages for Linux
|
67 |
| - needs: preps |
| 60 | + needs: tag |
68 | 61 | runs-on: ubuntu-latest
|
69 | 62 | steps:
|
70 | 63 | - name: Clone this repository
|
71 | 64 | uses: actions/checkout@v4
|
| 65 | + with: |
| 66 | + ref: ${{ needs.tag.outputs.branch }} |
72 | 67 |
|
73 |
| - - name: Make packages |
74 |
| - shell: bash |
75 |
| - run: | |
76 |
| - mkdir -p build && cd build |
77 |
| - cmake ../install -DCPACK_PACKAGE_VERSION=${{ needs.preps.outputs.PKG_VERSION }} |
78 |
| - cmake --build . --target package |
| 68 | + - id: build |
| 69 | + run: bash ci/scripts/build.bash |
| 70 | + env: |
| 71 | + REPO: ${{ github.repository }} |
| 72 | + VERSION: ${{ needs.tag.outputs.version }} |
79 | 73 |
|
80 |
| - - name: Packaging |
81 |
| - id: package |
82 |
| - shell: bash |
83 |
| - run: | |
84 |
| - ZIP_NAME=zenoh-cpp-${{ needs.preps.outputs.PKG_VERSION }}.zip |
85 |
| - LIB_PKG_NAME=${PWD}/${ZIP_NAME} |
86 |
| - DEB_PKG_NAME=${PWD}/zenoh-cpp-${{ needs.preps.outputs.PKG_VERSION }}-deb-pkgs.zip |
87 |
| - RPM_PKG_NAME=${PWD}/zenoh-cpp-${{ needs.preps.outputs.PKG_VERSION }}-rpm-pkgs.zip |
88 |
| - echo "DEB_PKG_NAME=${DEB_PKG_NAME}" >> $GITHUB_OUTPUT |
89 |
| - echo "RPM_PKG_NAME=${RPM_PKG_NAME}" >> $GITHUB_OUTPUT |
90 |
| - echo "LIB_PKG_NAME=${LIB_PKG_NAME}" >> $GITHUB_OUTPUT |
91 |
| - cd build/packages |
92 |
| - echo "Packaging ${LIB_PKG_NAME}:" |
93 |
| - mv ${ZIP_NAME} ${LIB_PKG_NAME} |
94 |
| - echo "Packaging ${DEB_PKG_NAME}:" |
95 |
| - zip ${DEB_PKG_NAME} *.deb |
96 |
| - echo "Packaging ${RPM_PKG_NAME}:" |
97 |
| - zip ${RPM_PKG_NAME} *.rpm |
| 74 | + - name: Upload library archive |
| 75 | + uses: actions/upload-artifact@v4 |
| 76 | + with: |
| 77 | + name: ${{ steps.build.outputs.archive-lib }} |
| 78 | + path: ${{ steps.build.outputs.archive-lib }} |
| 79 | + |
| 80 | + - name: Upload DEB archive |
| 81 | + uses: actions/upload-artifact@v4 |
| 82 | + with: |
| 83 | + name: ${{ steps.build.outputs.archive-deb }} |
| 84 | + path: ${{ steps.build.outputs.archive-deb }} |
98 | 85 |
|
99 |
| - - name: "Upload packages" |
100 |
| - uses: actions/upload-artifact@v3 |
| 86 | + - name: Upload RPM archive |
| 87 | + uses: actions/upload-artifact@v4 |
101 | 88 | with:
|
102 |
| - name: Upload packages |
103 |
| - path: | |
104 |
| - ${{ steps.package.outputs.LIB_PKG_NAME }} |
105 |
| - ${{ steps.package.outputs.DEB_PKG_NAME }} |
106 |
| - ${{ steps.package.outputs.RPM_PKG_NAME }} |
| 89 | + name: ${{ steps.build.outputs.archive-rpm }} |
| 90 | + path: ${{ steps.build.outputs.archive-rpm }} |
107 | 91 |
|
108 |
| - publication: |
109 |
| - name: Publish the release |
110 |
| - if: needs.preps.outputs.IS_RELEASE == 'true' |
111 |
| - needs: [preps, linux-build] |
| 92 | + eclipse: |
| 93 | + needs: [tag, build] |
112 | 94 | runs-on: ubuntu-latest
|
113 | 95 | steps:
|
114 |
| - - name: Download result of previous builds |
115 |
| - uses: actions/download-artifact@v3 |
| 96 | + - uses: eclipse-zenoh/ci/publish-crates-eclipse@main |
116 | 97 | with:
|
117 |
| - path: ARTIFACTS |
| 98 | + live-run: ${{ inputs.live-run || false }} |
| 99 | + version: ${{ needs.tag.outputs.version }} |
| 100 | + |
| 101 | + ssh-host-path: /home/data/httpd/download.eclipse.org/zenoh/zenoh-cpp |
| 102 | + ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }} |
| 103 | + ssh-passphrase: ${{ secrets.SSH_PASSPHRASE }} |
| 104 | + archive-patterns: '.*\.zip' |
118 | 105 |
|
119 |
| - - name: Publish as github release |
120 |
| - uses: softprops/action-gh-release@v1 |
| 106 | + github: |
| 107 | + needs: [tag, build] |
| 108 | + runs-on: ubuntu-latest |
| 109 | + steps: |
| 110 | + - uses: eclipse-zenoh/ci/publish-crates-github@main |
121 | 111 | with:
|
122 |
| - files: ARTIFACTS/*/*.* |
123 |
| - |
124 |
| - - name: Publish to download.eclipse.org/zenoh |
125 |
| - env: |
126 |
| - |
127 |
| - ECLIPSE_BASE_DIR: /home/data/httpd/download.eclipse.org/zenoh/zenoh-cpp |
128 |
| - shell: bash |
129 |
| - run: | |
130 |
| - echo "--- setup ssh-agent" |
131 |
| - eval "$(ssh-agent -s)" |
132 |
| - echo 'echo "${{ secrets.SSH_PASSPHRASE }}"' > ~/.ssh_askpass && chmod +x ~/.ssh_askpass |
133 |
| - echo "${{ secrets.SSH_PRIVATE_KEY }}" | tr -d '\r' | DISPLAY=NONE SSH_ASKPASS=~/.ssh_askpass ssh-add - > /dev/null 2>&1 |
134 |
| - rm -f ~/.ssh_askpass |
135 |
| - echo "--- test ssh:" |
136 |
| - ssh -o "StrictHostKeyChecking=no" ${SSH_TARGET} ls -al |
137 |
| - echo "---- list artifacts to upload:" |
138 |
| - ls -R ARTIFACTS || true |
139 |
| - DOWNLOAD_DIR=${ECLIPSE_BASE_DIR}/${{ needs.preps.outputs.PKG_VERSION }} |
140 |
| - echo "---- copy artifacts into ${DOWNLOAD_DIR}" |
141 |
| - ssh -o "StrictHostKeyChecking=no" ${SSH_TARGET} mkdir -p ${DOWNLOAD_DIR} |
142 |
| - cd ARTIFACTS |
143 |
| - sha256sum */* > sha256sums.txt |
144 |
| - scp -o "StrictHostKeyChecking=no" -r * ${SSH_TARGET}:${DOWNLOAD_DIR}/ |
145 |
| - echo "---- cleanup identity" |
146 |
| - ssh-add -D |
| 112 | + repo: ${{ github.repository }} |
| 113 | + live-run: ${{ inputs.live-run || false }} |
| 114 | + version: ${{ needs.tag.outputs.version }} |
| 115 | + branch: ${{ needs.tag.outputs.branch }} |
| 116 | + ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }} |
| 117 | + ssh-passphrase: ${{ secrets.SSH_PASSPHRASE }} |
| 118 | + github-token: ${{ secrets.BOT_TOKEN_WORKFLOW }} |
| 119 | + archive-patterns: '.*\.zip' |
0 commit comments