1# SPDX-License-Identifier: MIT2#3# https://code.forgejo.org/forgejo/runner4#5# Build the runner binaries and OCI images6#7# ROLE: forgejo-integration8# DOER: forgejo-ci9# TOKEN: <generated from https://code.forgejo.org/forgejo-ci>10#11name: Build release1213on:14 push:15 tags: 'v*'1617jobs:18 release:19 runs-on: self-hosted20 # root is used for testing, allow it21 if: secrets.ROLE == 'forgejo-integration' || github.repository_owner == 'root'22 steps:23 - uses: actions/checkout@v32425 - name: Increase the verbosity when there are no secrets26 id: verbose27 run: |28 if test -z "${{ secrets.TOKEN }}"; then29 value=true30 else31 value=false32 fi33 echo "value=$value" >> "$GITHUB_OUTPUT"3435 - name: Sanitize the name of the repository36 id: repository37 run: |38 echo "value=${GITHUB_REPOSITORY##*/}" >> "$GITHUB_OUTPUT"3940 - name: create test TOKEN41 id: token42 if: ${{ secrets.TOKEN == '' }}43 run: |44 apt-get -qq install -y jq45 url="${{ env.GITHUB_SERVER_URL }}"46 hostport=${url##http*://}47 hostport=${hostport%%/}48 doer=root49 api=http://$doer:admin1234@$hostport/api/v1/users/$doer/tokens50 curl -sS -X DELETE $api/release51 token=$(curl -sS -X POST -H 'Content-Type: application/json' --data-raw '{"name": "release", "scopes": ["all"]}' $api | jq --raw-output .sha1)52 echo "value=${token}" >> "$GITHUB_OUTPUT"5354 - name: version from ref_name55 id: tag-version56 run: |57 version=${GITHUB_REF_NAME##*v}58 echo "value=$version" >> "$GITHUB_OUTPUT"5960 - name: release notes61 id: release-notes62 run: |63 anchor=${{ steps.tag-version.outputs.value }}64 anchor=${anchor//./-}65 cat >> "$GITHUB_OUTPUT" <<EOF66 value<<ENDVAR67 See https://code.forgejo.org/forgejo/runner/src/branch/main/RELEASE-NOTES.md#$anchor68 ENDVAR69 EOF7071 - name: build without TOKEN72 if: ${{ secrets.TOKEN == '' }}73 uses: https://code.forgejo.org/forgejo/forgejo-build-publish/build@v574 with:75 forgejo: "${{ env.GITHUB_SERVER_URL }}"76 owner: "${{ env.GITHUB_REPOSITORY_OWNER }}"77 repository: "${{ steps.repository.outputs.value }}"78 doer: root79 sha: "${{ github.sha }}"80 release-version: "${{ steps.tag-version.outputs.value }}"81 token: ${{ steps.token.outputs.value }}82 platforms: linux/amd64,linux/arm6483 release-notes: "${{ steps.release-notes.outputs.value }}"84 binary-name: forgejo-runner85 binary-path: /bin/forgejo-runner86 verbose: ${{ steps.verbose.outputs.value }}8788 - name: build with TOKEN89 if: ${{ secrets.TOKEN != '' }}90 uses: https://code.forgejo.org/forgejo/forgejo-build-publish/build@v591 with:92 forgejo: "${{ env.GITHUB_SERVER_URL }}"93 owner: "${{ env.GITHUB_REPOSITORY_OWNER }}"94 repository: "${{ steps.repository.outputs.value }}"95 doer: "${{ secrets.DOER }}"96 sha: "${{ github.sha }}"97 release-version: "${{ steps.tag-version.outputs.value }}"98 token: "${{ secrets.TOKEN }}"99 platforms: linux/amd64,linux/arm64100 release-notes: "${{ steps.release-notes.outputs.value }}"101 binary-name: forgejo-runner102 binary-path: /bin/forgejo-runner103 verbose: ${{ steps.verbose.outputs.value }}