publish-nym-vpn-core #5
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: publish-nym-vpn-core.yml | ||
on: | ||
schedule: | ||
- cron: "4 3 * * *" | ||
workflow_dispatch: | ||
inputs: | ||
tag_name: | ||
description: "Tag name for release" | ||
required: false | ||
default: nightly | ||
push: | ||
tags: | ||
- nym-vpn-core-v[0-9]+.[0-9]+.[0-9]+* | ||
env: | ||
CARGO_TERM_COLOR: always | ||
UPLOAD_DIR_LINUX: linux_artifacts | ||
UPLOAD_DIR_MAC: mac_artifacts | ||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
jobs: | ||
build-nym-vpn-core-linux: | ||
uses: ./.github/workflows/build-nym-vpn-core-linux.yml | ||
Check failure on line 23 in .github/workflows/publish-nym-vpn-core.yml GitHub Actions / publish-nym-vpn-core.ymlInvalid workflow file
|
||
build-nym-vpn-core-mac: | ||
uses: ./.github/workflows/build-nym-vpn-core-mac.yml | ||
generate-build-info-core: | ||
uses: ./.github/workflows/generate-build-info-core.yml | ||
needs: build-nym-vpn-core-linux | ||
with: | ||
build-profile: release | ||
rust-version: ${{ needs.build-nym-vpn-core-linux.outputs.RUST_VERSION }} | ||
publish: | ||
needs: | ||
- build-nym-vpn-core-linux | ||
- build-nym-vpn-core-mac | ||
- generate-build-info-core | ||
runs-on: ubuntu-22.04-arc | ||
permissions: | ||
contents: write | ||
outputs: | ||
tag: ${{ steps.set_tag.outputs.tag }} | ||
steps: | ||
- name: Checkout repo | ||
uses: actions/checkout@v4 | ||
# Adding envsubst, gh cli | ||
- name: Install system dependencies | ||
run: | | ||
sudo apt update && sudo apt install -y gettext-base gh | ||
- name: Install rust toolchain | ||
uses: brndnmtthws/rust-action-rustup@v1 | ||
with: | ||
toolchain: stable | ||
components: rustfmt, clippy | ||
- name: Get package version cli | ||
id: package-version-cli | ||
uses: nicolaiunrein/cargo-get@master | ||
with: | ||
subcommand: package.version --entry nym-vpn-cli | ||
- name: Get package version vpnc | ||
id: package-version-vpnc | ||
uses: nicolaiunrein/cargo-get@master | ||
with: | ||
subcommand: package.version --entry nym-vpnc | ||
- name: Get package version vpnd | ||
id: package-version-vpnd | ||
uses: nicolaiunrein/cargo-get@master | ||
with: | ||
subcommand: package.version --entry nym-vpnd | ||
- name: Get package version lib | ||
id: package-version-lib | ||
uses: nicolaiunrein/cargo-get@master | ||
with: | ||
subcommand: package.version --entry nym-vpn-lib | ||
- name: Check tag name consistency | ||
if: github.event_name == 'push' | ||
shell: bash | ||
run: | | ||
if [[ "${{ steps.package-version-cli.outputs.metadata }}" == "${{ steps.package-version-vpnc.outputs.metadata }}" && "${{ steps.package-version-cli.outputs.metadata }}" == "${{ steps.package-version-vpnd.outputs.metadata }}" && "${{ steps.package-version-cli.outputs.metadata }}" == "${{ steps.package-version-lib.outputs.metadata }}" ]]; then | ||
if [[ nym-vpn-core-v${{ steps.package-version-cli.outputs.metadata }} != ${{ github.ref_name }} ]]; then | ||
exit 1 | ||
fi | ||
else exit 1 | ||
fi | ||
- name: Download artifacts | ||
uses: actions/download-artifact@v4 | ||
# Setup TAG_NAME, which is used as a general "name" | ||
- if: github.event_name == 'workflow_dispatch' | ||
run: echo "TAG_NAME=${{ github.event.inputs.tag_name }}" >> $GITHUB_ENV | ||
- if: github.event_name == 'schedule' | ||
run: echo 'TAG_NAME=nightly' >> $GITHUB_ENV | ||
- if: github.event_name == 'push' | ||
run: echo "TAG_NAME=${{ github.ref_name }}" >> $GITHUB_ENV | ||
- name: Generate checksum and tar folder per platform | ||
run: | | ||
ARCHIVE_LINUX=nym-vpn-core-v${{ steps.package-version-lib.outputs.metadata }}_linux_x86_64 | ||
ARCHIVE_MAC=nym-vpn-core-v${{ steps.package-version-lib.outputs.metadata }}_macos_aarch64 | ||
echo "ARCHIVE_LINUX=${ARCHIVE_LINUX}" >> $GITHUB_ENV | ||
echo "ARCHIVE_MAC=${ARCHIVE_MAC}" >> $GITHUB_ENV | ||
mv ${{ env.UPLOAD_DIR_LINUX }} ${ARCHIVE_LINUX} | ||
mv ${{ env.UPLOAD_DIR_MAC }} ${ARCHIVE_MAC} | ||
tar cvzf ${ARCHIVE_LINUX}.tar.gz ${ARCHIVE_LINUX} | ||
tar cvzf ${ARCHIVE_MAC}.tar.gz ${ARCHIVE_MAC} | ||
sha256sum ${ARCHIVE_LINUX}.tar.gz > "${ARCHIVE_LINUX}.tar.gz.sha256sum" | ||
sha256sum ${ARCHIVE_MAC}.tar.gz > "${ARCHIVE_MAC}.tar.gz.sha256sum" | ||
echo 'SHA256_CHECKSUMS<<EOF' >> $GITHUB_ENV | ||
cat "${ARCHIVE_LINUX}*.sha256sum" >> $GITHUB_ENV | ||
cat "${ARCHIVE_MAC}*.sha256sum" >> $GITHUB_ENV | ||
echo 'EOF' >> $GITHUB_ENV | ||
- name: Setting subject, prerelease and notes files | ||
if: ${{ contains(env.TAG_NAME, 'nightly') }} | ||
run: | | ||
(echo "SUBJECT=nym-vpn-core-v${{ steps.package-version-lib.outputs.metadata }} nightly prerelease build"; | ||
echo 'PRERELEASE=--prerelease'; | ||
echo 'NOTES_FILE=release-notes/nym-vpn-core.md') >> $GITHUB_ENV | ||
gh release delete nightly --yes || true | ||
git push origin :nightly || true | ||
# Once we consider these actually release builds, remove --prerelease | ||
# from PRERELEASE here | ||
- name: Removing --prerelease if needed | ||
if: ${{ !contains(env.TAG_NAME, 'nightly') }} | ||
run: | | ||
(echo "SUBJECT=$TAG_NAME" | ||
echo 'PRERELEASE=' | ||
echo 'NOTES_FILE=release-notes/nym-vpn-core.md') >> $GITHUB_ENV | ||
- name: Build info | ||
run: | | ||
echo 'BUILD_INFO<<EOF' >> $GITHUB_ENV | ||
cat build-info/build-info.txt >> $GITHUB_ENV | ||
echo 'EOF' >> $GITHUB_ENV | ||
- name: Publish release | ||
run: | | ||
envsubst < "$GITHUB_WORKSPACE/.github/workflows/$NOTES_FILE" > "$RUNNER_TEMP/release-notes.md" | ||
gh release create $TAG_NAME ${{ env.PRERELEASE }} --notes-file "$RUNNER_TEMP/release-notes.md" --title "$SUBJECT" --target $GITHUB_SHA ${{ env.ARCHIVE_LINUX }}.tar.gz ${{ env.ARCHIVE_LINUX }}.tar.gz.sha256sum ${{ env.ARCHIVE_MAC }}.tar.gz ${{ env.ARCHIVE_MAC }}.tar.gz.sha256sum | ||
gen-hashes: | ||
uses: ./.github/workflows/gen-hashes-json.yml | ||
needs: publish | ||
with: | ||
release_tag: ${{ needs.publish.outputs.tag }} | ||
secrets: inherit |