ci: nightly releases #1
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: | |
push: | |
branches: | |
- ci-nightly_releases | |
env: | |
WORKFLOW_URL: https://github.com/maidsafe/safe_network/actions/runs | |
jobs: | |
build: | |
if: ${{ github.repository_owner == 'maidsafe' }} | |
name: build | |
environment: stable | |
env: | |
FOUNDATION_PK: ${{ vars.FOUNDATION_PK }} | |
GENESIS_PK: ${{ vars.GENESIS_PK }} | |
GENESIS_SK: ${{ secrets.GENESIS_SK }} | |
NETWORK_ROYALTIES_PK: ${{ vars.NETWORK_ROYALTIES_PK }} | |
PAYMENT_FORWARD_PK: ${{ vars.PAYMENT_FORWARD_PK }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
include: | |
- os: windows-latest | |
target: x86_64-pc-windows-msvc | |
- os: macos-latest | |
target: x86_64-apple-darwin | |
- os: macos-latest | |
target: aarch64-apple-darwin | |
- os: ubuntu-latest | |
target: x86_64-unknown-linux-musl | |
- os: ubuntu-latest | |
target: arm-unknown-linux-musleabi | |
- os: ubuntu-latest | |
target: armv7-unknown-linux-musleabihf | |
- os: ubuntu-latest | |
target: aarch64-unknown-linux-musl | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
- uses: cargo-bins/cargo-binstall@main | |
- shell: bash | |
run: cargo binstall --no-confirm just | |
- name: build nightly release artifacts | |
shell: bash | |
run: | | |
just build-release-artifacts "${{ matrix.target }}" "true" | |
- uses: actions/upload-artifact@main | |
with: | |
name: safe_network-${{ matrix.target }} | |
path: | | |
artifacts | |
!artifacts/.cargo-lock | |
- name: post notification to slack on failure | |
if: ${{ failure() }} | |
uses: bryannice/gitactions-slack-notification@2.0.0 | |
env: | |
SLACK_INCOMING_WEBHOOK: ${{ secrets.SLACK_GH_ACTIONS_WEBHOOK_URL }} | |
SLACK_MESSAGE: "Please check the logs for the run at ${{ env.WORKFLOW_URL }}/${{ github.run_id }}" | |
SLACK_TITLE: "Release Failed" | |
s3-release: | |
if: ${{ github.repository_owner == 'maidsafe' }} | |
name: s3 release | |
runs-on: ubuntu-latest | |
needs: [build] | |
env: | |
AWS_ACCESS_KEY_ID: ${{ secrets.S3_DEPLOY_AWS_ACCESS_KEY_ID }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.S3_DEPLOY_AWS_SECRET_ACCESS_KEY }} | |
AWS_DEFAULT_REGION: eu-west-2 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/download-artifact@master | |
with: | |
name: safe_network-x86_64-pc-windows-msvc | |
path: artifacts/x86_64-pc-windows-msvc/release | |
- uses: actions/download-artifact@master | |
with: | |
name: safe_network-x86_64-unknown-linux-musl | |
path: artifacts/x86_64-unknown-linux-musl/release | |
- uses: actions/download-artifact@master | |
with: | |
name: safe_network-x86_64-apple-darwin | |
path: artifacts/x86_64-apple-darwin/release | |
- uses: actions/download-artifact@master | |
with: | |
name: safe_network-aarch64-apple-darwin | |
path: artifacts/aarch64-apple-darwin/release | |
- uses: actions/download-artifact@master | |
with: | |
name: safe_network-arm-unknown-linux-musleabi | |
path: artifacts/arm-unknown-linux-musleabi/release | |
- uses: actions/download-artifact@master | |
with: | |
name: safe_network-armv7-unknown-linux-musleabihf | |
path: artifacts/armv7-unknown-linux-musleabihf/release | |
- uses: actions/download-artifact@master | |
with: | |
name: safe_network-aarch64-unknown-linux-musl | |
path: artifacts/aarch64-unknown-linux-musl/release | |
- uses: cargo-bins/cargo-binstall@main | |
- name: install just | |
shell: bash | |
run: cargo binstall --no-confirm just | |
- name: upload binaries to S3 | |
shell: bash | |
run: | | |
version=$(date +"%Y.%m.%d") | |
just package-bin "faucet" "$version" | |
just package-bin "nat-detection" "$version" | |
just package-bin "node-launchpad" "$version" | |
just package-bin "safe" "$version" | |
just package-bin "safenode" "$version" | |
just package-bin "safenode_rpc_client" "$version" | |
just package-bin "safenode-manager" "$version" | |
just package-bin "safenodemand" "$version" | |
just package-bin "sn_auditor" "$version" | |
just upload-all-packaged-bins-to-s3 | |
github-release: | |
if: ${{ github.repository_owner == 'maidsafe' }} | |
name: github release | |
runs-on: ubuntu-latest | |
needs: [s3-release] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/download-artifact@master | |
with: | |
name: safe_network-x86_64-pc-windows-msvc | |
path: artifacts/x86_64-pc-windows-msvc/release | |
- uses: actions/download-artifact@master | |
with: | |
name: safe_network-x86_64-unknown-linux-musl | |
path: artifacts/x86_64-unknown-linux-musl/release | |
- uses: actions/download-artifact@master | |
with: | |
name: safe_network-x86_64-apple-darwin | |
path: artifacts/x86_64-apple-darwin/release | |
- uses: actions/download-artifact@master | |
with: | |
name: safe_network-aarch64-apple-darwin | |
path: artifacts/aarch64-apple-darwin/release | |
- uses: actions/download-artifact@master | |
with: | |
name: safe_network-arm-unknown-linux-musleabi | |
path: artifacts/arm-unknown-linux-musleabi/release | |
- uses: actions/download-artifact@master | |
with: | |
name: safe_network-armv7-unknown-linux-musleabihf | |
path: artifacts/armv7-unknown-linux-musleabihf/release | |
- uses: actions/download-artifact@master | |
with: | |
name: safe_network-aarch64-unknown-linux-musl | |
path: artifacts/aarch64-unknown-linux-musl/release | |
- uses: cargo-bins/cargo-binstall@main | |
- name: install just | |
shell: bash | |
run: cargo binstall --no-confirm just | |
- name: set package version | |
shell: bash | |
run: | | |
version=$(date +"%Y.%m.%d") | |
echo "PACKAGE_VERSION=$version" >> $GITHUB_ENV | |
- name: package release artifacts | |
shell: bash | |
run: just package-all-architectures | |
- name: delete existing nightly releases | |
env: | |
GITHUB_TOKEN: ${{ secrets.VERSION_BUMP_COMMIT_PAT }} | |
run: | | |
releases=$(gh api repos/${{ github.repository }}/releases --paginate) | |
echo "$RELEASES" | jq -c '.[]' | while read release; do | |
tag_name=$(echo $release | jq -r '.tag_name') | |
release_id=$(echo $release | jq -r '.id') | |
if [[ $tag_name == nightly* ]]; then | |
echo "deleting nightly release with tag: $tag_name" | |
gh api -X DELETE repos/${{ github.repository }}/releases/$release_id | |
fi | |
done | |
# For the next two steps, it seems to be necessary to set `GITHUB_TOKEN` on the step rather | |
# than the job level. | |
- name: create new nightly release | |
uses: actions/create-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.VERSION_BUMP_COMMIT_PAT }} | |
with: | |
tag_name: nightly-${{ env.PACKAGE_VERSION }} | |
release_name: Nightly | |
draft: false | |
prerelease: true | |
- name: upload artifacts as assets | |
env: | |
GITHUB_TOKEN: ${{ secrets.VERSION_BUMP_COMMIT_PAT }} | |
shell: bash | |
run: | | |
( | |
cd packaged_architectures | |
ls | xargs gh release upload nightly-${{ env.PACKAGE_VERSION }} | |
) | |
- name: post notification to slack on failure | |
if: ${{ failure() }} | |
uses: bryannice/gitactions-slack-notification@2.0.0 | |
env: | |
SLACK_INCOMING_WEBHOOK: ${{ secrets.SLACK_GH_ACTIONS_WEBHOOK_URL }} | |
SLACK_MESSAGE: "Please check the logs for the run at ${{ env.WORKFLOW_URL }}/${{ github.run_id }}" | |
SLACK_TITLE: "Nightly Release Failed" |