Compare commits

...

21 Commits

Author SHA1 Message Date
Ahmad Husen 3aa6342a73 feat(container): copy '.git' folder from WORKPATH
CI / Pretest (with Dockerfile) (push) Successful in 1m48s
CI / Test (with pre-built Container Image) (push) Has been cancelled
CI / Publish container image (push) Has been cancelled
2021-05-30 14:24:17 +07:00
Ahmad Husen 8987dba528 feat(container): always under 2021-05-30 14:20:58 +07:00
Ahmad Husen b8114f2ee3 feat(container): change value 2021-05-30 14:14:59 +07:00
Ahmad Husen 42c6bfae1e feat(container): create /tmp folder manually 2021-05-30 14:07:35 +07:00
Ahmad Husen fcedc2d02c feat(container): copy .git to /tmp folder 2021-05-30 14:05:13 +07:00
Ahmad Husen 7f32fc286b feat(container): only copy needed files 2021-05-30 14:00:48 +07:00
Ahmad Husen ec0ee87e6a feat(bash): run all commmand with non-root user 2021-05-30 13:52:20 +07:00
Ahmad Husen 3c654a34ce fix(container): unknown rsync option 2021-05-30 13:38:37 +07:00
Ahmad Husen 65e9437ece feat(container): use rsync instead cp 2021-05-30 13:36:39 +07:00
Ahmad Husen 0593cc597c fix(bash): cp permission 2021-05-30 13:26:06 +07:00
Ahmad Husen 88a8c57641 feat(bash): copying files to /tmp instead of chown 2021-05-30 13:19:29 +07:00
Ahmad Husen f7ff69715a fix(ci): conditional syntax & others
CI / Pretest (with Dockerfile) (push) Successful in 1m49s
CI / Publish container image (push) Has been cancelled
CI / Test (with pre-built Container Image) (push) Has been cancelled
2021-05-26 10:29:34 +07:00
Ahmad Husen 5fa9ff1a99 fix: path for action run 2021-05-26 10:26:23 +07:00
Ahmad Husen b259baf950 fix: syntax on action.yml 2021-05-26 10:21:34 +07:00
Ahmad Husen 77f0819445 ci: don't publish container image when PR pushed 2021-05-24 14:38:32 +07:00
Ahmad Husen 23631f017d fix(ci): wrong operator 2021-05-23 21:45:07 +07:00
Ahmad Husen 9106fe5df2 ci: combine 2 workflow to run asynchronously 2021-05-23 21:43:29 +07:00
Ahmad Husen e2ed7401c9 feat: set grouped output for entrypoint.sh 2021-05-23 20:48:35 +07:00
Ahmad Husen 64596b74e7 feat(docker): change setup user script on Dockerfile 2021-05-23 20:33:16 +07:00
Ahmad Husen b0781d01e1 feat: add missing docker action's metadata input 2021-05-22 18:25:49 +07:00
Ahmad Husen d318fec45e feat: change action to use pre-built container image 2021-05-19 22:28:19 +07:00
6 changed files with 134 additions and 91 deletions
+84 -3
View File
@@ -4,23 +4,104 @@ on:
push:
branches:
- "main"
tags:
- 'v*.*.*'
pull_request:
branches:
- "main"
jobs:
build:
name: Build
pretest:
name: Pretest (with Dockerfile)
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2.3.4
- name: Update action.yml to build locally
run: |
sed -i 's/.*image\:.*/ image\: \"Dockerfile\"/' action.yml
cat action.yml
- name: Get sample PKGBUILD
run: wget https://github.com/official-human/nonicons-font/raw/main/PKGBUILD
- name: Test actions
- name: Running tests
uses: ./
with:
updpkgsums: true
srcinfo: true
- name: Show diff
run: |
ls -la
git diff PKGBUILD
git diff .SRCINFO
publish:
name: Publish container image
needs: pretest
if: github.event_name != 'pull_request'
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: OCI meta
id: meta
uses: docker/metadata-action@v3
with:
images: ghcr.io/${{ github.repository }}
tags: |
type=edge,branch=main
type=ref,event=branch
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}}
type=sha
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Login to GHCR
uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v2
with:
context: .
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
test:
name: Test (with pre-built Container Image)
needs: publish
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2.3.4
- name: Get sample PKGBUILD
run: wget https://github.com/official-human/nonicons-font/raw/main/PKGBUILD
- name: Update action.yml to use edge tagged container image
if: github.ref == 'refs/heads/main'
run: |
sed -i 's/.*image\:.*/ image\: \"docker\:\/\/ghcr.io\/${{ github.repository_owner }}\/${{ github.event.repository.name }}\:edge\"/' action.yml
cat action.yml
- name: Running tests
uses: ./
with:
updpkgsums: true
-51
View File
@@ -1,51 +0,0 @@
name: CD
on:
push:
branches:
- 'main'
tags:
- 'v*.*.*'
jobs:
container:
name: Publish container image
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: OCI meta
id: meta
uses: docker/metadata-action@v3
with:
images: ghcr.io/${{ github.repository }}
tags: |
type=edge,branch=main
type=ref,event=branch
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}}
type=sha
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Login to GHCR
uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v2
with:
context: .
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
+3 -1
View File
@@ -5,7 +5,9 @@ FROM docker.io/library/archlinux:base-devel
RUN pacman -Syu --needed --noconfirm pacman-contrib namcap git
# Setup user
RUN useradd -m builder && \
RUN useradd --create-home --shell /bin/bash builder && \
passwd --delete builder && \
chown -vR builder:builder /home/builder && \
usermod -aG wheel builder && \
echo 'wheel ALL=(ALL:ALL) ALL' >> /etc/sudoers
+6 -4
View File
@@ -13,20 +13,24 @@ Here's what this action can do:
## Usage
### Requirement
- [PKGBUILD](https://wiki.archlinux.org/title/PKGBUILD) file inside your repository.
- Use [actions/checkout](https://github.com/actions/checkout) in previous step. This is important, unless you want your [$GITHUB_WORKSPACE](https://docs.github.com/en/actions/reference/environment-variables#default-environment-variables) folder to be empty.
### Customizing
Following inputs can be used as `step.with` keys
| Name | Type | Default | Required | Description |
|-------------------|-----------|-------------------------------|-----------|---------------------------------------|
| `path` | String | $GITHUB_WORKSPACE | `false` | Path where PKGBUILD is located |
| `path` | String | | `false` | Path where PKGBUILD is located. This path always located under $GITHUB_WORKSPACE |
| `updpkgsums` | Boolean | `false` | `false` | Update checksums on your PKGBUILD |
| `srcinfo` | Boolean | `false` | `false` | Generate new .SRCINFO |
| `namcap` | Boolean | `true` | `false` | Validate PKGBUILD |
| `flags` | String | `-cfs --noconfirm` | `false` | Flags after `makepkg` command. Leave this empty will disable this command. |
### Examples
#### 1. Basic
This action will run `makepkg -cfs --noconfirm` command, then validate PKGBUILD with namcap.
@@ -51,7 +55,6 @@ jobs:
#### 2. Only generate .SRCINFO
```yaml
name: CI
@@ -76,7 +79,6 @@ jobs:
#### 3. Only update checksums on PKGBUILD
```yaml
name: CI
@@ -101,7 +103,6 @@ jobs:
#### 4. Custom path & custom flags
```yaml
name: CI
@@ -125,4 +126,5 @@ jobs:
```
## License
The scripts and documentation in this project are released under the [MIT License](./LICENSE)
+15 -15
View File
@@ -1,36 +1,36 @@
# https://help.github.com/en/articles/metadata-syntax-for-github-actions
name: "Arch Linux's package action"
description: "GitHub Action to run Arch Linux's package tools"
author: "datakrama"
author: 'datakrama'
branding:
icon: "package"
color: "green"
icon: 'package'
color: 'green'
inputs:
path:
description: "Location for this action to run"
default: ""
description: 'Location for this action to run'
default: ''
required: false
updpkgsums:
description: "Update checksums on PKGBUILD"
default: "false"
description: 'Update checksums on PKGBUILD'
default: 'false'
required: false
srcinfo:
description: "Generate new .SRCINFO"
default: "false"
description: 'Generate new .SRCINFO'
default: 'false'
required: false
flags:
description: "Extra flags for makepkg"
default: "-cfs --noconfirm"
description: 'Extra flags for makepkg'
default: '-cfs --noconfirm'
required: false
namcap:
description: "Validate package with namcap"
default: "true"
description: 'Validate package with namcap'
default: 'true'
required: false
runs:
using: "docker"
image: "Dockerfile"
using: 'docker'
image: 'docker://ghcr.io/datakrama/archlinux-package-action:1'
args:
- ${{ inputs.path }}
- ${{ inputs.updpkgsums }}
+26 -17
View File
@@ -1,37 +1,46 @@
#!/bin/sh -l
#!/bin/bash
# Set path
WORKPATH=$GITHUB_WORKSPACE
if [[ -n "$INPUT_PATH" ]]; then
WORKPATH=$INPUT_PATH
fi
echo '::group::Copying file from $WORKPATH to /tmp/gh-action'
WORKPATH=$GITHUB_WORKSPACE/$INPUT_PATH
# Set path permision
sudo chown -R builder $WORKPATH
cd $WORKPATH
sudo -u builder mkdir /tmp/gh-action
sudo -u builder cp -rfv $WORKPATH/.git /tmp/gh-action/.git
sudo -u builder cp -fv $WORKPATH/PKGBUILD /tmp/gh-action/PKGBUILD
cd /tmp/gh-action
echo '::endgroup::'
# Update checksums
echo '::group::Updating checksums on PKGBUILD'
if [[ $INPUT_UPDPKGSUMS == true ]]; then
echo "Update checksums on PKGBUILD"
sudo -u builder updpkgsums
git diff PKGBUILD
fi
echo '::endgroup::'
# Generate .SRCINFO
echo '::group::Generating new .SRCINFO based on PKGBUILD'
if [[ $INPUT_SRCINFO == true ]]; then
echo "Generate new .SRCINFO based on PKGBUILD"
sudo -u builder makepkg --printsrcinfo > .SRCINFO
git diff .SRCINFO
fi
# Run makepkg
if [[ -n "$INPUT_FLAGS" ]]; then
echo "Run makepkg with flags"
sudo -u builder makepkg $INPUT_FLAGS
fi
echo '::endgroup::'
# Validate with namcap
echo '::group::Validating PKGBUILD with namcap'
if [[ $INPUT_NAMCAP == true ]]; then
echo "Validate PKGBUILD with namcap"
namcap -i PKGBUILD
fi
echo '::endgroup::'
# Run makepkg
echo '::group::Running makepkg with flags'
if [[ -n "$INPUT_FLAGS" ]]; then
sudo -u builder makepkg $INPUT_FLAGS
fi
echo '::endgroup::'
echo '::group::Copying files from /tmp/gh-action to $WORKPATH'
cp -fv /tmp/gh-action/PKGBUILD $WORKPATH/PKGBUILD
cp -fv /tmp/gh-action/.SRCINFO $WORKPATH/.SRCINFO
echo '::endgroup::'