Improve Ci Scripts (#273) #81
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: | ||
tags: | ||
- '*' | ||
permissions: | ||
contents: write | ||
jobs: | ||
release: | ||
name: Release Libraries | ||
runs-on: ubuntu-latest | ||
continue-on-error: true | ||
if: github.ref_type == 'tag' | ||
strategy: | ||
matrix: | ||
include: | ||
- crate: rinex-qc-traits | ||
- crate: rinex | ||
- crate: sp3 | ||
- crate: sinex | ||
- crate: rinex-qc | ||
- crate: ublox-rnx | ||
- crate: rnx2crx | ||
- crate: crx2rnx | ||
- crate: rinex-cli | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
- name: Install stable | ||
uses: actions-rs/toolchain@v1 | ||
with: | ||
toolchain: stable | ||
- name: Publish | ||
env: | ||
TOKEN: ${{ secrets.CRATES_IO_TOKEN }} | ||
run: | | ||
cargo login $TOKEN | ||
cargo publish -p ${{ matrix.crate }} --allow-dirty | ||
build: | ||
name: build | ||
runs-on: ${{ matrix.os }} | ||
continue-on-error: true | ||
env: | ||
CARGO: cargo | ||
RUST_BACKTRACE: 1 | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
include: | ||
- build: linux | ||
os: ubuntu-latest | ||
rust: stable | ||
target: x86_64-unknown-linux-gnu | ||
- build: macos | ||
os: macos-latest | ||
rust: stable | ||
target: x86_64-apple-darwin | ||
- build: macos | ||
os: macos-latest | ||
rust: stable | ||
target: aarch64-apple-darwin | ||
- build: win64-msvc | ||
os: windows-latest | ||
rust: stable | ||
target: x86_64-pc-windows-msvc | ||
steps: | ||
- name: Checkout repository | ||
uses: actions/checkout@v4 | ||
- name: Install Rust | ||
uses: actions-rs/toolchain@v1 | ||
with: | ||
toolchain: ${{ matrix.rust }} | ||
target: ${{ matrix.target }} | ||
- name: UBX2RNX Dependencies | ||
if: matrix.build == 'linux' | ||
shell: bash | ||
run: | | ||
sudo apt-get update | ||
sudo apt-get install -y libudev-dev | ||
- name: Build applications | ||
shell: bash | ||
run: | | ||
CARGO_PROFILE_RELEASE_STRIP=symbols ${{ env.CARGO }} build \ | ||
--verbose \ | ||
--target ${{ matrix.target }} \ | ||
--all-features \ | ||
--release \ | ||
-p rinex-cli \ | ||
-p rnx2crx \ | ||
-p crx2rnx \ | ||
-p ublox-rnx | ||
ls -lah target/${{ matrix.target }}/release | ||
if [ "${{ matrix.os }}" = "windows-latest" ]; then | ||
crx2rnx="target/${{ matrix.target }}/release/crx2rnx.exe" | ||
rnx2crx="target/${{ matrix.target }}/release/rnx2crx.exe" | ||
rinexcli="target/${{ matrix.target }}/release/rinex-cli.exe" | ||
ubloxrnx="target/${{ matrix.target }}/release/ublox-rnx.exe" | ||
else | ||
crx2rnx="target/${{ matrix.target }}/release/crx2rnx" | ||
rnx2crx="target/${{ matrix.target }}/release/rnx2crx" | ||
rinexcli="target/${{ matrix.target }}/release/rinex-cli" | ||
ubloxrnx="target/${{ matrix.target }}/release/ublox-rnx" | ||
fi | ||
echo "CRX2RNX=$crx2rnx" >> $GITHUB_ENV | ||
echo "RNX2CRX=$crx2rnx" >> $GITHUB_ENV | ||
echo "RNXCLI=$rinexcli" >> $GITHUB_ENV | ||
echo "UBX2RNX=$ubloxrnx" >> $GITHUB_ENV | ||
- name: Determine archive name | ||
shell: bash | ||
run: | | ||
echo "ARCHIVE=rinex-${{ github.ref_name }}-${{ matrix.target }}" >> $GITHUB_ENV | ||
- name: Creating directory for archive | ||
shell: bash | ||
run: | | ||
mkdir -p "$ARCHIVE" | ||
cp {README.md,LICENSE-MIT,LICENSE-APACHE} "$ARCHIVE"/ | ||
cp "$CRX2RNX" "$ARCHIVE"/ | ||
cp "$RNX2CRX" "$ARCHIVE"/ | ||
cp "$RNXCLI" "$ARCHIVE"/ | ||
cp "$UBX2RNX" "$ARCHIVE"/ | ||
- name: Gzip archive (Unix) | ||
shell: bash | ||
if: matrix.os != 'windows-latest' | ||
run: | | ||
tar czf "$ARCHIVE.tar.gz" "$ARCHIVE" | ||
shasum -a 256 "$ARCHIVE.tar.gz" > "$ARCHIVE.tar.gz.sha256" | ||
echo "ASSET=$ARCHIVE.tar.gz" >> $GITHUB_ENV | ||
echo "ASSET_SUM=$ARCHIVE.tar.gz.sha256" >> $GITHUB_ENV | ||
- name: Zip archive (Windows) | ||
shell: bash | ||
if: matrix.os == 'windows-latest' | ||
run: | | ||
7z a "$ARCHIVE.zip" "$ARCHIVE" | ||
certutil -hashfile "$ARCHIVE.zip" SHA256 > "$ARCHIVE.zip.sha256" | ||
echo "ASSET=$ARCHIVE.zip" >> $GITHUB_ENV | ||
echo "ASSET_SUM=$ARCHIVE.zip.sha256" >> $GITHUB_ENV | ||
- name: Upload artifacts | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: ${{ env.ASSET }} | ||
path: | | ||
${{ env.ASSET }} | ||
- name: Upload artifacts (cksum) | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: ${{ env.ASSET_SUM }} | ||
path: | | ||
${{ env.ASSET_SUM }} | ||
release: | ||
runs-on: ubuntu-latest | ||
needs: ['build'] | ||
# continue even though we failed to download or upload one | ||
# or more artefacts | ||
continue-on-error: true | ||
steps: | ||
- name: Create Release | ||
id: create_release | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
uses: actions/create-release@v1 | ||
with: | ||
draft: true | ||
tag_name: ${{ github.ref_name }} | ||
release_name: ${{ github.ref_name }} | ||
- name: Download x86_64-unknown-linux-gnu | ||
uses: actions/download-artifact@v3 | ||
with: | ||
name: rinex-${{ github.ref_name }}-x86_64-unknown-linux-gnu.tar.gz | ||
- name: Download x86_64-unknown-linux-gnu (cksum) | ||
uses: actions/download-artifact@v3 | ||
with: | ||
name: rinex-${{ github.ref_name }}-x86_64-unknown-linux-gnu.tar.gz.sha256 | ||
- name: Upload x86_64-unknown-linux-gnu | ||
uses: actions/upload-release-asset@v1 | ||
env: | ||
GITHUB_TOKEN: ${{ github.token }} | ||
with: | ||
upload_url: ${{ steps.create_release.outputs.upload_url }} | ||
asset_path: rinex-${{ github.ref_name }}-x86_64-unknown-linux-gnu.tar.gz | ||
asset_name: rinex-${{ github.ref_name }}-x86_64-unknown-linux-gnu.tar.gz | ||
asset_content_type: application/gzip | ||
- name: Upload x86_64-unknown-linux-gnu (cksum) | ||
uses: actions/upload-release-asset@v1 | ||
env: | ||
GITHUB_TOKEN: ${{ github.token }} | ||
with: | ||
upload_url: ${{ steps.create_release.outputs.upload_url }} | ||
asset_path: rinex-${{ github.ref_name }}-x86_64-unknown-linux-gnu.tar.gz.sha256 | ||
asset_name: rinex-${{ github.ref_name }}-x86_64-unknown-linux-gnu.tar.gz.sha256 | ||
asset_content_type: application/gzip | ||
- name: Download x86_64-apple-darwin | ||
uses: actions/download-artifact@v3 | ||
with: | ||
name: rinex-${{ github.ref_name }}-x86_64-apple-darwin.tar.gz | ||
- name: Download x86_64-apple-darwin (cksum) | ||
uses: actions/download-artifact@v3 | ||
with: | ||
name: rinex-${{ github.ref_name }}-x86_64-apple-darwin.tar.gz.sha256 | ||
- name: Upload x86_64-apple-darwin | ||
uses: actions/upload-release-asset@v1 | ||
env: | ||
GITHUB_TOKEN: ${{ github.token }} | ||
with: | ||
upload_url: ${{ steps.create_release.outputs.upload_url }} | ||
asset_path: rinex-${{ github.ref_name }}-x86_64-apple-darwin.tar.gz | ||
asset_name: rinex-${{ github.ref_name }}-x86_64-apple-darwin.tar.gz | ||
asset_content_type: application/gzip | ||
- name: Upload x86_64-apple-darwin (cksum) | ||
uses: actions/upload-release-asset@v1 | ||
env: | ||
GITHUB_TOKEN: ${{ github.token }} | ||
with: | ||
upload_url: ${{ steps.create_release.outputs.upload_url }} | ||
asset_path: rinex-${{ github.ref_name }}-x86_64-apple-darwin.tar.gz.sha256 | ||
asset_name: rinex-${{ github.ref_name }}-x86_64-apple-darwin.tar.gz.sha256 | ||
asset_content_type: application/gzip | ||
- name: Download aarch64-apple-darwin | ||
uses: actions/download-artifact@v3 | ||
with: | ||
name: rinex-${{ github.ref_name }}-aarch64-apple-darwin.tar.gz | ||
- name: Download aarch64-apple-darwin (cksum) | ||
uses: actions/download-artifact@v3 | ||
with: | ||
name: rinex-${{ github.ref_name }}-aarch64-apple-darwin.tar.gz.sha256 | ||
- name: Upload aarch64-apple-darwin | ||
uses: actions/upload-release-asset@v1 | ||
env: | ||
GITHUB_TOKEN: ${{ github.token }} | ||
with: | ||
upload_url: ${{ steps.create_release.outputs.upload_url }} | ||
asset_path: rinex-${{ github.ref_name }}-aarch64-apple-darwin.tar.gz | ||
asset_name: rinex-${{ github.ref_name }}-aarch64-apple-darwin.tar.gz | ||
asset_content_type: application/gzip | ||
- name: Upload aarch64-apple-darwin (cksum) | ||
uses: actions/upload-release-asset@v1 | ||
env: | ||
GITHUB_TOKEN: ${{ github.token }} | ||
with: | ||
upload_url: ${{ steps.create_release.outputs.upload_url }} | ||
asset_path: rinex-${{ github.ref_name }}-aarch64-apple-darwin.tar.gz.sha256 | ||
asset_name: rinex-${{ github.ref_name }}-aarch64-apple-darwin.tar.gz.sha256 | ||
asset_content_type: application/gzip | ||
- name: Download x86_64-pc-windows-msvc | ||
uses: actions/download-artifact@v3 | ||
with: | ||
name: rinex-${{ github.ref_name }}-x86_64-pc-windows-msvc.zip | ||
- name: Download x86_64-pc-windows-msvc (cksum) | ||
uses: actions/download-artifact@v3 | ||
with: | ||
name: rinex-${{ github.ref_name }}-x86_64-pc-windows-msvc.zip.sha256 | ||
- name: Upload x86_64-pc-windows-msvc | ||
uses: actions/upload-release-asset@v1 | ||
env: | ||
GITHUB_TOKEN: ${{ github.token }} | ||
with: | ||
upload_url: ${{ steps.create_release.outputs.upload_url }} | ||
asset_path: rinex-${{ github.ref_name }}-x86_64-pc-windows-msvc.zip | ||
asset_name: rinex-${{ github.ref_name }}-x86_64-pc-windows-msvc.zip | ||
asset_content_type: application/zip | ||
- name: Upload x86_64-pc-windows-msvc (cksum) | ||
uses: actions/upload-release-asset@v1 | ||
env: | ||
GITHUB_TOKEN: ${{ github.token }} | ||
with: | ||
upload_url: ${{ steps.create_release.outputs.upload_url }} | ||
asset_path: rinex-${{ github.ref_name }}-x86_64-pc-windows-msvc.zip.sha256 | ||
asset_name: rinex-${{ github.ref_name }}-x86_64-pc-windows-msvc.zip.sha256 | ||
asset_content_type: application/zip |