Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support Alpine #1163

Closed
wants to merge 64 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
cf6da33
feat: arm64 linux build
vanstinator Jan 10, 2022
ef2bfea
Merge pull request #1 from vanstinator/feature/linux-arm64
jensmeindertsma Feb 20, 2022
ad15f74
Implement Alpine support and requested changes
jensmeindertsma Feb 20, 2022
920d313
Remove redundant comment
jensmeindertsma Feb 20, 2022
e6a5ce3
Split out Linux job
jensmeindertsma Feb 20, 2022
8eba6fe
Try things out
jensmeindertsma Feb 20, 2022
04cfd36
Push
jensmeindertsma Feb 20, 2022
124822c
Fix
jensmeindertsma Feb 20, 2022
5db5d94
Push changes
jensmeindertsma Feb 20, 2022
008f8f6
Fixes
jensmeindertsma Feb 20, 2022
d8ebd12
Merge pull request #2 from jensmeindertsma/__test
jensmeindertsma Feb 20, 2022
40683cf
Get CI up
jensmeindertsma Feb 20, 2022
778f914
Run Windows
jensmeindertsma Feb 20, 2022
68817bb
Try CentOS 7
jensmeindertsma Feb 20, 2022
ab9a8a5
oops
jensmeindertsma Feb 20, 2022
98c6830
Fix
jensmeindertsma Feb 20, 2022
f423aeb
revert changes
jensmeindertsma Feb 20, 2022
6827e8a
Revert this
jensmeindertsma Feb 20, 2022
03f36dd
Revert this
jensmeindertsma Feb 20, 2022
45d1734
Merge pull request #3 from jensmeindertsma/test-changes
jensmeindertsma Feb 20, 2022
c1a10e4
Build the correct version of OpenSSL
jensmeindertsma Feb 20, 2022
38302a4
Revert use of CentOS 7
jensmeindertsma Feb 20, 2022
2e2b9a0
Remove comment
jensmeindertsma Feb 20, 2022
3cf06e5
Add Dockerfile
jensmeindertsma Feb 20, 2022
6b14c64
Fix matrix
jensmeindertsma Feb 20, 2022
ac1f9d3
Fix test case
jensmeindertsma Feb 20, 2022
cca1d2d
comment
jensmeindertsma Feb 20, 2022
2eaa082
Fix name
jensmeindertsma Feb 20, 2022
3d2d871
changes
jensmeindertsma Feb 20, 2022
4ce0269
Fix OpenSSL version
jensmeindertsma Feb 20, 2022
325d6e5
Do not fail fast
jensmeindertsma Feb 21, 2022
f704929
Remove Dockerfile
jensmeindertsma Feb 21, 2022
3b48890
Detect MUSL
jensmeindertsma Feb 21, 2022
4f104fe
Merge branch 'support-alpine-linux' into support-alpine
jensmeindertsma Feb 21, 2022
165140f
Clean up macOS builds
jensmeindertsma Feb 21, 2022
d030dad
Build matrix
jensmeindertsma Feb 21, 2022
75e5123
Fix cache
jensmeindertsma Feb 21, 2022
d940cc5
Name std
jensmeindertsma Feb 21, 2022
6a8d503
Comment
jensmeindertsma Feb 21, 2022
933fe38
Fix image
jensmeindertsma Feb 21, 2022
8032e3a
Set up MUSL
jensmeindertsma Feb 21, 2022
c44eca9
Add Perl
jensmeindertsma Feb 21, 2022
cfce2ab
Improve cacheability
jensmeindertsma Feb 21, 2022
d49cb93
Install gcc
jensmeindertsma Feb 21, 2022
8013e3f
Install musl-dev
jensmeindertsma Feb 21, 2022
2a0afe8
More fixes
jensmeindertsma Feb 21, 2022
85584d9
Use rust:alpine
jensmeindertsma Feb 21, 2022
87da50b
Install Rust manually
jensmeindertsma Feb 21, 2022
a9325ac
Fix
jensmeindertsma Feb 21, 2022
154ddfa
Fixes
jensmeindertsma Feb 21, 2022
c648de6
Just run release
jensmeindertsma Feb 21, 2022
d7c6beb
Fix path
jensmeindertsma Feb 21, 2022
ede9d6b
Changes
jensmeindertsma Feb 21, 2022
0fb930a
Scripts
jensmeindertsma Feb 21, 2022
d7d5771
Space
jensmeindertsma Feb 21, 2022
3c636ef
Fixes
jensmeindertsma Feb 21, 2022
79e2be5
Fix path
jensmeindertsma Feb 21, 2022
fdb8e54
Use Rust image
jensmeindertsma Feb 21, 2022
148feab
...
jensmeindertsma Feb 21, 2022
0a0e1a2
Wohoo
jensmeindertsma Feb 21, 2022
d0ef554
ignore
jensmeindertsma Feb 21, 2022
54eb26b
Fix
jensmeindertsma Feb 21, 2022
fd4793b
cargo cross doesn't help
jensmeindertsma Feb 21, 2022
b5c80e0
Back to how things used to be
jensmeindertsma Feb 22, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
279 changes: 220 additions & 59 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,20 @@ jobs:
steps:
- name: Check out code
uses: actions/checkout@v2
- name: Set up docker image
run: docker build -t volta .
working-directory: ./ci/docker
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v1
- name: Build and push
uses: docker/build-push-action@v2
with:
cache-from: type=gha
cache-to: type=gha,mode=max
context: .
file: ./ci/docker/Dockerfile.centos6
load: true
push: false
tags: volta
target: base
- name: Compile and package Volta
run: docker run --volume ${PWD}:/root/workspace --workdir /root/workspace --rm --init --tty volta /root/workspace/ci/build-and-package.sh volta-centos
- name: Confirm correct OpenSSL Version
Expand All @@ -32,76 +43,121 @@ jobs:

