name: release on: push: tags: - v* jobs: create_release: runs-on: ubuntu-latest outputs: upload_url: ${{ steps.create_release.outputs.upload_url }} steps: - name: Create release id: create_release uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: ${{ github.ref }} release_name: ${{ github.ref }} draft: false prerelease: false deploy_github: runs-on: ${{ matrix.os }} needs: create_release strategy: fail-fast: false matrix: include: - target: linux os: ubuntu-latest - target: macos os: macos-latest - target: musl os: ubuntu-latest # TODO: put back when nix package .#windows is fixed # - target: windows # os: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Install Nix uses: cachix/install-nix-action@v22 with: nix_path: nixpkgs=channel:nixos-22.11 extra_nix_config: | experimental-features = nix-command flakes - uses: cachix/cachix-action@v12 with: name: soywod authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' - name: Build release run: nix build .#${{ matrix.target }} - name: Compress executable run: | mkdir -p {man,completions} cp result/bin/himalaya* . nix run .#${{ matrix.target }} man ./man nix run .#${{ matrix.target }} completion bash > ./completions/himalaya.bash nix run .#${{ matrix.target }} completion elvish > ./completions/himalaya.elvish nix run .#${{ matrix.target }} completion fish > ./completions/himalaya.fish nix run .#${{ matrix.target }} completion powershell > ./completions/himalaya.powershell nix run .#${{ matrix.target }} completion zsh > ./completions/himalaya.zsh tar -czf himalaya.tgz himalaya* man completions zip -r himalaya.zip himalaya* man completions - name: Upload tar.gz release asset uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ needs.create_release.outputs.upload_url }} asset_path: himalaya.tgz asset_name: himalaya-${{ matrix.target }}.tgz asset_content_type: application/gzip - name: Upload zip release asset uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ needs.create_release.outputs.upload_url }} asset_path: himalaya.zip asset_name: himalaya-${{ matrix.target }}.zip asset_content_type: application/zip # TODO: remove me when nix package .#windows is fixed deploy_windows_github: runs-on: windows-latest needs: create_release steps: - name: Checkout code uses: actions/checkout@v2 - name: Install rust uses: actions-rs/toolchain@v1 with: toolchain: stable - name: Builds release uses: actions-rs/cargo@v1 with: command: build args: --release - name: Compress executable run: | mkdir man mkdir completions copy target/release/himalaya.exe . ./himalaya.exe man ./man ./himalaya.exe completion bash > ./completions/himalaya.bash ./himalaya.exe completion elvish > ./completions/himalaya.elvish ./himalaya.exe completion fish > ./completions/himalaya.fish ./himalaya.exe completion powershell > ./completions/himalaya.powershell ./himalaya.exe completion zsh > ./completions/himalaya.zsh tar -czf himalaya.tgz himalaya.exe man completions Compress-Archive -Path himalaya.exe,man,completions -DestinationPath himalaya.zip - name: Upload tar.gz release asset uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ needs.create_release.outputs.upload_url }} asset_path: himalaya.tgz asset_name: himalaya-windows.tgz asset_content_type: application/gzip - name: Upload zip release asset uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ needs.create_release.outputs.upload_url }} asset_path: himalaya.zip asset_name: himalaya-windows.zip asset_content_type: application/zip deploy_crates: runs-on: ubuntu-latest needs: create_release steps: - name: Checkout code uses: actions/checkout@v2 - name: Install Nix uses: cachix/install-nix-action@v22 with: nix_path: nixpkgs=channel:nixos-22.11 extra_nix_config: | experimental-features = nix-command flakes - name: Publish library to crates.io env: CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} run: nix develop -c cargo publish --no-verify --token ${CARGO_REGISTRY_TOKEN}