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

Build & release arm64 #42

Merged
merged 5 commits into from
Jun 28, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
37 changes: 0 additions & 37 deletions .github/workflows/build.yaml

This file was deleted.

30 changes: 27 additions & 3 deletions .github/workflows/check_version.yaml → .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
@@ -1,14 +1,34 @@
name: Check Version
# Copyright 2024 Canonical Ltd.
# See LICENSE file for licensing details.
name: Tests

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

on:
workflow_dispatch:
pull_request:

jobs:
lint:
name: Lint
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install tox
run: pipx install tox
- name: Run linters
run: tox run -e lint

check-version:
name: Check version
runs-on: ubuntu-22.04
timeout-minutes: 15
steps:
- uses: actions/checkout@v3
- name: Checkout
uses: actions/checkout@v4
- name: Install yq
run: sudo snap install yq
- name: Compare versions
Expand All @@ -25,3 +45,7 @@ jobs:
echo "SNAP version: $SNAP_VERSION"
exit 1
fi

build:
name: Build rock
uses: canonical/data-platform-workflows/.github/workflows/build_rock.yaml@v16
41 changes: 0 additions & 41 deletions .github/workflows/integration.yaml

This file was deleted.

16 changes: 0 additions & 16 deletions .github/workflows/lint.yaml

This file was deleted.

50 changes: 0 additions & 50 deletions .github/workflows/publish.yaml

This file was deleted.

62 changes: 62 additions & 0 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
# Copyright 2024 Canonical Ltd.
# See LICENSE file for licensing details.
name: Release to GHCR

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

on:
push:
branches:
- 8.0-22.04
workflow_dispatch:

jobs:
build:
name: Build rock
uses: canonical/data-platform-workflows/.github/workflows/build_rock.yaml@v16

release:
name: Release rock
needs:
- build
uses: canonical/data-platform-workflows/.github/workflows/release_rock.yaml@v16
with:
artifact-prefix: ${{ needs.build.outputs.artifact-prefix }}
permissions:
packages: write # Needed to publish to GitHub Container Registry

sbom:
name: Generate Software Bill of Materials
needs:
- build
# Run after release so that rock cannot be (maliciously) modified between build & release
- release
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: Install Syft
run: curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sh -s -- -b /usr/local/bin
- name: Download rock package(s)
uses: actions/download-artifact@v4
with:
pattern: ${{ needs.build.outputs.artifact-prefix }}-*
merge-multiple: true
- name: Generate SBOM(s)
shell: python
run: |
import pathlib
import subprocess

for rock_file in pathlib.Path(".").glob("*.rock"):
subprocess.run(
["syft", rock_file.name, "--output", f"spdx-json={rock_file.name}.spdx.json"],
check=True,
)
Comment on lines +47 to +56
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good ol shell?

Suggested change
shell: python
run: |
import pathlib
import subprocess
for rock_file in pathlib.Path(".").glob("*.rock"):
subprocess.run(
["syft", rock_file.name, "--output", f"spdx-json={rock_file.name}.spdx.json"],
check=True,
)
shell: bash
run: |
for rock_file in *.rock
do
syft "${rock_file}" --output spdx-json="${rock_file}".spdx.json
done

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it'll probably move to reusable workflows at some point

to keep consistent with postgres repo, not changing for now

- name: Upload SBOM(s)
uses: actions/upload-artifact@v4
with:
name: sbom-${{ needs.build.outputs.artifact-prefix }}
path: '*.spdx.json'
if-no-files-found: error
31 changes: 0 additions & 31 deletions .github/workflows/sbom.yaml

This file was deleted.