linux:
strategy:
fail-fast: false
matrix:
openssl:
- 1_1_0
- 1_0_1
name: Build - OpenSSL ${{ matrix.openssl }}
architecture: ["aarch64", "x86_64"]
openssl: [1_0_1, 1_1_0]
std: ["gnu", "musl"]
include:
- arch: aarch64
dockerArch: arm64
dockerfile: Dockerfile.centos7
- architecture: x86_64
dockerArch: amd64
dockerfile: Dockerfile.centos6
- std: musl
dockerfile: Dockerfile.alpine
name: Build - OpenSSL ${{ matrix.openssl }} - ${{ matrix.architecture }} (${{ matrix.std }})
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v2
- name: Check out OpenSSL
uses: actions/checkout@v2

- name: Rust build cache
id: cache-openssl
uses: actions/cache@v2
with:
repository: openssl/openssl
ref: OpenSSL_${{ matrix.openssl }}-stable
path: openssl
- name: Set up docker image
run: docker build -t volta .
working-directory: ./ci/docker
path: |
.cargo/registry
.cargo/git
target/
key: ${{ runner.os }}-${{ matrix.openssl }}-${{ matrix.architecture }}-target-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-${{ matrix.openssl }}-${{ matrix.architecture }}-target-

- name: Clean .git
run: |
rm -rf ./openssl/.git

- name: Debug
run: |
echo $(ls -la)

- name: Set up QEMU
uses: docker/setup-qemu-action@v1

- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v1

- name: Build and push
uses: docker/build-push-action@v2
with:
build-args: |
OPENSSL_VERSION=${{ matrix.openssl }}
cache-from: type=gha,scope=${{ matrix.std }}-${{ matrix.openssl }}-${{ matrix.architecture }}
cache-to: type=gha,scope=${{ matrix.std }}-${{ matrix.openssl }}-${{ matrix.architecture }},mode=max
context: .
file: ./ci/docker/${{ matrix.dockerfile }}
load: true
platforms: linux/${{ matrix.dockerArch }}
push: false
tags: volta-${{ matrix.std }}-${{ matrix.openssl }}-${{ matrix.architecture }}
target: openssl-${{ matrix.openssl }}

- name: Compile and package OpenSSL & Volta
run: docker run --volume ${PWD}:/root/workspace --workdir /root/workspace --rm --init --tty volta /root/workspace/ci/build-with-openssl.sh volta-openssl-${{ matrix.openssl }}
run: >
docker run
--volume ${PWD}:/root/workspace
--platform linux/${{ matrix.dockerArch }}
--workdir /root/workspace
--rm --init
--tty
volta-${{ matrix.std }}-${{ matrix.openssl }}-${{ matrix.architecture }}
/root/workspace/ci/build-with-openssl.sh
linux-${{ matrix.std }}-openssl-${{ matrix.openssl }}-${{ matrix.architecture }}

- name: Set .cargo/ ownership to current user
run: sudo chown -R $(id -u):$(id -g) .cargo/

