name: Yoink Release on: push: tags: - 'v*' jobs: yoink-release: name: Yoink Build and Release runs-on: [self-hosted, linux, arm64] steps: - name: Checkout uses: actions/checkout@v3 - name: Setup Go uses: actions/setup-go@v4 with: go-version: '1.22.3' - name: Linux Build run: go build -o yoink - name: Create Release id: create_release uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: ${{ github.ref_name }} release_name: Release ${{ github.ref_name }} body: Release notes for ${{ github.ref_name }} draft: false prerelease: false - name: Save upload_url run: echo "UPLOAD_URL=${{ steps.create_release.outputs.upload_url }}" > upload_url.txt shell: bash - name: Upload upload_url artifact uses: actions/upload-artifact@v3 with: name: upload_url path: ./upload_url.txt - name: Upload Linux Release Asset uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} asset_path: ./yoink asset_name: yoink asset_content_type: application/x-executable build-and-release-win: runs-on: windows-latest needs: yoink-release steps: - name: Checkout uses: actions/checkout@v3 - name: Setup Go uses: actions/setup-go@v4 with: go-version: '1.22.3' - name: Windows Build run: go build -o yoink.exe - name: Download upload_url artifact uses: actions/download-artifact@v3 with: name: upload_url.txt path: . - name: Read upload_url artifact id: read_upload_url run: | UPLOAD_URL=$(cat upload_url.txt) echo "::set-output name=upload_url::$UPLOAD_URL" shell: bash - name: Debug upload_url run: echo ${{ steps.read_upload_url.outputs.upload_url }} shell: bash - name: Upload Windows Release Asset uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.read_upload_url.outputs.upload_url }} asset_path: ./yoink.exe asset_name: yoink.exe asset_content_type: application/x-executable