2 changes: 1 addition & 1 deletion .github/workflows/sync_issue_to_jira.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ on:
jobs:
sync:
name: Sync GitHub issue to Jira
uses: canonical/data-platform-workflows/.github/workflows/sync_issue_to_jira.yaml@v2
uses: canonical/data-platform-workflows/.github/workflows/sync_issue_to_jira.yaml@v16
with:
jira-base-url: https://warthogs.atlassian.net
jira-project-key: DPE
Expand Down
3 changes: 1 addition & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# MySQL Server ROCK
[![Publish](https://github.com/canonical/charmed-mysql-rock/actions/workflows/publish.yaml/badge.svg)](https://github.com/canonical/charmed-mysql-rock/actions/workflows/publish.yaml)
[![Tests](https://github.com/canonical/charmed-mysql-rock/actions/workflows/integration.yaml/badge.svg)](https://github.com/canonical/charmed-mysql-rock/actions/workflows/integration.yaml)
[![Release to GHCR](https://github.com/canonical/charmed-mysql-rock/actions/workflows/release.yaml/badge.svg)](https://github.com/canonical/charmed-mysql-rock/actions/workflows/release.yaml)

This repository contains the packaging metadata for creating a ROCK of MySQL built from the official ubuntu MySQL package from the Ubuntu repository and further installs mysql-shell. For more information on ROCKs, visit the [rockcraft Github](https://github.com/canonical/rockcraft).

Expand Down
37 changes: 7 additions & 30 deletions rockcraft.yaml
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
name: charmed-mysql # the name of your ROCK
base: ubuntu@22.04 # the base environment for this ROCK
version: '8.0.37' # just for humans. Semantic versioning is recommended
summary: Charmed MySQL ROCK OCI # 79 char long summary
name: charmed-mysql
base: ubuntu@22.04
version: '8.0.37'
summary: Charmed MySQL ROCK OCI
description: |
MySQL built from the official MySQL package
from the MySQL repository and installs
mysql-shell. For more information on ROCKs, visit
the https://github.com/canonical/rockcraft.
license: Apache-2.0 # your application's SPDX license
platforms: # The platforms this ROCK should be built on and run on
license: Apache-2.0
platforms:
amd64:
arm64:

parts:
charmed-mysql:
Expand All @@ -32,30 +33,6 @@ parts:
- python3-yaml
stage-snaps:
- charmed-mysql/8.0/edge
override-stage: |
LIB_DIR=$CRAFT_STAGE/usr/lib/x86_64-linux-gnu
craftctl default
mkdir -p $CRAFT_STAGE/var/lib/mysql
ln -sf $LIB_DIR/libnuma.so.1 \
/usr/lib/x86_64-linux-gnu/libnuma.so.1
ln -sf $LIB_DIR/libaio.so.1 \
/usr/lib/x86_64-linux-gnu/libaio.so.1
ln -sf $LIB_DIR/libicuuc.so.70 \
/usr/lib/x86_64-linux-gnu/libicuuc.so.70
ln -sf $LIB_DIR/libicui18n.so.70 \
/usr/lib/x86_64-linux-gnu/libicui18n.so.70
ln -sf $LIB_DIR/libevent_core-2.1.so.7 \
/usr/lib/x86_64-linux-gnu/libevent_core-2.1.so.7
ln -sf $LIB_DIR/libevent_pthreads-2.1.so.7 \
/usr/lib/x86_64-linux-gnu/libevent_pthreads-2.1.so.7
ln -sf $LIB_DIR/libprotobuf-lite.so.23 \
/usr/lib/x86_64-linux-gnu/libprotobuf-lite.so.23
ln -sf $LIB_DIR/libicudata.so.70 \
/usr/lib/x86_64-linux-gnu/libicudata.so.70
rm -rf /var/lib/mysql/
mysqld --initialize
cp -r /var/lib/mysql $CRAFT_STAGE/var/lib
chown 584788:584788 $CRAFT_STAGE/var/lib/mysql
Comment on lines -35 to -58
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I inspected the rock we're currently building (i.e. ghcr.io/canonical/charmed-mysql:8.0.37-22.04_edge), and it looks like it doesn't contain /var/lib/mysql

root@foo-0:/# find / -name mysql
/home/mysql
/usr/lib/x86_64-linux-gnu/perl5/5.34/DBD/mysql
/usr/lib/x86_64-linux-gnu/perl5/5.34/auto/DBD/mysql
/usr/lib/mysql
/usr/share/mysql
/usr/bin/mysql
/var/log/mysql
/etc/init.d/mysql
/etc/mysql
root@foo-0:/# mysqld --initialize-insecure -u mysql
root@foo-0:/# find / -name mysql
/home/mysql
/usr/lib/x86_64-linux-gnu/perl5/5.34/DBD/mysql
/usr/lib/x86_64-linux-gnu/perl5/5.34/auto/DBD/mysql
/usr/lib/mysql
/usr/share/mysql
/usr/bin/mysql
/var/log/mysql
/var/lib/mysql
/var/lib/mysql/mysql
/etc/init.d/mysql
/etc/mysql

so I think the entire override-stage in our rock is doing nothing

override-prime: |
craftctl default
mv -f $CRAFT_PRIME/etc/mysql/mysql.cnf $CRAFT_PRIME/etc/mysql/my.cnf
Expand Down
Loading