- name: Confirm OpenSSL Version
run: |
objdump -p target/release/volta
readelf -d target/release/volta

- name: Upload release artifact
uses: actions/upload-artifact@v2
with:
name: linux-openssl-${{ matrix.openssl }}
path: target/release/volta-openssl-${{ matrix.openssl }}.tar.gz
name: linux-${{ matrix.std }}-openssl-${{ matrix.openssl }}-${{ matrix.architecture }}
path: target/release/linux-${{ matrix.std }}-openssl-${{ matrix.openssl }}-${{ matrix.architecture }}.tar.gz

macos:
name: Build - MacOS
name: Build - macos-${{ matrix.architecture }}
runs-on: macos-latest
strategy:
fail-fast: false
matrix:
architecture: [x86_64, aarch64]
steps:
- name: Check out code
uses: actions/checkout@v2
- name: Set up cargo
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- name: Compile and package Volta
run: ./ci/build-and-package.sh volta-macos
- name: Upload release artifact
uses: actions/upload-artifact@v2
with:
name: macos
path: target/release/volta-macos.tar.gz

macos-aarch64:
name: Build - MacOS (ARM)
runs-on: macos-latest
steps:
- name: Check out code
uses: actions/checkout@v2
- name: Set up cargo
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
target: aarch64-apple-darwin
target: ${{ matrix.architecture }}-apple-darwin
override: true

- name: Compile and package Volta
run: ./ci/build-for-arm.sh volta-macos-aarch64
run: ./ci/build-macos.sh volta-macos-${{ matrix.architecture }} ${{ matrix.architecture }}

- name: Upload release artifact
uses: actions/upload-artifact@v2
with:
name: macos-aarch64
path: target/aarch64-apple-darwin/release/volta-macos-aarch64.tar.gz
name: macos-${{ matrix.architecture }}
path: target/${{ matrix.architecture }}-apple-darwin/release/volta-macos-${{ matrix.architecture }}.tar.gz

windows:
name: Build - Windows
Expand Down Expand Up @@ -160,13 +216,12 @@ jobs:
release:
name: Publish release
runs-on: ubuntu-latest
#if: github.event_name == 'push'
needs:
- centos
- linux
- macos
- macos-aarch64
- windows
if: github.event_name == 'push'
steps:
- name: Check out code
uses: actions/checkout@v2
Expand All @@ -180,20 +235,59 @@ jobs:
with:
name: linux-centos
path: release
- name: Fetch OpenSSL 1.0.* artifact

- name: Fetch linux-gnu-openssl-1_0_1-x86_64 artifact
uses: actions/download-artifact@v2
with:
name: linux-gnu-openssl-1_0_1-x86_64
path: release

- name: Fetch linux-gnu-openssl-1_0_1-aarch64 artifact
uses: actions/download-artifact@v2
with:
name: linux-gnu-openssl-1_0_1-aarch64
path: release

- name: Fetch linux-gnu-openssl-1_1_0-x86_64 artifact
uses: actions/download-artifact@v2
with:
name: linux-gnu-openssl-1_1_0-x86_64
path: release

- name: Fetch linux-gnu-openssl-1_1_0-aarch64 artifact
uses: actions/download-artifact@v2
with:
name: linux-gnu-openssl-1_1_0-aarch64
path: release

- name: Fetch linux-musl-openssl-1_0_1-x86_64 artifact
uses: actions/download-artifact@v2
with:
name: linux-musl-openssl-1_0_1-x86_64
path: release

- name: Fetch linux-musl-openssl-1_0_1-aarch64 artifact
uses: actions/download-artifact@v2
with:
name: linux-musl-openssl-1_0_1-aarch64
path: release

- name: Fetch linux-musl-openssl-1_1_0-x86_64 artifact
uses: actions/download-artifact@v2
with:
name: linux-openssl-1_0_1
name: linux-musl-openssl-1_1_0-x86_64
path: release
- name: Fetch OpenSSL 1.1.* artifact

- name: Fetch linux-musl-openssl-1_1_0-aarch64 artifact
uses: actions/download-artifact@v2
with:
name: linux-openssl-1_1_0
name: linux-musl-openssl-1_1_0-aarch64
path: release

