diff --git a/.cargo/config.toml b/.cargo/config.toml new file mode 100644 index 0000000..1855535 --- /dev/null +++ b/.cargo/config.toml @@ -0,0 +1,3 @@ +[profile.release] +lto = "thin" +strip = true diff --git a/.drone.jsonnet b/.drone.jsonnet new file mode 100644 index 0000000..421e211 --- /dev/null +++ b/.drone.jsonnet @@ -0,0 +1,92 @@ +local executableName = 'newsletter-to-web'; +local build_image = 'img.kie.rs/jjkiers/rust-cross:rust1.70-zig'; + +local archs = [ + { target: 'aarch64-unknown-linux-musl', short: 'arm64-musl' }, + { target: 'x86_64-pc-windows-gnu', short: 'windows' }, + { target: 'x86_64-unknown-linux-musl', short: 'amd64-musl' }, +]; + +local getStepName(arch) = 'Build for ' + arch.short; + +local builtExecutableName(arch) = executableName + if std.length(std.findSubstr(arch.short, 'windows')) > 0 then '.exe' else ''; +local targetExecutableName(arch) = executableName + '-' + arch.target + if std.length(std.findSubstr(arch.short, 'windows')) > 0 then '.exe' else ''; + +local getVolumeName(arch) = 'target-' + arch.target; +local getLocalVolumes(arch) = [ + { + name: getVolumeName(arch), + temp: {}, + } + for arch in archs +]; + +local add_build_steps() = [ + { + name: getStepName(arch), + image: build_image, + commands: [ + 'echo Hello World from Jsonnet on ' + arch.target + '!', + 'cargo zigbuild --release --target ' + arch.target, + 'cp target/' + arch.target + '/release/' + builtExecutableName(arch) + ' artifacts/' + targetExecutableName(arch), + 'rm -rf target/' + arch.target + '/release/*', + ], + depends_on: ['Prepare'], + volumes: [{ + name: getVolumeName(arch), + path: '/drone/src/target', + }], + } + for arch in archs +]; + +{ + kind: 'pipeline', + type: 'docker', + name: 'default', + platform: { + arch: 'amd64', + }, + steps: + [{ + name: 'Prepare', + image: build_image, + commands: [ + 'mkdir artifacts', + 'echo Using image: ' + build_image, + 'cargo --version', + 'rustc --version', + ], + }] + + add_build_steps() + + [ + { + name: 'Show built artifacts', + image: build_image, + commands: [ + 'ls -lah artifacts', + ], + depends_on: [getStepName(a) for a in archs], + }, + { + name: 'Create release on gitea', + image: 'plugins/gitea-release', + settings: { + api_key: { + from_secret: 'gitea_token', + }, + base_url: 'https://code.kiers.eu', + files: 'artifacts/*', + checksum: 'sha256', + }, + when: { + event: ['tag', 'promote'], + }, + depends_on: ['Show built artifacts'], + }, + ], + + volumes: getLocalVolumes(archs), + + image_pull_secrets: ['docker_private_repo'], +} diff --git a/.github/workflows/publish-binaries.yml b/.github/workflows/publish-binaries.yml deleted file mode 100644 index 2a3fd56..0000000 --- a/.github/workflows/publish-binaries.yml +++ /dev/null @@ -1,39 +0,0 @@ -on: - release: - types: [published] - -name: Publish binaries to release - -jobs: - publish: - name: Publish for ${{ matrix.os }} - runs-on: ${{ matrix.os }} - - strategy: - matrix: - os: [ubuntu-latest, macos-latest, windows-latest] - include: - - os: ubuntu-latest - artifact_name: fourth - asset_name: fourth-linux-amd64 - - os: macos-latest - artifact_name: fourth - asset_name: fourth-macos-amd64 - - os: windows-latest - artifact_name: fourth.exe - asset_name: fourth-windows-amd64.exe - - steps: - - uses: hecrj/setup-rust-action@master - with: - rust-version: stable - - uses: actions/checkout@v2 - - name: Build - run: cargo build --release --locked - - name: Publish - uses: svenstaro/upload-release-action@v1-release - with: - repo_token: ${{ secrets.PUBLISH_TOKEN }} - file: target/release/${{ matrix.artifact_name }} - asset_name: ${{ matrix.asset_name }} - tag: ${{ github.ref }} diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml deleted file mode 100644 index 05fab7b..0000000 --- a/.github/workflows/rust.yml +++ /dev/null @@ -1,24 +0,0 @@ -name: Rust - -on: - push: - branches: [ main ] - pull_request: - branches: [ main ] - -env: - CARGO_TERM_COLOR: always - -jobs: - build: - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v2 - - name: Upgrade Rust - run: rustup update - - name: Build - run: cargo build --verbose - - name: Run tests - run: cargo test --verbose