- name: Fetch MacOS artifact
uses: actions/download-artifact@v2
with:
name: macos
name: macos-x86_64
path: release
- name: Fetch MacOS (ARM) artifact
uses: actions/download-artifact@v2
Expand Down Expand Up @@ -229,34 +323,98 @@ jobs:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./release/volta-centos.tar.gz
asset_name: volta-${{ steps.release_info.outputs.version }}-linux-openssl-rhel.tar.gz
asset_content_type: applictaion/gzip
- name: Upload OpenSSL 1.0.* artifact
asset_content_type: application/gzip

- name: Upload OpenSSL 1.0.*-x86_64 artifact
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./release/volta-openssl-1_0_1.tar.gz
asset_path: ./release/linux-gnu-openssl-1_0_1-x86_64.tar.gz
asset_name: volta-${{ steps.release_info.outputs.version }}-linux-openssl-1.0.tar.gz
asset_content_type: applictaion/gzip
- name: Upload OpenSSL 1.1.* artifact
asset_content_type: application/gzip

- name: Upload OpenSSL 1.0.*-aarch64 artifact
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./release/linux-gnu-openssl-1_0_1-aarch64.tar.gz
asset_name: volta-${{ steps.release_info.outputs.version }}-linux-openssl-1.0-aarch64.tar.gz
asset_content_type: application/gzip

- name: Upload OpenSSL 1.1.*-x86_64 artifact
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./release/volta-openssl-1_1_0.tar.gz
asset_path: ./release/linux-gnu-openssl-1_1_0-x86_64.tar.gz
asset_name: volta-${{ steps.release_info.outputs.version }}-linux-openssl-1.1.tar.gz
asset_content_type: applictaion/gzip
asset_content_type: application/gzip

- name: Upload OpenSSL 1.1.*-aarch64 artifact
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./release/linux-gnu-openssl-1_1_0-aarch64.tar.gz
asset_name: volta-${{ steps.release_info.outputs.version }}-linux-openssl-1.1-aarch64.tar.gz
asset_content_type: application/gzip

- name: Upload MUSL OpenSSL 1.0.*-x86_64 artifact
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./release/linux-musl-openssl-1_0_1-x86_64.tar.gz
asset_name: volta-${{ steps.release_info.outputs.version }}-linux-musl-openssl-1.0.tar.gz
asset_content_type: application/gzip

- name: Upload MUSL OpenSSL 1.0.*-aarch64 artifact
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./release/linux-musl-openssl-1_0_1-aarch64.tar.gz
asset_name: volta-${{ steps.release_info.outputs.version }}-linux-musl-openssl-1.0-aarch64.tar.gz
asset_content_type: application/gzip

- name: Upload MUSL OpenSSL 1.1.*-x86_64 artifact
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./release/linux-musl-openssl-1_1_0-x86_64.tar.gz
asset_name: volta-${{ steps.release_info.outputs.version }}-linux-musl-openssl-1.1.tar.gz
asset_content_type: application/gzip

- name: Upload MUSL OpenSSL 1.1.*-aarch64 artifact
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./release/linux-musl-openssl-1_1_0-aarch64.tar.gz
asset_name: volta-${{ steps.release_info.outputs.version }}-linux-musl-openssl-1.1-aarch64.tar.gz
asset_content_type: application/gzip

- name: Upload MacOS artifact
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./release/volta-macos.tar.gz
asset_path: ./release/volta-macos-x86_64.tar.gz
asset_name: volta-${{ steps.release_info.outputs.version }}-macos.tar.gz
asset_content_type: applictaion/gzip
asset_content_type: application/gzip

- name: Upload MacOS (ARM) artifact
uses: actions/upload-release-asset@v1
env:
Expand All @@ -266,6 +424,7 @@ jobs:
asset_path: ./release/volta-macos-aarch64.tar.gz
asset_name: volta-${{ steps.release_info.outputs.version }}-macos-aarch64.tar.gz
asset_content_type: application/gzip

- name: Upload Windows installer
uses: actions/upload-release-asset@v1
env:
Expand All @@ -274,7 +433,8 @@ jobs:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./release/volta-windows.msi
asset_name: volta-${{ steps.release_info.outputs.version }}-windows-x86_64.msi
asset_content_type: applictaion/x-msi
asset_content_type: application/x-msi

- name: Upload Windows zip
uses: actions/upload-release-asset@v1
env:
Expand All @@ -284,6 +444,7 @@ jobs:
asset_path: ./release/volta-windows.zip
asset_name: volta-${{ steps.release_info.outputs.version }}-windows.zip
asset_content_type: application/zip

- name: Upload manifest file
uses: actions/upload-release-asset@v1
env:
Expand Down
Loading